commit ee83ea5423e3a6d3c7b598953d37dadb02f8060d Author: rtlhq Date: Mon Nov 21 12:38:32 2022 +0800 Import Upstream version 22.08.3 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e24c81 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Ignore the following files +*~ +*.[oa] +*.diff +*.kate-swp +*.kdev4 +.kdev_include_paths +*.kdevelop.pcs +*.moc +*.moc.cpp +*.orig +*.user +.*.swp +.swp.* +Doxyfile +Makefile +avail +random_seed +/build*/ +CMakeLists.txt.user* +*.unc-backup* +.cmake/ + +# LSP & IDE +/.clang-format +/compile_commands.json +.clangd +.cache +.idea +/cmake-build* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..2eb710e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: None +# SPDX-License-Identifier: CC0-1.0 + +include: + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows.yml diff --git a/.kde-ci.yml b/.kde-ci.yml new file mode 100644 index 0000000..9b582da --- /dev/null +++ b/.kde-ci.yml @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: None +# SPDX-License-Identifier: CC0-1.0 + +Dependencies: +- 'on': ['@all'] + 'require': + 'frameworks/extra-cmake-modules': '@stable' + 'frameworks/kdoctools': '@stable' + 'frameworks/ki18n': '@stable' + 'frameworks/kguiaddons': '@stable' + 'frameworks/kwidgetsaddons': '@stable' + 'frameworks/kio': '@stable' + 'frameworks/kxmlgui': '@stable' + 'frameworks/ktextwidgets': '@stable' + 'frameworks/kjobwidgets': '@stable' diff --git a/.krazy b/.krazy new file mode 100644 index 0000000..d850d7b --- /dev/null +++ b/.krazy @@ -0,0 +1 @@ +EXTRA multiclasses diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..9822db5 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,38 @@ + +Authors +======= + +Clarence Dang +Project Founder + +Thurston Dang +Chief Investigator + +Kristof Borrey +Icons + +Kazuki Ohta +InputMethod Support + +Nuno Pinheiro +Icons + +Danny Allen +Icons + +Mike Gashler +Imaqe Effects + +Laurent Montel +KDE 4 Porting + +Martin Koller +Scanning Support, Current Maintainer + +Tasuku Suzuki +InputMethod Support + +Thanks To +========= + +Thanks to the many others who have helped to make this program possible. diff --git a/BUGS b/BUGS new file mode 100644 index 0000000..93c622f --- /dev/null +++ b/BUGS @@ -0,0 +1,138 @@ + +Please send bug reports and feature requests to http://bugs.kde.org/. +Don't hesitate to report bugs nor hesitate to send us your wishes - it +provides valuable feedback that will help to improve future versions of +KolourPaint and you will not receive flames for reporting duplicates. + + +This file lists known bugs in this version that are not considered +"release critical" and are difficult to fix: + + +3. Tool Box & Colour Box RMB ToolBar Menus do not work. + +4. Image dialog spinboxes should accept Enter Key (instead of the dialog's + OK button) after the user has typed something. + + OR + + Spinboxes should signal that their values have changed every time the + user changes the text (rather than after pressing Enter or clicking on + another spinbox etc.). + + The need for the "Update Preview" button and the difficulty of keeping + the percentages and dimensions in sync in the Resize / Scale dialog are + manifestations of the current QSpinBox behaviour. + + Update: Text input is broken in KDE4. + +6. a) The undo history and document modified state are not updated during + the drawing of multi-segment shapes (Polygon, Connected Lines, + Curve). They are however updated after shapes' completion. + + b) The brush-like tools set the document modified flag even if + user cancels the draw operation. + + c) Select a region, manipulate it (e.g. move), undo - the document is + still marked as modified (because 2 commands - the create selection + and the move - were added but only one was undone). + +7. Certain shapes may have the wrong size (usually only a pixel off and + only in extreme cases). This is a Qt bug. + +8. At zoom levels that aren't multiples of 100%, parts of the image may + appear to move when the user interacts with it. Other minor redraw + glitches may also occur at such zoom levels. + +9. Keyboard shortcut changes do not propagate to other KolourPaint windows + (but will propagate to future windows). + +10. "File/Open Recent" entries are not updated interprocess. + +11. The blinking text cursor will "disappear" if you type more text than + you can fit in a text box. + +12. You cannot select only parts of the text you write. + +14. The text cursor may be momentarily misrendered when scrolling the view. + +17. a) Using KolourPaint on a remote X display may result in redraw errors + and pixel data corruption. + +19. Read support for EPS files is extremely slow. You should not enable + the "Save Preview" dialog when saving to EPS. This is an issue with + KDE. + +20. Pasting a large image (esp. one that doesn't compress well as PNG) + into an image editor (not necessarily KolourPaint) running as + different process from the KolourPaint which was the source of the + image, on a sufficiently slow computer, may fail with the following + output to STDERR: + + "kolourpaint: ERROR: kpMainWindow::paste() with sel without pixmap + QClipboard: timed out while sending data" + + This is a Qt bug. + +21. It is not always possible to copy and paste between 2 instances of + KolourPaint running different Qt versions. See + QDataStream::setVersion(). + +23. Changing tool options while in the middle of a drawing option should + work but confuses KolourPaint instead. For instance: + + a) With the brush tools, the cursor incorrectly appears. + + b) With the rectangle-based tools, the temporary pixmap does not resize + when the line width increases. + +25. Sometimes when you take a screenshot of a window, and then paste in a + new window, it will be greyscale. When pasting again, it will still be + greyscale. Cannot consistently reproduce. [Thurston] + +26. Drawing with the keyboard is unreliable. Depending on the X server, + either holding down Enter may continually switch between drawing and + not drawing or KolourPaint may fail to detect the release of the Enter + key. + +27. InputMethod had not been tested at zoom levels other than 100%. + +28. KolourPaint has not been tested against invalid or malicious clipboard + data. + +29. The Tool Box and Color Tool Bar are no longer movable or floatable. + +30. The "Skew", "Rotate" and "Smooth Scale" effects produce low quality + results. + +31. The rendering quality of a text box with opaque text but a see-through + background, on top of transparent document areas, is lower than in KDE 3 + versions of KolourPaint. + + +Issue with XFree86 <= 3.3.6 with the "Emulate3Buttons" Option +============================================================= + +When drawing, clicking the left or right mouse button that did not +initiate the current operation will, in this order: + +1. finalise the current drawing operation +2. attempt to paste the contents of the middle-mouse-button clipboard + +instead of canceling the current drawing operation. + +This is due to XFree86 sending a release notification for the button that +initiated the drawing operation, followed by a press notification for the +emulated 3rd button; instead of just a single press notification for the +button that is intended to cancel the operation. This works correctly in +XFree86 4.x with "Emulate3Buttons" on because it is harder to trigger the +emulation for the 3rd button as it is only invoked if the left and right +buttons are pressed at almost the same time. + +Possible solutions: + +a) Use XFree86 4.x or an X server from another vendor (e.g. X.org). +b) Press Escape in KolourPaint to cancel the current drawing operation + instead of using the problematic click method described above. +c) Disable "Emulate3Buttons". + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0242a2b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,365 @@ +# KDE Application Version, managed by release script +set(RELEASE_SERVICE_VERSION_MAJOR "22") +set(RELEASE_SERVICE_VERSION_MINOR "08") +set(RELEASE_SERVICE_VERSION_MICRO "3") +set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") + +cmake_minimum_required(VERSION 3.10.0 FATAL_ERROR) + +project(kolourpaint VERSION ${RELEASE_SERVICE_VERSION}) + +set(QT_MIN_VERSION "5.11.0") +set(KF5_MIN_VERSION "5.87.0") +set(KDE_COMPILERSETTINGS_LEVEL "5.84.0") + +find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) + +add_definitions(-DTRANSLATION_DOMAIN="kolourpaint") + +include(KDEInstallDirs) +include(KDECompilerSettings NO_POLICY_SCOPE) +include(KDECMakeSettings) +include(ECMInstallIcons) +include(ECMAddAppIcon) +include(ECMSetupVersion) +include(FeatureSummary) + +find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS + Core + Widgets + PrintSupport +) + +find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS + DocTools + I18n + GuiAddons + WidgetsAddons + KIO + XmlGui + TextWidgets + JobWidgets +) + +add_definitions(-DQT_USE_QSTRINGBUILDER) + +find_package(KF5Sane "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}") + +if(KF5Sane_FOUND) + add_definitions(-DHAVE_KSANE=1) + set(KSANE_LIBRARIES KF5::Sane) +else(KF5Sane_FOUND) + add_definitions(-DHAVE_KSANE=0) +endif(KF5Sane_FOUND) + +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR} +) + + + +## Generate header with version number +ecm_setup_version(${RELEASE_SERVICE_VERSION} + VARIABLE_PREFIX KOLOURPAINT + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kpVersion.h" +) + + +add_subdirectory( pics ) +add_subdirectory( doc ) + + +########### next target ############### +macro(CREATE_LICENSE _in_FILE _out_FILE) + FILE(READ ${_in_FILE} _contents) + FILE(WRITE ${_out_FILE} "static const char * const kpLicenseText =") + STRING(REGEX REPLACE "\"" "\\\\\"" _contents "${_contents}" ) + STRING(REGEX REPLACE "\n" "\\\\n\"\n\"" _contents "${_contents}" ) + FILE(APPEND ${_out_FILE} "\"${_contents}\"") + FILE(APPEND ${_out_FILE} ";\n") +endmacro(CREATE_LICENSE) + +#macro_additional_clean_files( ${CMAKE_CURRENT_BINARY_DIR}/kolourpaintlicense.h ) + +create_license(${CMAKE_CURRENT_SOURCE_DIR}/COPYING ${CMAKE_CURRENT_BINARY_DIR}/kolourpaintlicense.h) + + +# GENERATED BY ./gen_cmake_srcs | fgrep -v /lgpl/ + +set(kolourpaint_lib1_SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectBalanceCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectClearCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectCommandBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectEmbossCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectFlattenCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectGrayscaleCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectHSVCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectInvertCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectReduceColorsCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/kpDocumentMetaInfoCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformFlipCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformRotateCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformSkewCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandHistoryBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandHistory.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandSize.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpMacroCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpNamedCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/flow/kpToolFlowCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/kpToolColorPickerCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/kpToolFloodFillCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/polygonal/kpToolPolygonalCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/rectangular/kpToolRectangularCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpAbstractSelectionContentCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolImageSelectionTransparencyCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionCreateCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionDestroyCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionMoveCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextBackspaceCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextChangeStyleCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextDeleteCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextEnterCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextGiveContentCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextInsertCommand.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cursors/kpCursorLightCross.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cursors/kpCursorProvider.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/effects/kpEffectsDialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/kpDocumentMetaInfoDialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformRotateDialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformSkewDialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/kpColorSimilarityDialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/kpDocumentSaveOptionsPreviewDialog.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Open.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Save.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocumentSaveOptions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Selection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/environments/commands/kpCommandEnvironment.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/environments/document/kpDocumentEnvironment.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/environments/kpEnvironmentBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/environments/tools/kpToolEnvironment.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/environments/tools/selection/kpToolSelectionEnvironment.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/generic/kpSetOverrideCursorSaver.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/generic/kpWidgetMapper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/generic/widgets/kpResizeSignallingLabel.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/generic/widgets/kpSubWindow.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/blitz.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectBalance.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectBlurSharpen.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectEmboss.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectFlatten.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectGrayscale.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectHSV.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectInvert.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectReduceColors.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectToneEnhance.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpColor_Constants.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpColor.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpDocumentMetaInfo.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpFloodFill.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpPainter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformAutoCrop.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop_ImageSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop_TextSelection.cpp +) # kolourpaint_lib1_SRCS + +set(kolourpaint_lib2_SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/kpLogCategories.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/kolourpaint.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/kpThumbnail.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/kpViewScrollableContainer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpAbstractImageSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpEllipticalImageSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpFreeFormImageSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpImageSelectionTransparency.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpRectangularImageSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpAbstractSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpSelectionDrag.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpSelectionFactory.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection_Cursor.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection_Paint.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextStyle.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpPreeditText.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/layers/tempImage/kpTempImage.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Colors.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Edit.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_File.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Image.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Settings.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_StatusBar.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Text.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Tools.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View_Thumbnail.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View_Zoom.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_DrawShapes.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_GetSetPixmapParts.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_Transforms.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolBrush.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolColorEraser.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolEraser.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolFlowBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolFlowPixmapBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolPen.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolSpraycan.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolAction.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolColorPicker.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_Drawing.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolFloodFill.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_KeyboardEvents.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_MouseEvents.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_OtherEvents.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_UserNotifications.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_Utilities.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolZoom.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolCurve.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolLine.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolygonalBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolygon.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolyline.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolEllipse.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRectangle.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRectangularBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRoundedRectangle.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpAbstractImageSelectionTool.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolEllipticalSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolFreeFormSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolRectSelection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_Create.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_KeyboardEvents.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_Move.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_ResizeScale.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Commands.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Create.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_CursorCalc.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_InputMethodEvents.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents_HandleArrowKeys.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents_HandleTypingKeys.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Move.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_ResizeScale.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_SelectText.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_TextStyle.cpp +) # kolourpaint_lib2_SRCS + + +if(KF5Sane_FOUND) + set(kolourpaint_lib2_SRCS + ${kolourpaint_lib2_SRCS} + ${CMAKE_CURRENT_SOURCE_DIR}/scan/sanedialog.cpp + ) +endif(KF5Sane_FOUND) + +set(kolourpaint_app_SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/views/kpThumbnailView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/kpUnzoomedThumbnailView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/kpView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Events.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Paint.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Selections.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/kpZoomedThumbnailView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/kpZoomedView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager_TextCursor.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager_ViewUpdates.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityFrame.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityHolder.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpNumInput.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectBalanceWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectEmbossWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectFlattenWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectHSVWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectInvertWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectWidgetBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpColorCells.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpColorPalette.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDefaultColorCollection.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDocumentSaveOptionsWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDualColorButton.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpPrintDialogPage.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpTransparentColorCell.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/kpColorToolBar.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/kpToolToolBar.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetBase.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetBrush.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetEraserSize.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetFillStyle.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetLineWidth.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp +) # set(kolourpaint_app_SRCS + + +set(kolourpaint_SRCS + ${kolourpaint_lib1_SRCS} + ${kolourpaint_lib2_SRCS} + ${kolourpaint_app_SRCS} + kolourpaint.qrc +) + +add_subdirectory(lgpl) + +# +# Executable +# + +ecm_add_app_icon(kolourpaint_SRCS ICONS + pics/app/16-apps-kolourpaint.png + pics/app/22-apps-kolourpaint.png + pics/app/32-apps-kolourpaint.png + pics/app/48-apps-kolourpaint.png +) + +add_executable(kolourpaint ${kolourpaint_SRCS}) + +target_link_libraries(kolourpaint + KF5::XmlGui + KF5::KIOFileWidgets + KF5::TextWidgets + Qt${QT_MAJOR_VERSION}::PrintSupport + ${KSANE_LIBRARIES} + kolourpaint_lgpl +) + +if(KSANE_FOUND) + target_link_libraries(kolourpaint + ${KSANE_LIBRARY} + ) +endif(KSANE_FOUND) + + +install(TARGETS kolourpaint ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) + + +########### install files ############### + +install(PROGRAMS org.kde.kolourpaint.desktop DESTINATION ${KDE_INSTALL_APPDIR}) +install(FILES org.kde.kolourpaint.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) +install(FILES kolourpaintui.rc DESTINATION ${KDE_INSTALL_KXMLGUIDIR}/kolourpaint) + +ki18n_install(po) +kdoctools_install(po) + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..6b56fcf --- /dev/null +++ b/COPYING @@ -0,0 +1,139 @@ +Copyright (c) 2003-2007 Clarence Dang +Portions Copyright (c) 2005 Kazuki Ohta +Portions Copyright (c) 2006-2007 Mike Gashler +Portions Copyright (c) 2007,2011 Martin Koller +Portions Copyright (c) 2007 John Layt +Portions Copyright (c) 2010 Tasuku Suzuki +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +"libkolourpaint" Library +~~~~~~~~~~~~~~~~~~~~~~~~ + +The "libkolourpaint" dynamic link library contains various pieces of code, +each with a different license: + + +License 1 +--------- + +Copyright (C) 1999 Waldo Bastian (bastian@kde.org) +Copyright (C) 2007 Clarence Dang (dang@kde.org) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License. + +This library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. + + +License 2 +--------- + +Copyright (C) 2007 David Faure + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. + + +License 3 +--------- + +Copyright (c) 2003-2007 Clarence Dang +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +License 4 +--------- + +Copyright (C) 1997 Martin Jones (mjones@kde.org) +Copyright (C) 2007 Roberto Raggi (roberto@kdevelop.org) +Copyright (C) 2007 Clarence Dang (dang@kde.org) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. + + +Icons +~~~~~ + +Copyright (c) Nuno Pinheiro +Copyright (c) Danny Allen +Portions Copyright (c) Clarence Dang +Portions Copyright (c) Kristof Borrey + diff --git a/COPYING.DOC b/COPYING.DOC new file mode 100644 index 0000000..71ec2c4 --- /dev/null +++ b/COPYING.DOC @@ -0,0 +1,397 @@ + GNU Free Documentation License + Version 1.2, November 2002 + + + Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +https://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/COPYING.LIB b/COPYING.LIB new file mode 100644 index 0000000..2676d08 --- /dev/null +++ b/COPYING.LIB @@ -0,0 +1,481 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..569bc33 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,8 @@ + +For logs of _every_ single change made to KolourPaint between any date or +revision, visit: + +https://quickgit.kde.org/?p=kolourpaint.git&a=log + +For a summary of user-visible changes between each release, read NEWS. + diff --git a/Messages.sh b/Messages.sh new file mode 100644 index 0000000..5ac09ab --- /dev/null +++ b/Messages.sh @@ -0,0 +1,3 @@ +#! /bin/sh +$EXTRACTRC `find . -name "*.rc" -o -name "*.ui" ` >> rc.cpp +$XGETTEXT `find . -name "*.cpp" -o -name "*.h"` -o $podir/kolourpaint.pot diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..8a6afb4 --- /dev/null +++ b/NEWS @@ -0,0 +1,386 @@ +KolourPaint - KF5 based + +* Port to KF5 + +KolourPaint 4 Series (trunk/KDE/) +==================== + +KolourPaint 4.0.0 BETA (Frozen 2007-10-26) + + * Port to KDE 4 (Clarence Dang, Laurent Montel) + + Note: This is a beta release and has not been through a full QA review. + If you want stability, use KolourPaint/KDE3, which can be + installed in parallel with KolourPaint4 BETA and runs under KDE4. + + * Configurable Color Palette + + * Add "Hue, Saturation, Value" effect (Mike Gashler) + + * Add "Histogram Equalizer" effect (Mike Gashler) + + * Add Zoom Tool + + * Add "File / Properties..." + + * Rectangles, rounded rectangles and ellipsed are now bounded by + the dimensions of the dragged out rectangle + + * Add, to the print dialog, a choice between printing the image at the + top-left of the page or at the center (this was previously a hidden + configuration option) + (Bug #33481) + + * Add hidden configuration option "Open Images in the Same Window" + (Bug #125116) + + * Add "Rotate Left" (CTRL+SHIFT+Left) and "Rotate Right" (CTRL+SHIFT+R) + to "Image" menu as a quick way to access the common types of "Rotate..." + (Bug #135184, #141530)) + + * Add "Fit to Page", "Fit to Page Width" and "Fit to Page Height" to the + "View" Menu + + * Add "Image / Draw Opaque" menu item since some users expect it. + It duplicates the functionality of the already existent Tool Box widget. + + * Animate the Color Similarity Tool Bar Item, to highlight the existence + of the feature + - And make the configuration more accessible + - Also add "Image / Draw With Color Similarity" to duplicate the tool + bar item + + * Make the Tool Box use as much vertical space as possible, since it + needs it for the option widgets. + + * Save local files atomically - KolourPaint will no longer truncate + an existing file if the KImageIO plugin for the file format is + missing or if you run out of disk space. + [also in branches/KDE/3.5] + + * Add "File / Scan..." feature (Martin Koller) + [also in branches/KDE/3.5/] + + * Fix crash triggered by rapidly deselecting a selection after + drag-scaling the selection (Bug #117866) + [also in branches/KDE/3.[345]/, branches/kolourpaint/1.2_kde3/] + + * Add global session save/restore (Bug #94651) + [also in branches/KDE/3.5/] + + * Make "File / Open Recent" consistently work when multiple windows are + open + [also in branches/KDE/3.5/] + + * CTRL+C'ing a text box also places the text in the middle-mouse-button + clipboard, in lieu of being able to highlight the text to do this + [also in branches/KDE/3.5/] + + * Change minimum allowed zoom level for the grid from 600% to 400% + [also in branches/KDE/3.5/] + + * Printing improvements (Bug #108976) + - Respect image DPI + - Fit image to page if image is too big + - Center image on page + [also in branches/KDE/3.5/] + + * Paste transparent pixels as black instead of uninitialized colors, + when the app does not support pasting transparent pixels (such as + OpenOffice.org) + [also in branches/KDE/3.5/] + + * Make "Edit / Paste in New Window" always paste white pixels as white + (it used to paste them as transparent when the selection transparency + mode was set to Transparent) + [also in branches/KDE/3.5/] + + * REGRESSION: The "Skew", "Rotate" and "Smooth Scale" effects produce + low quality results + (Bug #30) + + * REGRESSION: The rendering quality of a text box with opaque text but + a see-through background, on top of transparent document + areas, is lower than in KDE 3 versions of KolourPaint + (Bug #31) + + * REGRESSION: Spinboxes do not support text input + (see the "Update" part of Bug #4) + + * REGRESSION: InputMethod support was not ported to Qt4 so has been disabled + (Bug #27) + + * REGRESSION: The Tool Box and Color Tool Bar are no longer movable or + floatable + (Bug #29) + + KolourPaint 4.0.0 BETA contains all the fixes and features in KolourPaint + 1.4.8_relight (KDE 3.5.8), even though not all of them were listed + above. + + +KolourPaint 1.4_relight Series (branches/KDE/3.5/) +=============================== + +KolourPaint 1.4.1_relight (Frozen 2006-01-15) + + * Updated documentation (Thurston) + +KolourPaint 1.4_relight (Frozen 2005-11-08) + + * New icons (Danny Allen, Nuno Pinheiro) + + * Tool Box icon size is 22x22, not 16x16, at screen resolution >= 1024x768 + + * CTRL + Mouse Wheel = Zoom + + * While freehand selection scaling, holding Shift maintains aspect ratio + + * Prevent accidental drags in the Colour Palette from pasting text + containing the colour code + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Cells in the bottom row and cells in the rightmost column of the Colour + Palette are now the same size as the other cells + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Text drops to the empty part of the scrollview will not be placed + outside the document + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Rename icons from "hi" to "cr" - back to the state of 1.0 (Danny Allen) + but leave application icons as "hi" (Jonathan Riddell) + + * Enforce text box font height to prevent e.g. Chinese characters in + buggy fonts from enlarging the text box and putting the cursor out of + sync with the text + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Clicking in a text box selects a character based on its midpoint - + not leftmost point - to be consistent with all text editors + (esp. noticeable with big fonts) + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Return and Numpad 5 Key now draw + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Tool Actions placed outside the Tool Box resize with their toolbars + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Ensure Color Similarity maximum is 30, not 29 due to gcc4 + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Tool Box traps right clicks (for the RMB Menu) on top of tool options + widgets and the empty part of the Tool Box + [also in branches/KDE/3.[34]/, branches/kolourpaint/1.2_kde3/] + + * Correct and update image format associations to all formats supported + by KDE 3.5 (kdelibs/kimgio/:r466654) + + * String fixes (Stefan Winter) + [also in branches/KDE/3.4/] + + * Other string fixes (Malcolm Hunter, Clarence Dang, Stephan Binner) + + +KolourPaint 1.4_light Series (branches/KDE/3.4/) +============================ + +KolourPaint 1.4_light (Frozen 2005-02-22) + * Antialias text when the text box has a transparent background (Bug #24) + [later backported to branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Add Unzoomed Thumbnail Mode and Thumbnail Rectangle + * Add RMB context menu for when a selection tool is active (closing KDE + Bug #92882) + * More intuitive "Set as Image" behaviour (esp. with selection borders). + Thanks to Michael Lake for the feedback. + [later backported to branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * InputMethod support + [later backported to branches/kolourpaint/1.2_kde3/] + * Save "More Effects" dialog's last effect to config file + * Save "Resize / Scale" dialog's last "Keep aspect ratio" setting to + config file + * Add "Help / Acquiring Screenshots" + * Fix selection regressions introduced in 1.2: + - Make selection dragging with CTRL work again (copies selection onto + document) + - When creating freeform selections, include the starting point; also + avoids a QRegion crash with constructing 1-point regions + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Fix other selection bugs: + - When the user drags very quickly on a resize handle, resize the + selection instead of moving it + - Draw resize handles above the grid lines - not below - so that the + handles are always visible if they are supposed to be there + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Smaller selection and text box resize handles (visually not + actually) - covers up fewer selected pixels, doesn't cover up text + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Restore mouse cursor after deselecting selection/text tools + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Empty text clipboard fixes: + - Don't get stuck on a wait cursor after attempting to paste empty + text into a text box + - Prevent pasting text from creating a new text box if text is empty + - Prevent copying of empty text box + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Speed up renderer (most noticeable with diagonal drag-scrolling at + high zoom) + - Don't paint anything outside of the view's visible region + (previously, clipped only on view _widget_ region) + - Region-aware: paint component rectangles of the update region, + rather than the bounding rectangle + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * When changing between colour depth and quality widgets in the save + filedialog, make sure "Convert to:" and "Quality:" are correctly + rendered (hacking around a Qt redraw glitch) + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Fix crash after using the Colour Picker if it was the first used tool + [kolourpaint-1.2.2_kde3-color_picker_crash.diff] + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Fix crash due to text box when scaling image behind it + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Even when the thumbnail has focus (and not the main window), blink the + text cursor in all views + [kolourpaint-1.2.2_kde3-thumbnail_blink_text_cursor.diff] + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Correct "Soften" and "Sharpen" commands' command history names + * Correct invert commands' command history names + * Fix remaining untranslatable strings (closing KDE Bug #85785) + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Update image format associations to all formats supported by KDE 3.4 + * Remove unused images in doc directory + [also in branches/KDE/3.3/, branches/kolourpaint/1.2_kde3/] + * Correct kolourpaint.desktop "Terminal=" and "Categories=" syntax + (Benjamin Meyer) + + +KolourPaint 1.2 Series (branches/KDE/3.3/) +====================== + +Version 1.2 "ByFiat Everytime" (2004-08-18) + * Add up to 500 levels of Undo/Redo (minimum of 10 levels, maximum of + 500 as long as the total history size < 16MB) + * Add freehand resizing of image + * Add freehand smooth scaling of selections + * [also in 1.0 branch] New icons (Kristof Borrey) + * [also in 1.0 branch] Prefer Crystal SVG text icons over KolourPaint's + * [also in 1.0 branch] Add documentation in the KDE Help Centre + * Add drag scrolling + * Add "More Effects" dialog: + - Balance (Brightness, Contrast, Gamma) + - Emboss + - Flatten + - Invert (with choice of channels) + - Reduce Colours + - Soften & Sharpen + * File saving improvements: + - Support colour depths (optional dithering) and "colour monochrome" + - Support JPEG quality + - Realtime file dialog preview with estimated file size + - Retain PNG metadata + - Prompt when attempting lossy save + - Correctly save transparent selections (not as opaque) + * Dither more often when loading (and pasting) images for better quality + * Single key shortcuts for all tools and tool options (automatically + turned off when editing text but can then use Alt+Shift+) + * Arrow keys now move one document pixel - not view pixel - at a time + (more usable when zoomed in) + * Fix selection bugs: + - Fix duplicate "Selection: Create" undo entries (Bug #5a) + - Allow redoing of selection operation if border deselected (Bug #5b) + - Don't print to STDERR when undoing a selection border create + operation and border has already been deselected + - [also in 1.0 branch] When pulling a selection from the document, + only set the bits of the document to the background colour where the + transparent selection is opaque in the same place (this is only + noticeable with colour similarity turned on). Now moving a + selection away and then back to its original place is always a NOP + as it should be. + * Selections can be deselected using Esc or clicking on icon in Tool Box + * Accidental drag detection when deselecting selections or text boxes + * Prevent selection from being moved completely offscreen (at least 1 + pixel of the selection will stay within the view) + * Speed up copying selection when transparency is on + * Improve Text Tool usability: + - Allow single click creation of text box with a sane default size + - Allow freehand resizing of text boxes + - Add Opaque/Transparent selector for greater usability and + consistency with selections + - Minimum size is now 7x7 document pixels (1x1 - not 4x4 - border) + - Text cursor doesn't overlap border anymore + - When dropping text, paste at drop point + - When MMB pasting creates a new text box, do so at mouse position + * When MMB pasting text in an existing box, correctly paste multiline + clipboard contents + * Improve text quality: + - With a transparent background, don't antialias foreground opaque + text with arbitrarily chosen black + - Make sure transparent text shows up on opaque (usually, grey was + problematic) background + * Improve Resize/Scale dialog usability: + - Add Smooth Scale (useful for creating screenshot thumbnails) + - Allow manipulating image when selection is active + - Operation choices stand out as massive, easily clickable buttons + - Default focus on operation choices + * Warn if Resize/Scale, Rotate or Skew will take lots of memory + * Limit startup image size to 2048x2048 + * Eliminate flicker when scrolling + * Thumbnail fixes: + - Reduce flicker when appearing (Bug #2) + - More reasonable minimum size (actually enforce it) + - [also in 1.0 branch] Use deleteLater() + - [also in 1.0 branch] Save geometry even if it's closed very quickly + after a geometry change + * Restore last used tool and tool options on startup + * Add Export, Copy To File, Paste From File, Paste in New Window, + Full Screen Mode + * Add Zoom In/Out buttons to main toolbar + * Rename Crop options in an attempt to reduce confusion: + - "Autocrop" --> "Remove Internal Border" when selection active + - "Crop Outside Selection" --> "Set as Image (Crop)" + * "Set as Image" changes: + - Enable for text boxes + - Underneath transparent bits of selection, fill image with + transparent rather than with background colour + * Permit "reloading" of an empty document + * Fixes when the current URL doesn't exist: + - Don't reload if underlying file disappeared + - Don't add non-existent file to Recent Files history + - Ask to save before mailing or setting as wallpaper + * Only enable Show Path when there is a URL + * Pop up dialog (instead of printing to STDERR) and disable Edit/Paste + on CTRL+V if the clipboard contents disappeared due to the source + application quitting (and Klipper didn't retain clipboard contents) + * Image/Clear now always sets _everything_ within the selection boundary + to the background colour - including transparent pixels + * Add Preview button to Colour Similarity Dialog to work around Bug #4 + regarding spinboxes and enter key + * Colour Picker disallows trying to pick colour outside of image + * Make sure colour palette contains valid and visible colours at 8-bit + * [also in 1.0 branch] Fix (big) memory leak on kpSelection destruction + (Albert Astals Cid) + * Don't leak image dialogs' memory + * [also in 1.0 branch] Don't let C++ destruct the mask bitmap before its + painter when dbl-clicking the color eraser does NOP (avoids + QPaintDevice and X error) + * [also in 1.0 branch] Check for QImageDrag::canDecode() before calling + QImageDrag::decode() (prevents X and valgrind errors) + * [also in 1.0 branch] Fix compilation problem with QT_NO_ASCII_CAST + (Waldo Bastian) + * [also in 1.0 branch] Decrease application preference to below that of + a viewer (Stephan Kulow) + * Remember dialog dimensions + * Remove double dialog margins + * Fix missing i18n()'s + * Fix some untranslatable strings + * [also in 1.0 branch] Corrected several strings + * Remove unused icons + + +KolourPaint 1.0 Series (branches/kolourpaint/1.0/) +====================== + +Version 1.0 "Seagull" (2004-02-29) + * First stable release + diff --git a/README.md b/README.md new file mode 100644 index 0000000..3f51ce8 --- /dev/null +++ b/README.md @@ -0,0 +1,104 @@ + +http://www.kolourpaint.org/ + +Copyright (c) 2003-2007 Clarence Dang + + +For licensing and warranty information, read COPYING. +For known problems with this release of KolourPaint, read BUGS. +For what changes have been made, read NEWS. +For developer information, checkout branches/kolourpaint/control/. +For general information, read this file (README): + + +What is KolourPaint? +==================== + +KolourPaint is a free, easy-to-use paint program by KDE. + +It aims to be conceptually simple to understand; providing a level of +functionality targeted towards the average user. It's designed for daily +tasks like: + +* Painting - drawing diagrams and "finger painting" +* Image Manipulation - editing screenshots and photos; applying effects +* Icon Editing - drawing clipart and logos with transparency + +It's not an unusable and monolithic program where simple tasks like drawing +lines become near impossible. Nor is it so simple that it lacks essential +features like Undo/Redo. + +KolourPaint is opensource software written in C++ using the Qt and KDE +libraries. + + +Features +======== + +* Undo/Redo Support (10-500 levels of history depending on memory usage) + +* Tools (single key shortcuts available for all tools) + - Brush, Color Eraser, Color Picker, Connected Lines a.k.a. Polyline + - Curve, Ellipse, Eraser, Flood Fill, Line, Pen, Polygon, Rectangle + - Rounded Rectangle, Spraycan, Text, Zoom + +* Selections (fully undo- and redo-able) + - Rectangular, Elliptical, Free-Form shapes + - Choice between Opaque and Transparent selections + - Full Clipboard/Edit Menu support + - Freehand resizeable + +* Configurable Color Palette + +* Color Similarity means that you can fill regions in dithered images and + photos + +* Transparency + - Draw transparent icons and logos on a checkerboard background + - All tools can draw in the "Transparent Color" + +* Image Effects + - Autocrop / Remove Internal Border + - Balance (Brightness, Contrast, Gamma) + - Clear, Emboss, Flatten, Flip, Histogram Equalizer + - Hue, Saturation, Value + - Invert (with choice of channels) + - Reduce Colors, Reduce to Grayscale, Resize, Rotate + - Scale, Set as Image (Crop), Skew, Smooth Scale, Soften & Sharpen + +* Close-up Editing + - Zoom (from 0.01x to 16x) + - Grid + - Thumbnail + +* File Operations + - Open/Save in all file formats provided by KImageIO + (PNG, JPEG, BMP, ICO, PCX, TIFF,...) with preview + - Print, Print Preview + - Mail + - Set as Wallpaper + + +Updates & More Information +========================== + +Visit: http://www.kolourpaint.org/ + + +Support +======= + +Visit: http://www.kolourpaint.org/ + +If you have any questions about compiling, installing or using KolourPaint, +don't be afraid to contact us. We try to support all versions of +KolourPaint and even issues with 3rd party binary packages. + + +Feedback +======== + +Please send bug reports and feature requests to http://bugs.kde.org/. +Don't hesitate to report bugs nor hesitate to send us your wishes -- it +provides valuable feedback that will help to improve future versions of +KolourPaint and you will not receive flames for reporting duplicates. diff --git a/commands/imagelib/effects/kpEffectBalanceCommand.cpp b/commands/imagelib/effects/kpEffectBalanceCommand.cpp new file mode 100644 index 0000000..4416d34 --- /dev/null +++ b/commands/imagelib/effects/kpEffectBalanceCommand.cpp @@ -0,0 +1,55 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "kpEffectBalanceCommand.h" + +#include "imagelib/effects/kpEffectBalance.h" + +#include + +//-------------------------------------------------------------------------------- + +kpEffectBalanceCommand::kpEffectBalanceCommand (int channels, + int brightness, int contrast, int gamma, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectCommandBase (i18n ("Balance"), actOnSelection, environ), + m_channels (channels), + m_brightness (brightness), m_contrast (contrast), m_gamma (gamma) +{ +} + +kpEffectBalanceCommand::~kpEffectBalanceCommand () = default; + + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectBalanceCommand::applyEffect (const kpImage &image) +{ + return kpEffectBalance::applyEffect (image, m_channels, + m_brightness, m_contrast, m_gamma); +} + diff --git a/commands/imagelib/effects/kpEffectBalanceCommand.h b/commands/imagelib/effects/kpEffectBalanceCommand.h new file mode 100644 index 0000000..304341e --- /dev/null +++ b/commands/imagelib/effects/kpEffectBalanceCommand.h @@ -0,0 +1,56 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectBalanceCommand_H +#define kpEffectBalanceCommand_H + + +#include "kpEffectCommandBase.h" +#include "imagelib/kpImage.h" + + +class kpEffectBalanceCommand : public kpEffectCommandBase +{ +public: + // (, & are from -50 to 50) + kpEffectBalanceCommand (int channels, + int brightness, int contrast, int gamma, + bool actOnSelection, + kpCommandEnvironment *environ); + ~kpEffectBalanceCommand () override; + +protected: + kpImage applyEffect (const kpImage &image) override; + +protected: + int m_channels; + int m_brightness, m_contrast, m_gamma; +}; + + +#endif // kpEffectBalanceCommand_H diff --git a/commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp b/commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp new file mode 100644 index 0000000..e7f995a --- /dev/null +++ b/commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp @@ -0,0 +1,65 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectBlurSharpenCommand.h" + +#include + +//-------------------------------------------------------------------------------- + +kpEffectBlurSharpenCommand::kpEffectBlurSharpenCommand (kpEffectBlurSharpen::Type type, + int strength, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectCommandBase (kpEffectBlurSharpenCommand::nameForType (type), + actOnSelection, environ), + m_type (type), + m_strength (strength) +{ +} + +//-------------------------------------------------------------------------------- + +// public static +QString kpEffectBlurSharpenCommand::nameForType (kpEffectBlurSharpen::Type type) +{ + switch (type) { + case kpEffectBlurSharpen::Blur: return i18n ("Soften"); + case kpEffectBlurSharpen::Sharpen: return i18n ("Sharpen"); + default: return {}; + } +} + +//-------------------------------------------------------------------------------- + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectBlurSharpenCommand::applyEffect (const kpImage &image) +{ + return kpEffectBlurSharpen::applyEffect (image, m_type, m_strength); +} + diff --git a/commands/imagelib/effects/kpEffectBlurSharpenCommand.h b/commands/imagelib/effects/kpEffectBlurSharpenCommand.h new file mode 100644 index 0000000..428b461 --- /dev/null +++ b/commands/imagelib/effects/kpEffectBlurSharpenCommand.h @@ -0,0 +1,57 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectBlurSharpenCommand_H +#define kpEffectBlurSharpenCommand_H + + +#include "kpEffectCommandBase.h" +#include "imagelib/effects/kpEffectBlurSharpen.h" +#include "imagelib/kpImage.h" + + +class kpEffectBlurSharpenCommand : public kpEffectCommandBase +{ +public: + kpEffectBlurSharpenCommand (kpEffectBlurSharpen::Type type, + int strength, + bool actOnSelection, + kpCommandEnvironment *environ); + + static QString nameForType (kpEffectBlurSharpen::Type type); + +protected: + kpImage applyEffect (const kpImage &image) override; + +protected: + kpEffectBlurSharpen::Type m_type; + int m_strength; +}; + + +#endif // kpEffectBlurSharpenCommand_H diff --git a/commands/imagelib/effects/kpEffectClearCommand.cpp b/commands/imagelib/effects/kpEffectClearCommand.cpp new file mode 100644 index 0000000..9cf7cf0 --- /dev/null +++ b/commands/imagelib/effects/kpEffectClearCommand.cpp @@ -0,0 +1,110 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectClearCommand.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "kpDefs.h" +#include "document/kpDocument.h" + +#include + +//-------------------------------------------------------------------------------- + +kpEffectClearCommand::kpEffectClearCommand (bool actOnSelection, + const kpColor &newColor, + kpCommandEnvironment *environ) + : kpCommand (environ), + m_actOnSelection (actOnSelection), + m_newColor (newColor), + m_oldImagePtr (nullptr) +{ +} + +kpEffectClearCommand::~kpEffectClearCommand () +{ + delete m_oldImagePtr; +} + + +// public virtual [base kpCommand] +QString kpEffectClearCommand::name () const +{ + QString opName = i18n ("Clear"); + + return (m_actOnSelection) ? i18n ("Selection: %1", opName) : opName; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpEffectClearCommand::size () const +{ + return ImageSize (m_oldImagePtr); +} + + +// public virtual [base kpCommand] +void kpEffectClearCommand::execute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + + m_oldImagePtr = new kpImage (); + *m_oldImagePtr = doc->image (m_actOnSelection); + + + // REFACTOR: Would like to derive entire class from kpEffectCommandBase but + // this code makes it difficult since it's not just acting on pixels + // (kpAbstractImageSelection::fill() takes into account the shape of a selection). + if (m_actOnSelection) + { + // OPT: could just edit pixmap directly and signal change + kpAbstractImageSelection *sel = doc->imageSelection (); + Q_ASSERT (sel); + sel->fill (m_newColor); + } + else { + doc->fill (m_newColor); + } +} + +// public virtual [base kpCommand] +void kpEffectClearCommand::unexecute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + + doc->setImage (m_actOnSelection, *m_oldImagePtr); + + + delete m_oldImagePtr; + m_oldImagePtr = nullptr; +} + diff --git a/commands/imagelib/effects/kpEffectClearCommand.h b/commands/imagelib/effects/kpEffectClearCommand.h new file mode 100644 index 0000000..d90fa9d --- /dev/null +++ b/commands/imagelib/effects/kpEffectClearCommand.h @@ -0,0 +1,62 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectClearCommand_H +#define kpEffectClearCommand_H + + +#include "commands/kpCommand.h" + +#include "imagelib/kpColor.h" +#include "imagelib/kpImage.h" + + +class kpEffectClearCommand : public kpCommand +{ +public: + kpEffectClearCommand (bool actOnSelection, + const kpColor &newColor, + kpCommandEnvironment *environ); + ~kpEffectClearCommand () override; + + QString name () const override; + + SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + bool m_actOnSelection; + + kpColor m_newColor; + kpImage *m_oldImagePtr; +}; + + +#endif // kpEffectClearCommand_H diff --git a/commands/imagelib/effects/kpEffectCommandBase.cpp b/commands/imagelib/effects/kpEffectCommandBase.cpp new file mode 100644 index 0000000..67c9070 --- /dev/null +++ b/commands/imagelib/effects/kpEffectCommandBase.cpp @@ -0,0 +1,124 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectCommandBase.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "generic/kpSetOverrideCursorSaver.h" + +#include + +//-------------------------------------------------------------------------------- + +struct kpEffectCommandBasePrivate +{ + QString name; + bool actOnSelection{false}; + + kpImage oldImage; +}; + +kpEffectCommandBase::kpEffectCommandBase (const QString &name, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpCommand (environ), + d (new kpEffectCommandBasePrivate ()) +{ + d->name = name; + d->actOnSelection = actOnSelection; +} + +kpEffectCommandBase::~kpEffectCommandBase () +{ + delete d; +} + + +// public virtual [base kpCommand] +QString kpEffectCommandBase::name () const +{ + return (d->actOnSelection) ? i18n ("Selection: %1", d->name) : d->name; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpEffectCommandBase::size () const +{ + return ImageSize (d->oldImage); +} + + +// public virtual [base kpCommand] +void kpEffectCommandBase::execute () +{ + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + kpDocument *doc = document (); + Q_ASSERT (doc); + + + const kpImage oldImage = doc->image (d->actOnSelection); + + if (!isInvertible ()) + { + d->oldImage = oldImage; + } + + + kpImage newImage = /*pure virtual*/applyEffect (oldImage); + + doc->setImage (d->actOnSelection, newImage); +} + +// public virtual [base kpCommand] +void kpEffectCommandBase::unexecute () +{ + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + kpDocument *doc = document (); + Q_ASSERT (doc); + + + kpImage newImage; + + if (!isInvertible ()) + { + newImage = d->oldImage; + } + else + { + newImage = /*pure virtual*/applyEffect (doc->image (d->actOnSelection)); + } + + doc->setImage (d->actOnSelection, newImage); + + + d->oldImage = kpImage (); +} + diff --git a/commands/imagelib/effects/kpEffectCommandBase.h b/commands/imagelib/effects/kpEffectCommandBase.h new file mode 100644 index 0000000..887e833 --- /dev/null +++ b/commands/imagelib/effects/kpEffectCommandBase.h @@ -0,0 +1,67 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectCommandBase_H +#define kpEffectCommandBase_H + + +#include + +#include "commands/kpCommand.h" +#include "imagelib/kpImage.h" + + +class kpEffectCommandBase : public kpCommand +{ +public: + kpEffectCommandBase (const QString &name, + bool actOnSelection, + kpCommandEnvironment *environ); + ~kpEffectCommandBase () override; + + QString name () const override; + SizeType size () const override; + +public: + void execute () override; + void unexecute () override; + +public: + // Return true if applyEffect(applyEffect(image)) == image + // to avoid storing the old image, saving memory. + virtual bool isInvertible () const { return false; } + +protected: + virtual kpImage applyEffect (const kpImage &image) = 0; + +private: + struct kpEffectCommandBasePrivate *d; +}; + + +#endif // kpEffectCommandBase_H diff --git a/commands/imagelib/effects/kpEffectEmbossCommand.cpp b/commands/imagelib/effects/kpEffectEmbossCommand.cpp new file mode 100644 index 0000000..08fd015 --- /dev/null +++ b/commands/imagelib/effects/kpEffectEmbossCommand.cpp @@ -0,0 +1,55 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_EMBOSS 0 + + +#include "kpEffectEmbossCommand.h" +#include "imagelib/effects/kpEffectEmboss.h" + +#include "kpLogCategories.h" +#include + + +kpEffectEmbossCommand::kpEffectEmbossCommand (int strength, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectCommandBase (i18n ("Emboss"), actOnSelection, environ), + m_strength (strength) +{ +} + +kpEffectEmbossCommand::~kpEffectEmbossCommand () = default; + + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectEmbossCommand::applyEffect (const kpImage &image) +{ + return kpEffectEmboss::applyEffect (image, m_strength); +} + diff --git a/commands/imagelib/effects/kpEffectEmbossCommand.h b/commands/imagelib/effects/kpEffectEmbossCommand.h new file mode 100644 index 0000000..09e1199 --- /dev/null +++ b/commands/imagelib/effects/kpEffectEmbossCommand.h @@ -0,0 +1,53 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectEmbossCommand_H +#define kpEffectEmbossCommand_H + + +#include "kpEffectCommandBase.h" +#include "imagelib/kpImage.h" + + +class kpEffectEmbossCommand : public kpEffectCommandBase +{ +public: + kpEffectEmbossCommand (int strength, + bool actOnSelection, + kpCommandEnvironment *environ); + ~kpEffectEmbossCommand () override; + +protected: + kpImage applyEffect (const kpImage &image) override; + +protected: + int m_strength; +}; + + +#endif // kpEffectEmbossCommand_H diff --git a/commands/imagelib/effects/kpEffectFlattenCommand.cpp b/commands/imagelib/effects/kpEffectFlattenCommand.cpp new file mode 100644 index 0000000..f76aa51 --- /dev/null +++ b/commands/imagelib/effects/kpEffectFlattenCommand.cpp @@ -0,0 +1,61 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_FLATTEN 0 + + +#include "kpEffectFlattenCommand.h" +#include "imagelib/effects/kpEffectFlatten.h" + +#include + +//-------------------------------------------------------------------------------- + +kpEffectFlattenCommand::kpEffectFlattenCommand (const QColor &color1, + const QColor &color2, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectCommandBase (i18n ("Flatten"), actOnSelection, environ), + m_color1 (color1), m_color2 (color2) +{ +} + +kpEffectFlattenCommand::~kpEffectFlattenCommand () = default; + + +// +// kpEffectFlattenCommand implements kpEffectCommandBase interface +// + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectFlattenCommand::applyEffect (const kpImage &image) +{ + return kpEffectFlatten::applyEffect (image, m_color1, m_color2); +} + + diff --git a/commands/imagelib/effects/kpEffectFlattenCommand.h b/commands/imagelib/effects/kpEffectFlattenCommand.h new file mode 100644 index 0000000..2a66fdb --- /dev/null +++ b/commands/imagelib/effects/kpEffectFlattenCommand.h @@ -0,0 +1,59 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectFlattenCommand_H +#define kpEffectFlattenCommand_H + + +#include + +#include "kpEffectCommandBase.h" +#include "imagelib/kpImage.h" + + +class kpEffectFlattenCommand : public kpEffectCommandBase +{ +public: + kpEffectFlattenCommand (const QColor &color1, const QColor &color2, + bool actOnSelection, + kpCommandEnvironment *environ); + ~kpEffectFlattenCommand () override; + + + // + // kpEffectCommandBase interface + // + +protected: + kpImage applyEffect (const kpImage &image) override; + + QColor m_color1, m_color2; +}; + + +#endif // kpEffectFlattenCommand_H diff --git a/commands/imagelib/effects/kpEffectGrayscaleCommand.cpp b/commands/imagelib/effects/kpEffectGrayscaleCommand.cpp new file mode 100644 index 0000000..4c145fe --- /dev/null +++ b/commands/imagelib/effects/kpEffectGrayscaleCommand.cpp @@ -0,0 +1,59 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectGrayscaleCommand.h" +#include "imagelib/effects/kpEffectGrayscale.h" + +#include + +//-------------------------------------------------------------------------------- + +kpEffectGrayscaleCommand::kpEffectGrayscaleCommand ( + bool actOnSelection, + kpCommandEnvironment *environ) + + : kpEffectCommandBase ( + i18n ("Reduce to Grayscale"), + actOnSelection, + environ) +{ +} + +kpEffectGrayscaleCommand::~kpEffectGrayscaleCommand () = default; + + +// +// kpEffectGrayscaleCommand implements kpEffectCommandBase interface +// + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectGrayscaleCommand::applyEffect (const kpImage &image) +{ + return kpEffectGrayscale::applyEffect (image); +} + diff --git a/commands/imagelib/effects/kpEffectGrayscaleCommand.h b/commands/imagelib/effects/kpEffectGrayscaleCommand.h new file mode 100644 index 0000000..03b7a70 --- /dev/null +++ b/commands/imagelib/effects/kpEffectGrayscaleCommand.h @@ -0,0 +1,57 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectGrayscaleCommand_H +#define kpEffectGrayscaleCommand_H + + +#include "kpEffectCommandBase.h" +#include "imagelib/kpImage.h" + + +class kpEffectGrayscaleCommand : public kpEffectCommandBase +{ +public: + kpEffectGrayscaleCommand (bool actOnSelection, + kpCommandEnvironment *environ); + ~kpEffectGrayscaleCommand () override; + + + // + // kpEffectCommandBase interface + // + +public: + bool isInvertible () const override { return false; } + +protected: + kpImage applyEffect (const kpImage &image) override; +}; + + +#endif // kpEffectGrayscaleCommand_H diff --git a/commands/imagelib/effects/kpEffectHSVCommand.cpp b/commands/imagelib/effects/kpEffectHSVCommand.cpp new file mode 100644 index 0000000..36effb6 --- /dev/null +++ b/commands/imagelib/effects/kpEffectHSVCommand.cpp @@ -0,0 +1,50 @@ +/* + Copyright (c) 2007 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "kpEffectHSVCommand.h" +#include "imagelib/effects/kpEffectHSV.h" + +#include + +//--------------------------------------------------------------------- + +kpEffectHSVCommand::kpEffectHSVCommand (double hue, double saturation, double value, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectCommandBase (i18n ("Hue, Saturation, Value"), actOnSelection, environ), + m_hue (hue), m_saturation (saturation), m_value (value) +{ +} + +//--------------------------------------------------------------------- + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectHSVCommand::applyEffect (const kpImage &image) +{ + return kpEffectHSV::applyEffect (image, m_hue, m_saturation, m_value); +} + +//--------------------------------------------------------------------- diff --git a/commands/imagelib/effects/kpEffectHSVCommand.h b/commands/imagelib/effects/kpEffectHSVCommand.h new file mode 100644 index 0000000..1176dc3 --- /dev/null +++ b/commands/imagelib/effects/kpEffectHSVCommand.h @@ -0,0 +1,51 @@ + +/* + Copyright (c) 2007 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectHSVCommand_H +#define kpEffectHSVCommand_H + + +#include "kpEffectCommandBase.h" + + +class kpEffectHSVCommand : public kpEffectCommandBase +{ +public: + kpEffectHSVCommand (double hue, double saturation, double value, + bool actOnSelection, + kpCommandEnvironment *environ); + +protected: + kpImage applyEffect (const kpImage &image) override; + +protected: + double m_hue, m_saturation, m_value; +}; + + +#endif // kpEffectHSVCommand_H diff --git a/commands/imagelib/effects/kpEffectInvertCommand.cpp b/commands/imagelib/effects/kpEffectInvertCommand.cpp new file mode 100644 index 0000000..43ad1ca --- /dev/null +++ b/commands/imagelib/effects/kpEffectInvertCommand.cpp @@ -0,0 +1,66 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectInvertCommand.h" + +#include "imagelib/effects/kpEffectInvert.h" + +#include + +//-------------------------------------------------------------------------------- + +kpEffectInvertCommand::kpEffectInvertCommand (int channels, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectCommandBase (channels == kpEffectInvert::RGB ? + i18n ("Invert Colors") : i18n ("Invert"), + actOnSelection, environ), + m_channels (channels) +{ +} + +kpEffectInvertCommand::kpEffectInvertCommand (bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectInvertCommand(kpEffectInvert::RGB, actOnSelection, environ) +{ +} + +kpEffectInvertCommand::~kpEffectInvertCommand () = default; + + +// +// kpEffectInvertCommand implements kpEffectCommandBase interface +// + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectInvertCommand::applyEffect (const kpImage &image) +{ + return kpEffectInvert::applyEffect (image, m_channels); +} + + diff --git a/commands/imagelib/effects/kpEffectInvertCommand.h b/commands/imagelib/effects/kpEffectInvertCommand.h new file mode 100644 index 0000000..f07df86 --- /dev/null +++ b/commands/imagelib/effects/kpEffectInvertCommand.h @@ -0,0 +1,63 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectInvertCommand_H +#define kpEffectInvertCommand_H + + +#include "kpEffectCommandBase.h" +#include "imagelib/kpImage.h" + + + +class kpEffectInvertCommand : public kpEffectCommandBase +{ +public: + kpEffectInvertCommand (int channels, + bool actOnSelection, + kpCommandEnvironment *environ); + kpEffectInvertCommand (bool actOnSelection, + kpCommandEnvironment *environ); + ~kpEffectInvertCommand () override; + + + // + // kpEffectCommandBase interface + // + +public: + bool isInvertible () const override { return true; } + +protected: + kpImage applyEffect (const kpImage &image) override; + + int m_channels; +}; + + +#endif // kpEffectInvertCommand_H diff --git a/commands/imagelib/effects/kpEffectReduceColorsCommand.cpp b/commands/imagelib/effects/kpEffectReduceColorsCommand.cpp new file mode 100644 index 0000000..d4977d6 --- /dev/null +++ b/commands/imagelib/effects/kpEffectReduceColorsCommand.cpp @@ -0,0 +1,80 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_REDUCE_COLORS 0 + + +#include "kpEffectReduceColorsCommand.h" +#include "imagelib/effects/kpEffectReduceColors.h" + +#include + +//--------------------------------------------------------------------- + +kpEffectReduceColorsCommand::kpEffectReduceColorsCommand (int depth, bool dither, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectCommandBase (commandName (depth, dither), actOnSelection, environ), + m_depth (depth), m_dither (dither) +{ +} + +//--------------------------------------------------------------------- + +// public +QString kpEffectReduceColorsCommand::commandName (int depth, int dither) const +{ + switch (depth) { + case 1: if (dither) { + return i18n ("Reduce to Monochrome (Dithered)"); + } + return i18n ("Reduce to Monochrome"); + + case 8: + if (dither) { + return i18n ("Reduce to 256 Color (Dithered)"); + } + return i18n ("Reduce to 256 Color"); + + default: return {}; + } +} + +//--------------------------------------------------------------------- + +// +// kpEffectReduceColorsCommand implements kpEffectCommandBase interface +// + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectReduceColorsCommand::applyEffect (const kpImage &image) +{ + return kpEffectReduceColors::applyEffect (image, m_depth, m_dither); +} + +//--------------------------------------------------------------------- diff --git a/commands/imagelib/effects/kpEffectReduceColorsCommand.h b/commands/imagelib/effects/kpEffectReduceColorsCommand.h new file mode 100644 index 0000000..1c8427b --- /dev/null +++ b/commands/imagelib/effects/kpEffectReduceColorsCommand.h @@ -0,0 +1,59 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectReduceColorsCommand_H +#define kpEffectReduceColorsCommand_H + + +#include "kpEffectCommandBase.h" +#include "imagelib/kpImage.h" + + +class kpEffectReduceColorsCommand : public kpEffectCommandBase +{ +public: + // depth must be 1 or 8 + kpEffectReduceColorsCommand (int depth, bool dither, + bool actOnSelection, + kpCommandEnvironment *environ); + + QString commandName (int depth, int dither) const; + + // + // kpEffectCommandBase interface + // + +protected: + kpImage applyEffect (const kpImage &image) override; + + int m_depth; + bool m_dither; +}; + + +#endif // kpEffectReduceColorsCommand_H diff --git a/commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp b/commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp new file mode 100644 index 0000000..c861dda --- /dev/null +++ b/commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp @@ -0,0 +1,54 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2006 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectToneEnhanceCommand.h" + +#include "imagelib/effects/kpEffectToneEnhance.h" + +#include + +//-------------------------------------------------------------------------------- + +kpEffectToneEnhanceCommand::kpEffectToneEnhanceCommand (double granularity, double amount, + bool actOnSelection, + kpCommandEnvironment *environ) + : kpEffectCommandBase (i18n ("Histogram Equalizer"), actOnSelection, environ), + m_granularity (granularity), m_amount (amount) +{ +} + +kpEffectToneEnhanceCommand::~kpEffectToneEnhanceCommand () = default; + + +// protected virtual [base kpEffectCommandBase] +kpImage kpEffectToneEnhanceCommand::applyEffect (const kpImage &image) +{ + return kpEffectToneEnhance::applyEffect (image, m_granularity, m_amount); +} + diff --git a/commands/imagelib/effects/kpEffectToneEnhanceCommand.h b/commands/imagelib/effects/kpEffectToneEnhanceCommand.h new file mode 100644 index 0000000..4a3c1fd --- /dev/null +++ b/commands/imagelib/effects/kpEffectToneEnhanceCommand.h @@ -0,0 +1,53 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2006 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectToneEnhanceCommand_H +#define kpEffectToneEnhanceCommand_H + + +#include "kpEffectCommandBase.h" + + +class kpEffectToneEnhanceCommand : public kpEffectCommandBase +{ +public: + kpEffectToneEnhanceCommand (double granularity, double amount, + bool actOnSelection, + kpCommandEnvironment *environ); + ~kpEffectToneEnhanceCommand () override; + +protected: + kpImage applyEffect (const kpImage &image) override; + +protected: + double m_granularity, m_amount; +}; + + +#endif // kpEffectToneEnhanceCommand_H diff --git a/commands/imagelib/kpDocumentMetaInfoCommand.cpp b/commands/imagelib/kpDocumentMetaInfoCommand.cpp new file mode 100644 index 0000000..ab7dc53 --- /dev/null +++ b/commands/imagelib/kpDocumentMetaInfoCommand.cpp @@ -0,0 +1,86 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpDocumentMetaInfoCommand.h" + +#include "document/kpDocument.h" +#include "imagelib/kpDocumentMetaInfo.h" +#include "kpDefs.h" + + +struct kpDocumentMetaInfoCommandPrivate +{ + kpDocumentMetaInfo metaInfo, oldMetaInfo; +}; + +kpDocumentMetaInfoCommand::kpDocumentMetaInfoCommand (const QString &name, + const kpDocumentMetaInfo &metaInfo, + const kpDocumentMetaInfo &oldMetaInfo, + kpCommandEnvironment *environ) + + : kpNamedCommand (name, environ), + d (new kpDocumentMetaInfoCommandPrivate ()) +{ + d->metaInfo = metaInfo; + d->oldMetaInfo = oldMetaInfo; +} + +kpDocumentMetaInfoCommand::~kpDocumentMetaInfoCommand () +{ + delete d; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpDocumentMetaInfoCommand::size () const +{ + return d->metaInfo.size () + d->oldMetaInfo.size (); +} + + +// public virtual [base kpCommand] +void kpDocumentMetaInfoCommand::execute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + doc->setMetaInfo (d->metaInfo); + doc->setModified (); +} + +// public virtual [base kpCommand] +void kpDocumentMetaInfoCommand::unexecute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + // REFACTOR: Document in kpDocument.h that kpDocument::setMetaInfo() does not mutate modified state + doc->setMetaInfo (d->oldMetaInfo); + doc->setModified (); +} + diff --git a/commands/imagelib/kpDocumentMetaInfoCommand.h b/commands/imagelib/kpDocumentMetaInfoCommand.h new file mode 100644 index 0000000..1b62e6a --- /dev/null +++ b/commands/imagelib/kpDocumentMetaInfoCommand.h @@ -0,0 +1,58 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpDocumentMetaInfoCommand_H +#define kpDocumentMetaInfoCommand_H + + +#include "commands/kpNamedCommand.h" + + +class kpDocumentMetaInfo; + +class kpDocumentMetaInfoCommand : public kpNamedCommand +{ +public: + kpDocumentMetaInfoCommand (const QString &name, + const kpDocumentMetaInfo &metaInfo, + const kpDocumentMetaInfo &oldMetaInfo, + kpCommandEnvironment *environ); + ~kpDocumentMetaInfoCommand () override; + + SizeType size () const override; + +public: + void execute () override; + void unexecute () override; + +private: + struct kpDocumentMetaInfoCommandPrivate * const d; +}; + + +#endif // kpDocumentMetaInfoCommand_H diff --git a/commands/imagelib/transforms/kpTransformFlipCommand.cpp b/commands/imagelib/transforms/kpTransformFlipCommand.cpp new file mode 100644 index 0000000..a086d29 --- /dev/null +++ b/commands/imagelib/transforms/kpTransformFlipCommand.cpp @@ -0,0 +1,135 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpTransformFlipCommand.h" + +#include + +#include "kpLogCategories.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "pixmapfx/kpPixmapFX.h" + +#include + +//--------------------------------------------------------------------- + +kpTransformFlipCommand::kpTransformFlipCommand (bool actOnSelection, + bool horiz, bool vert, + kpCommandEnvironment *environ) + : kpCommand (environ), + m_actOnSelection (actOnSelection), + m_horiz (horiz), m_vert (vert) +{ +} + +//--------------------------------------------------------------------- + +kpTransformFlipCommand::~kpTransformFlipCommand () = default; + +//--------------------------------------------------------------------- +// public virtual [base kpCommand] + +QString kpTransformFlipCommand::name () const +{ + QString opName; + + +#if 1 + opName = i18n ("Flip"); +#else // re-enable when giving full descriptions for all actions + if (m_horiz && m_vert) + opName = i18n ("Flip horizontally and vertically"); + else if (m_horiz) + opName = i18n ("Flip horizontally"); + else if (m_vert) + opName = i18n ("Flip vertically"); + else + { + qCCritical(kpLogCommands) << "kpTransformFlipCommand::name() not asked to flip"; + return {}; + } +#endif + + + if (m_actOnSelection) { + return i18n ("Selection: %1", opName); + } + + return opName; +} + +//--------------------------------------------------------------------- +// public virtual [base kpCommand] + +kpCommandSize::SizeType kpTransformFlipCommand::size () const +{ + return 0; +} + +//--------------------------------------------------------------------- +// public virtual [base kpCommand] + +void kpTransformFlipCommand::execute () +{ + flip (); +} + +//--------------------------------------------------------------------- +// public virtual [base kpCommand] + +void kpTransformFlipCommand::unexecute () +{ + flip (); +} + +//--------------------------------------------------------------------- +// private + +void kpTransformFlipCommand::flip () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + QApplication::setOverrideCursor (Qt::WaitCursor); + + if (m_actOnSelection) + { + Q_ASSERT (doc->imageSelection ()); + doc->imageSelection ()->flip (m_horiz, m_vert); + environ ()->somethingBelowTheCursorChanged (); + } + else + { + doc->setImage(doc->image().mirrored(m_horiz, m_vert)); + } + + QApplication::restoreOverrideCursor (); +} diff --git a/commands/imagelib/transforms/kpTransformFlipCommand.h b/commands/imagelib/transforms/kpTransformFlipCommand.h new file mode 100644 index 0000000..9a1dee8 --- /dev/null +++ b/commands/imagelib/transforms/kpTransformFlipCommand.h @@ -0,0 +1,60 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformFlipCommand_H +#define kpTransformFlipCommand_H + + +#include "commands/kpCommand.h" + + +class kpTransformFlipCommand : public kpCommand +{ +public: + kpTransformFlipCommand (bool actOnSelection, + bool horiz, bool vert, + kpCommandEnvironment *environ); + + ~kpTransformFlipCommand () override; + + QString name () const override; + + SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + void flip (); + + bool m_actOnSelection; + bool m_horiz, m_vert; +}; + + +#endif // kpTransformFlipCommand_H diff --git a/commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp b/commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp new file mode 100644 index 0000000..bade764 --- /dev/null +++ b/commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp @@ -0,0 +1,486 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_RESIZE_SCALE_COMMAND 0 +#define DEBUG_KP_TOOL_RESIZE_SCALE_DIALOG 0 + + +#include "kpTransformResizeScaleCommand.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "layers/selections/image/kpFreeFormImageSelection.h" +#include "pixmapfx/kpPixmapFX.h" +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "layers/selections/text/kpTextSelection.h" + + +#include +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include + +//-------------------------------------------------------------------------------- + +kpTransformResizeScaleCommand::kpTransformResizeScaleCommand (bool actOnSelection, + int newWidth, int newHeight, + Type type, + kpCommandEnvironment *environ) + : kpCommand (environ), + m_actOnSelection (actOnSelection), + m_type (type), + m_backgroundColor (environ->backgroundColor ()), + m_oldSelectionPtr (nullptr) +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + m_oldWidth = doc->width (m_actOnSelection); + m_oldHeight = doc->height (m_actOnSelection); + + m_actOnTextSelection = (m_actOnSelection && + doc->textSelection ()); + + resize (newWidth, newHeight); + + // If we have a selection _border_ (but not a floating selection), + // then scale the selection with the document + m_scaleSelectionWithImage = (!m_actOnSelection && + (m_type == Scale || m_type == SmoothScale) && + document ()->selection () && + !document ()->selection ()->hasContent ()); +} + +kpTransformResizeScaleCommand::~kpTransformResizeScaleCommand () +{ + delete m_oldSelectionPtr; +} + + +// public virtual [base kpCommand] +QString kpTransformResizeScaleCommand::name () const +{ + if (m_actOnSelection) + { + if (m_actOnTextSelection) + { + if (m_type == Resize) { + return i18n ("Text: Resize Box"); + } + } + else + { + if (m_type == Scale) { + return i18n ("Selection: Scale"); + } + + if (m_type == SmoothScale) { + return i18n ("Selection: Smooth Scale"); + } + } + } + else + { + switch (m_type) + { + case Resize: + return i18n ("Resize"); + case Scale: + return i18n ("Scale"); + case SmoothScale: + return i18n ("Smooth Scale"); + } + } + + return {}; +} + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpTransformResizeScaleCommand::size () const +{ + return ImageSize (m_oldImage) + + ImageSize (m_oldRightImage) + + ImageSize (m_oldBottomImage) + + SelectionSize (m_oldSelectionPtr); +} + + +// public +int kpTransformResizeScaleCommand::newWidth () const +{ + return m_newWidth; +} + +// public +void kpTransformResizeScaleCommand::setNewWidth (int width) +{ + resize (width, newHeight ()); +} + + +// public +int kpTransformResizeScaleCommand::newHeight () const +{ + return m_newHeight; +} + +// public +void kpTransformResizeScaleCommand::setNewHeight (int height) +{ + resize (newWidth (), height); +} + + +// public +QSize kpTransformResizeScaleCommand::newSize () const +{ + return {newWidth (), newHeight ()}; +} + +// public virtual +void kpTransformResizeScaleCommand::resize (int width, int height) +{ + m_newWidth = width; + m_newHeight = height; + + m_isLosslessScale = ((m_type == Scale) && + (m_newWidth / m_oldWidth * m_oldWidth == m_newWidth) && + (m_newHeight / m_oldHeight * m_oldHeight == m_newHeight)); +} + + +// public +bool kpTransformResizeScaleCommand::scaleSelectionWithImage () const +{ + return m_scaleSelectionWithImage; +} + + +// private +void kpTransformResizeScaleCommand::scaleSelectionRegionWithDocument () +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_COMMAND + qCDebug(kpLogCommands) << "kpTransformResizeScaleCommand::scaleSelectionRegionWithDocument"; +#endif + + Q_ASSERT (m_oldSelectionPtr); + Q_ASSERT (!m_oldSelectionPtr->hasContent ()); + + + const double horizScale = double (m_newWidth) / double (m_oldWidth); + const double vertScale = double (m_newHeight) / double (m_oldHeight); + + const int newX = static_cast (m_oldSelectionPtr->x () * horizScale); + const int newY = static_cast (m_oldSelectionPtr->y () * vertScale); + + + QPolygon currentPoints = m_oldSelectionPtr->calculatePoints (); + currentPoints.translate (-currentPoints.boundingRect ().x (), + -currentPoints.boundingRect ().y ()); + + // TODO: refactor into kpPixmapFX + // TODO: Can we get to size 0x0 accidentally? + QTransform scaleMatrix; + scaleMatrix.scale (horizScale, vertScale); + currentPoints = scaleMatrix.map (currentPoints); + + currentPoints.translate ( + -currentPoints.boundingRect ().x () + newX, + -currentPoints.boundingRect ().y () + newY); + + auto *imageSel = dynamic_cast (m_oldSelectionPtr); + auto *textSel = dynamic_cast (m_oldSelectionPtr); + + if (imageSel) + { + document ()->setSelection ( + kpFreeFormImageSelection (currentPoints, kpImage (), + imageSel->transparency ())); + } + else if (textSel) + { + document ()->setSelection ( + kpTextSelection (currentPoints.boundingRect (), + textSel->textLines (), + textSel->textStyle ())); + } + else { + Q_ASSERT (!"Unknown selection type"); + } + + + environ ()->somethingBelowTheCursorChanged (); +} + + +// public virtual [base kpCommand] +void kpTransformResizeScaleCommand::execute () +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_COMMAND + qCDebug(kpLogCommands) << "kpTransformResizeScaleCommand::execute() type=" + << (int) m_type + << " oldWidth=" << m_oldWidth + << " oldHeight=" << m_oldHeight + << " newWidth=" << m_newWidth + << " newHeight=" << m_newHeight; +#endif + + if (m_oldWidth == m_newWidth && m_oldHeight == m_newHeight) + return; + + if (m_type == Resize) + { + if (m_actOnSelection) + { + if (!m_actOnTextSelection) { + Q_ASSERT (!"kpTransformResizeScaleCommand::execute() resizing sel doesn't make sense"); + } + + QApplication::setOverrideCursor (Qt::WaitCursor); + + kpTextSelection *textSel = textSelection (); + Q_ASSERT (textSel); + + kpTextSelection *newSel = textSel->resized (m_newWidth, m_newHeight); + document ()->setSelection (*newSel); + delete newSel; + + environ ()->somethingBelowTheCursorChanged (); + + QApplication::restoreOverrideCursor (); + } + else + { + QApplication::setOverrideCursor (Qt::WaitCursor); + + + if (m_newWidth < m_oldWidth) + { + m_oldRightImage = document ()->getImageAt ( + QRect (m_newWidth, 0, + m_oldWidth - m_newWidth, m_oldHeight)); + } + + if (m_newHeight < m_oldHeight) + { + m_oldBottomImage = document ()->getImageAt ( + QRect (0, m_newHeight, + m_newWidth, m_oldHeight - m_newHeight)); + } + + document ()->resize (m_newWidth, m_newHeight, m_backgroundColor); + + + QApplication::restoreOverrideCursor (); + } + } + // Scale + else + { + QApplication::setOverrideCursor (Qt::WaitCursor); + + + kpImage oldImage = document ()->image (m_actOnSelection); + + if (!m_isLosslessScale) { + m_oldImage = oldImage; + } + + kpImage newImage = kpPixmapFX::scale (oldImage, m_newWidth, m_newHeight, + m_type == SmoothScale); + + + if (!m_oldSelectionPtr && document ()->selection ()) + { + // Save sel border + m_oldSelectionPtr = document ()->selection ()->clone (); + m_oldSelectionPtr->deleteContent (); + } + + if (m_actOnSelection) + { + if (m_actOnTextSelection) { + Q_ASSERT (!"kpTransformResizeScaleCommand::execute() scaling text sel doesn't make sense"); + } + + Q_ASSERT (m_oldSelectionPtr); + if ( !m_oldSelectionPtr ) { // make coverity happy + return; + } + + QRect newRect = QRect (m_oldSelectionPtr->x (), m_oldSelectionPtr->y (), + newImage.width (), newImage.height ()); + + // Not possible to retain non-rectangular selection borders on scale + // (think about e.g. a 45 deg line as part of the border & 2x scale) + Q_ASSERT (dynamic_cast (m_oldSelectionPtr)); + document ()->setSelection ( + kpRectangularImageSelection (newRect, newImage, + dynamic_cast (m_oldSelectionPtr) + ->transparency ())); + + environ ()->somethingBelowTheCursorChanged (); + } + else + { + document ()->setImage (newImage); + + if (m_scaleSelectionWithImage) + { + scaleSelectionRegionWithDocument (); + } + } + + + QApplication::restoreOverrideCursor (); + } +} + +// public virtual [base kpCommand] +void kpTransformResizeScaleCommand::unexecute () +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_COMMAND + qCDebug(kpLogCommands) << "kpTransformResizeScaleCommand::unexecute() type=" + << m_type; +#endif + + if (m_oldWidth == m_newWidth && m_oldHeight == m_newHeight) { + return; + } + + kpDocument *doc = document (); + Q_ASSERT (doc); + + if (m_type == Resize) + { + if (m_actOnSelection) + { + if (!m_actOnTextSelection) { + Q_ASSERT (!"kpTransformResizeScaleCommand::unexecute() resizing sel doesn't make sense"); + } + + QApplication::setOverrideCursor (Qt::WaitCursor); + + kpTextSelection *textSel = textSelection (); + Q_ASSERT (textSel); + + kpTextSelection *newSel = textSel->resized (m_oldWidth, m_oldHeight); + document ()->setSelection (*newSel); + delete newSel; + + environ ()->somethingBelowTheCursorChanged (); + + QApplication::restoreOverrideCursor (); + } + else + { + QApplication::setOverrideCursor (Qt::WaitCursor); + + + kpImage newImage (m_oldWidth, m_oldHeight, QImage::Format_ARGB32_Premultiplied); + + kpPixmapFX::setPixmapAt (&newImage, QPoint (0, 0), + doc->image ()); + + if (m_newWidth < m_oldWidth) + { + kpPixmapFX::setPixmapAt (&newImage, + QPoint (m_newWidth, 0), + m_oldRightImage); + } + + if (m_newHeight < m_oldHeight) + { + kpPixmapFX::setPixmapAt (&newImage, + QPoint (0, m_newHeight), + m_oldBottomImage); + } + + doc->setImage (newImage); + + + QApplication::restoreOverrideCursor (); + } + } + // Scale + else + { + QApplication::setOverrideCursor (Qt::WaitCursor); + + + kpImage oldImage; + + if (!m_isLosslessScale) { + oldImage = m_oldImage; + } else { + oldImage = kpPixmapFX::scale (doc->image (m_actOnSelection), + m_oldWidth, m_oldHeight); + } + + + if (m_actOnSelection) + { + if (m_actOnTextSelection) { + Q_ASSERT (!"kpTransformResizeScaleCommand::unexecute() scaling text sel doesn't make sense"); + } + + Q_ASSERT (dynamic_cast (m_oldSelectionPtr)); + auto *oldImageSel = dynamic_cast (m_oldSelectionPtr); + + kpAbstractImageSelection *oldSelection = oldImageSel->clone (); + oldSelection->setBaseImage (oldImage); + doc->setSelection (*oldSelection); + delete oldSelection; + + environ ()->somethingBelowTheCursorChanged (); + } + else + { + doc->setImage (oldImage); + + if (m_scaleSelectionWithImage) + { + doc->setSelection (*m_oldSelectionPtr); + + environ ()->somethingBelowTheCursorChanged (); + } + } + + + QApplication::restoreOverrideCursor (); + } +} + diff --git a/commands/imagelib/transforms/kpTransformResizeScaleCommand.h b/commands/imagelib/transforms/kpTransformResizeScaleCommand.h new file mode 100644 index 0000000..23a6394 --- /dev/null +++ b/commands/imagelib/transforms/kpTransformResizeScaleCommand.h @@ -0,0 +1,100 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformResizeScaleCommand_H +#define kpTransformResizeScaleCommand_H + + +#include + +#include "imagelib/kpColor.h" +#include "commands/kpCommand.h" +#include "imagelib/kpImage.h" + + +class QSize; + +class kpAbstractSelection; + + +// REFACTOR: Split into multiple classes, each doing a different thing +// e.g. resize, scale and smooth scale. +// REFACTOR: Replace kpToolSelectionResizeScaleCommand with us. +class kpTransformResizeScaleCommand : public kpCommand +{ +public: + enum Type + { + Resize, Scale, SmoothScale + }; + + kpTransformResizeScaleCommand (bool actOnSelection, + int newWidth, int newHeight, + Type type, + kpCommandEnvironment *environ); + ~kpTransformResizeScaleCommand () override; + + QString name () const override; + SizeType size () const override; + +public: + int newWidth () const; + void setNewWidth (int width); + + int newHeight () const; + void setNewHeight (int height); + + QSize newSize () const; + virtual void resize (int width, int height); + +public: + bool scaleSelectionWithImage () const; + +private: + void scaleSelectionRegionWithDocument (); + +public: + void execute () override; + void unexecute () override; + +protected: + bool m_actOnSelection; + int m_newWidth, m_newHeight; + Type m_type; + bool m_isLosslessScale; + bool m_scaleSelectionWithImage; + kpColor m_backgroundColor; + + int m_oldWidth, m_oldHeight; + bool m_actOnTextSelection; + kpImage m_oldImage, m_oldRightImage, m_oldBottomImage; + kpAbstractSelection *m_oldSelectionPtr; +}; + + +#endif // kpTransformResizeScaleCommand_H diff --git a/commands/imagelib/transforms/kpTransformRotateCommand.cpp b/commands/imagelib/transforms/kpTransformRotateCommand.cpp new file mode 100644 index 0000000..28e6258 --- /dev/null +++ b/commands/imagelib/transforms/kpTransformRotateCommand.cpp @@ -0,0 +1,220 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_ROTATE 0 + + +#include "kpTransformRotateCommand.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "layers/selections/image/kpFreeFormImageSelection.h" +#include "pixmapfx/kpPixmapFX.h" +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "views/manager/kpViewManager.h" +#include "kpLogCategories.h" + +#include +#include +#include + +#include + +//-------------------------------------------------------------------------------- + +kpTransformRotateCommand::kpTransformRotateCommand (bool actOnSelection, + double angle, + kpCommandEnvironment *environ) + : kpCommand (environ), + m_actOnSelection (actOnSelection), + m_angle (angle), + m_backgroundColor (environ->backgroundColor (actOnSelection)), + m_losslessRotation (kpPixmapFX::isLosslessRotation (angle)), + m_oldSelectionPtr (nullptr) +{ +} + +kpTransformRotateCommand::~kpTransformRotateCommand () +{ + delete m_oldSelectionPtr; +} + + +// public virtual [base kpCommand] +QString kpTransformRotateCommand::name () const +{ + QString opName = i18n ("Rotate"); + + return (m_actOnSelection) ? i18n ("Selection: %1", opName) : opName; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpTransformRotateCommand::size () const +{ + return ImageSize (m_oldImage) + + SelectionSize (m_oldSelectionPtr); +} + + +// public virtual [base kpCommand] +void kpTransformRotateCommand::execute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + + QApplication::setOverrideCursor (Qt::WaitCursor); + + + if (!m_losslessRotation) { + m_oldImage = doc->image (m_actOnSelection); + } + + + kpImage newImage = kpPixmapFX::rotate (doc->image (m_actOnSelection), + m_angle, + m_backgroundColor); + + if (!m_actOnSelection) { + doc->setImage (newImage); + } + else { + kpAbstractImageSelection *sel = doc->imageSelection (); + Q_ASSERT (sel); + + // Save old selection + m_oldSelectionPtr = sel->clone (); + + // Conserve memmory: + // + // 1. If it's a lossless rotation, we don't need to the store old + // image anywhere at all, as we can reconstruct it by rotating in + // reverse. + // 2. If it's not a lossless rotation, "m_oldImage" already holds + // a copy of the old image. In this case, we actually save very + // little with this line (just, the computed transparency mask) since + // kpImage is copy-on-write. + m_oldSelectionPtr->setBaseImage (kpImage ()); + + + // Calculate new top left (so selection rotates about center) + // (the Times2 trickery is used to reduce integer division error without + // resorting to the troublesome world of floating point) + QPoint oldCenterTimes2 (sel->x () * 2 + sel->width (), + sel->y () * 2 + sel->height ()); + QPoint newTopLeftTimes2 (oldCenterTimes2 - QPoint (newImage.width (), newImage.height ())); + QPoint newTopLeft (newTopLeftTimes2.x () / 2, newTopLeftTimes2.y () / 2); + + + // Calculate rotated points + QPolygon currentPoints = sel->calculatePoints (); + currentPoints.translate (-currentPoints.boundingRect ().x (), + -currentPoints.boundingRect ().y ()); + QTransform rotateMatrix = kpPixmapFX::rotateMatrix (doc->image (m_actOnSelection), m_angle); + currentPoints = rotateMatrix.map (currentPoints); + currentPoints.translate (-currentPoints.boundingRect ().x () + newTopLeft.x (), + -currentPoints.boundingRect ().y () + newTopLeft.y ()); + + + if (currentPoints.boundingRect ().width () == newImage.width () && + currentPoints.boundingRect ().height () == newImage.height ()) + { + doc->setSelection ( + kpFreeFormImageSelection ( + currentPoints, newImage, + m_oldSelectionPtr->transparency ())); + } + else + { + // TODO: fix the latter "victim of" problem in kpAbstractImageSelection by + // allowing the border width & height != pixmap width & height + // Or maybe autocrop? + #if DEBUG_KP_TOOL_ROTATE + qCDebug(kpLogCommands) << "kpTransformRotateCommand::execute() currentPoints.boundingRect=" + << currentPoints.boundingRect () + << " newPixmap: w=" << newImage.width () + << " h=" << newImage.height () + << " (victim of rounding error and/or rotated-a-(rectangular)-pixmap-that-was-transparent-in-the-corners-making-sel-uselessly-bigger-than-needs-be)"; + #endif + doc->setSelection ( + kpRectangularImageSelection ( + QRect (newTopLeft.x (), newTopLeft.y (), + newImage.width (), newImage.height ()), + newImage, + m_oldSelectionPtr->transparency ())); + } + + environ ()->somethingBelowTheCursorChanged (); + } + + + QApplication::restoreOverrideCursor (); +} + +// public virtual [base kpCommand] +void kpTransformRotateCommand::unexecute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + + QApplication::setOverrideCursor (Qt::WaitCursor); + + + kpImage oldImage; + + if (!m_losslessRotation) + { + oldImage = m_oldImage; + m_oldImage = kpImage (); + } + else + { + oldImage = kpPixmapFX::rotate (doc->image (m_actOnSelection), + 360 - m_angle, + m_backgroundColor); + } + + + if (!m_actOnSelection) { + doc->setImage (oldImage); + } + else { + m_oldSelectionPtr->setBaseImage (oldImage); + doc->setSelection (*m_oldSelectionPtr); + delete m_oldSelectionPtr; m_oldSelectionPtr = nullptr; + + environ ()->somethingBelowTheCursorChanged (); + } + + + QApplication::restoreOverrideCursor (); +} + diff --git a/commands/imagelib/transforms/kpTransformRotateCommand.h b/commands/imagelib/transforms/kpTransformRotateCommand.h new file mode 100644 index 0000000..93ab104 --- /dev/null +++ b/commands/imagelib/transforms/kpTransformRotateCommand.h @@ -0,0 +1,68 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformRotateCommand_H +#define kpTransformRotateCommand_H + + +#include "imagelib/kpColor.h" +#include "commands/kpCommand.h" +#include "imagelib/kpImage.h" + + +class kpAbstractImageSelection; + + +class kpTransformRotateCommand : public kpCommand +{ +public: + kpTransformRotateCommand (bool actOnSelection, + double angle, // 0 <= angle < 360 (clockwise) + kpCommandEnvironment *environ); + ~kpTransformRotateCommand () override; + + QString name () const override; + + SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + bool m_actOnSelection; + double m_angle; + + kpColor m_backgroundColor; + + bool m_losslessRotation; + kpImage m_oldImage; + kpAbstractImageSelection *m_oldSelectionPtr; +}; + + +#endif // kpTransformRotateCommand_H diff --git a/commands/imagelib/transforms/kpTransformSkewCommand.cpp b/commands/imagelib/transforms/kpTransformSkewCommand.cpp new file mode 100644 index 0000000..e8aeb33 --- /dev/null +++ b/commands/imagelib/transforms/kpTransformSkewCommand.cpp @@ -0,0 +1,195 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SKEW 0 +#define DEBUG_KP_TOOL_SKEW_DIALOG 0 + + +#include "kpTransformSkewCommand.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "layers/selections/image/kpFreeFormImageSelection.h" +#include "pixmapfx/kpPixmapFX.h" +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "kpLogCategories.h" + +#include +#include +#include + +// TODO: nasty, should avoid using GUI class in this command class +#include "dialogs/imagelib/transforms/kpTransformSkewDialog.h" + +#include + +//-------------------------------------------------------------------------------- + +kpTransformSkewCommand::kpTransformSkewCommand (bool actOnSelection, + int hangle, int vangle, + kpCommandEnvironment *environ) + : kpCommand (environ), + m_actOnSelection (actOnSelection), + m_hangle (hangle), m_vangle (vangle), + m_backgroundColor (environ->backgroundColor (actOnSelection)), + m_oldSelectionPtr (nullptr) +{ +} + +kpTransformSkewCommand::~kpTransformSkewCommand () +{ + delete m_oldSelectionPtr; +} + + +// public virtual [base kpCommand] +QString kpTransformSkewCommand::name () const +{ + QString opName = i18n ("Skew"); + + return (m_actOnSelection) ? i18n ("Selection: %1", opName) : opName; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpTransformSkewCommand::size () const +{ + return ImageSize (m_oldImage) + + SelectionSize (m_oldSelectionPtr); +} + + +// public virtual [base kpCommand] +void kpTransformSkewCommand::execute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + + QApplication::setOverrideCursor (Qt::WaitCursor); + + + kpImage newImage = kpPixmapFX::skew (doc->image (m_actOnSelection), + kpTransformSkewDialog::horizontalAngleForPixmapFX (m_hangle), + kpTransformSkewDialog::verticalAngleForPixmapFX (m_vangle), + m_backgroundColor); + + if (!m_actOnSelection) + { + m_oldImage = doc->image (m_actOnSelection); + + doc->setImage (newImage); + } + else + { + kpAbstractImageSelection *sel = doc->imageSelection (); + Q_ASSERT (sel); + + // Save old selection + m_oldSelectionPtr = sel->clone (); + + + // Calculate skewed points + QPolygon currentPoints = sel->calculatePoints (); + currentPoints.translate (-currentPoints.boundingRect ().x (), + -currentPoints.boundingRect ().y ()); + QTransform skewMatrix = kpPixmapFX::skewMatrix ( + doc->image (m_actOnSelection), + kpTransformSkewDialog::horizontalAngleForPixmapFX (m_hangle), + kpTransformSkewDialog::verticalAngleForPixmapFX (m_vangle)); + currentPoints = skewMatrix.map (currentPoints); + currentPoints.translate (-currentPoints.boundingRect ().x () + m_oldSelectionPtr->x (), + -currentPoints.boundingRect ().y () + m_oldSelectionPtr->y ()); + + + if (currentPoints.boundingRect ().width () == newImage.width () && + currentPoints.boundingRect ().height () == newImage.height ()) + { + doc->setSelection ( + kpFreeFormImageSelection ( + currentPoints, newImage, + m_oldSelectionPtr->transparency ())); + } + else + { + // TODO: fix the latter "victim of" problem in kpAbstractImageSelection by + // allowing the border width & height != pixmap width & height + // Or maybe autocrop? + #if DEBUG_KP_TOOL_SKEW + qCDebug(kpLogCommands) << "kpTransformSkewCommand::execute() currentPoints.boundingRect=" + << currentPoints.boundingRect () + << " newPixmap: w=" << newImage.width () + << " h=" << newImage.height () + << " (victim of rounding error and/or skewed-a-(rectangular)-pixmap-that-was-transparent-in-the-corners-making-sel-uselessly-bigger-than-needs-be))"; + #endif + doc->setSelection ( + kpRectangularImageSelection ( + QRect (currentPoints.boundingRect ().x (), + currentPoints.boundingRect ().y (), + newImage.width (), + newImage.height ()), + newImage, + m_oldSelectionPtr->transparency ())); + } + + environ ()->somethingBelowTheCursorChanged (); + } + + + QApplication::restoreOverrideCursor (); +} + +// public virtual [base kpCommand] +void kpTransformSkewCommand::unexecute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + + QApplication::setOverrideCursor (Qt::WaitCursor); + + + if (!m_actOnSelection) + { + doc->setImage (m_oldImage); + m_oldImage = kpImage (); + } + else + { + doc->setSelection (*m_oldSelectionPtr); + delete m_oldSelectionPtr; m_oldSelectionPtr = nullptr; + + environ ()->somethingBelowTheCursorChanged (); + } + + + QApplication::restoreOverrideCursor (); +} + diff --git a/commands/imagelib/transforms/kpTransformSkewCommand.h b/commands/imagelib/transforms/kpTransformSkewCommand.h new file mode 100644 index 0000000..cb9cbd0 --- /dev/null +++ b/commands/imagelib/transforms/kpTransformSkewCommand.h @@ -0,0 +1,65 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformSkewCommand_H +#define kpTransformSkewCommand_H + + +#include "imagelib/kpColor.h" +#include "imagelib/kpImage.h" +#include "commands/kpCommand.h" + + + + +class kpTransformSkewCommand : public kpCommand +{ +public: + kpTransformSkewCommand (bool actOnSelection, + int hangle, int vangle, + kpCommandEnvironment *environ); + ~kpTransformSkewCommand () override; + + QString name () const override; + + SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + bool m_actOnSelection; + int m_hangle, m_vangle; + + kpColor m_backgroundColor; + kpImage m_oldImage; + kpAbstractImageSelection *m_oldSelectionPtr; +}; + + +#endif // kpTransformSkewCommand_H diff --git a/commands/kpCommand.cpp b/commands/kpCommand.cpp new file mode 100644 index 0000000..55e3e7c --- /dev/null +++ b/commands/kpCommand.cpp @@ -0,0 +1,83 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COMMAND_HISTORY 0 + + +#include "kpCommand.h" + +#include "environments/commands/kpCommandEnvironment.h" + + +kpCommand::kpCommand (kpCommandEnvironment *environ) + : m_environ (environ) +{ + Q_ASSERT (environ); +} + +kpCommand::~kpCommand () = default; + + +kpCommandEnvironment *kpCommand::environ () const +{ + return m_environ; +} + + +// protected +kpDocument *kpCommand::document () const +{ + return m_environ->document (); +} + + +// protected +kpAbstractSelection *kpCommand::selection () const +{ + return m_environ->selection (); +} + +// protected +kpAbstractImageSelection *kpCommand::imageSelection () const +{ + return m_environ->imageSelection (); +} + +// protected +kpTextSelection *kpCommand::textSelection () const +{ + return m_environ->textSelection (); +} + + +// protected +kpViewManager *kpCommand::viewManager () const +{ + return m_environ->viewManager (); +} + diff --git a/commands/kpCommand.h b/commands/kpCommand.h new file mode 100644 index 0000000..59a71a5 --- /dev/null +++ b/commands/kpCommand.h @@ -0,0 +1,90 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpCommand_H +#define kpCommand_H + + +#include "kpCommandSize.h" +#undef environ // macro on win32 + + +class QString; + +class kpAbstractImageSelection; +class kpAbstractSelection; +class kpCommandEnvironment; +class kpDocument; +class kpTextSelection; +class kpViewManager; + + +class kpCommand : public kpCommandSize +{ +public: + kpCommand (kpCommandEnvironment *environ); + virtual ~kpCommand (); + +public: + virtual QString name () const = 0; + + // Returns the estimated size in bytes. + // + // You only have to factor in the size of variables that change according + // to the amount of input e.g. pixmap size, text size. There is no need + // to include the size of O(1) variables unless they are huge. + // + // If in doubt, return the largest possible amount of memory that your + // command will take. This is better than making the user unexpectedly + // run out of memory. + // + // Implement this by measuring the size of all of your fields, using + // kpCommandSize. + virtual SizeType size () const = 0; + + virtual void execute () = 0; + virtual void unexecute () = 0; + +protected: + kpCommandEnvironment *environ () const; + + // Commonly used accessors - simply forwards to environ(). + kpDocument *document () const; + + kpAbstractSelection *selection () const; + kpAbstractImageSelection *imageSelection () const; + kpTextSelection *textSelection () const; + + kpViewManager *viewManager () const; + +private: + kpCommandEnvironment * const m_environ; +}; + + +#endif // kpCommand_H diff --git a/commands/kpCommandHistory.cpp b/commands/kpCommandHistory.cpp new file mode 100644 index 0000000..dd44de5 --- /dev/null +++ b/commands/kpCommandHistory.cpp @@ -0,0 +1,131 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COMMAND_HISTORY 0 + + +#include "kpCommandHistory.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "mainWindow/kpMainWindow.h" +#include "tools/kpTool.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" + + +kpCommandHistory::kpCommandHistory (bool doReadConfig, kpMainWindow *mainWindow) + : kpCommandHistoryBase (doReadConfig, mainWindow->actionCollection ()), + m_mainWindow (mainWindow) +{ +} + +kpCommandHistory::~kpCommandHistory () = default; + + +static bool NextUndoCommandIsCreateBorder (kpCommandHistory *commandHistory) +{ + Q_ASSERT (commandHistory); + + kpCommand *cmd = commandHistory->nextUndoCommand (); + if (!cmd) { + return false; + } + + auto *c = dynamic_cast (cmd); + if (!c) { + return false; + } + + const kpAbstractSelection *sel = c->fromSelection (); + Q_ASSERT (sel); + + return (!sel->hasContent ()); +} + +// public +void kpCommandHistory::addCreateSelectionCommand (kpToolSelectionCreateCommand *cmd, + bool execute) +{ + if (cmd->fromSelection ()->hasContent ()) + { + addCommand (cmd, execute); + return; + } + + if (::NextUndoCommandIsCreateBorder (this)) + { + setNextUndoCommand (cmd); + if (execute) { + cmd->execute (); + } + } + else { + addCommand (cmd, execute); + } +} + +//--------------------------------------------------------------------- + +// public slot virtual [base KCommandHistory] +void kpCommandHistory::undo () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistory::undo() CALLED!"; +#endif + if (m_mainWindow && m_mainWindow->toolHasBegunShape ()) + { + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\thas begun shape - cancel draw"; + #endif + m_mainWindow->tool ()->cancelShapeInternal (); + } + else { + kpCommandHistoryBase::undo (); + } +} + +//--------------------------------------------------------------------- + +// public slot virtual [base KCommandHistory] +void kpCommandHistory::redo () +{ + if (m_mainWindow && m_mainWindow->toolHasBegunShape ()) + { + // Not completely obvious but what else can we do? + // + // Ignoring the request would not be intuitive for tools like + // Polygon & Polyline (where it's not always apparent to the user + // that s/he's still drawing a shape even though the mouse isn't + // down). + m_mainWindow->tool ()->cancelShapeInternal (); + } + else { + kpCommandHistoryBase::redo (); + } +} + + diff --git a/commands/kpCommandHistory.h b/commands/kpCommandHistory.h new file mode 100644 index 0000000..e0b55ff --- /dev/null +++ b/commands/kpCommandHistory.h @@ -0,0 +1,105 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpCommandHistory_H +#define kpCommandHistory_H + + +#include "kpCommandHistoryBase.h" + +class kpMainWindow; +class kpToolSelectionCreateCommand; + + +// +// KolourPaint-specific command history functionality. +// +// Intercepts Undo/Redo requests: +// +// If the user is currently drawing a shape, it cancels it. +// Else it passes on the Undo/Redo request to kpCommandHistoryBase. +// +// TODO: This is wrong. It won't work if the Undo action is disabled, +// for instance. Later: What about kpToolText::viewEvent()'s use of +// QEvent::ShortcutOverride? +// +// Maybe the real solution is to call kpCommandHistoryBase::addCommand() +// as _soon_ as the shape starts - not after it ends. But the +// trouble with this solution is that if the user Undoes/cancels +// the shape s/he's currently drawing, it would replace a Redo +// slot in the history. Arguably you shouldn't be able to Redo +// something you never finished drawing. +// +// The solution is to add this functionality to kpCommandHistoryBase. +// +class kpCommandHistory : public kpCommandHistoryBase +{ +Q_OBJECT + +public: + kpCommandHistory (bool doReadConfig, kpMainWindow *mainWindow); + ~kpCommandHistory () override; + +public: + // Same as addCommand(), except that this has a more desirable behavior + // when adding a selection border creation command: If the next undo command + // also creates a selection border, it overwrites that command + // with the given , instead of adding to the undo history. + // + // This helps to reduce the number of consecutive selection border + // creation commands in the history. Exactly one border creation + // command before each "real" selection command is useful as it allows + // users to undo just that "real" operation and then do a different "real" + // operation with the same border (as sometimes, exact borders are difficult + // to recreate). However, multiple consecutive border creation + // commands get annoying since none of them mutate the document, + // so if the user has not done a "real" command with the last selection + // border (i.e. the next undo command), what this method is saying is + // that the user wanted to throw away that border drag anyway. + // + // This special behavior is perfectly safe since border creation commands + // do not mutate the document. + // + // If creates a selection that is not just a border, this + // method has the same effect as addCommand(). + // + // REFACTOR: Why not just override addCommand() and test if it was given a + // kpToolSelectionCreateCommand? + void addCreateSelectionCommand (kpToolSelectionCreateCommand *cmd, + bool execute = true); + +public slots: + void undo () override; + void redo () override; + +protected: + kpMainWindow *m_mainWindow; +}; + + +#endif // kpCommandHistory_H diff --git a/commands/kpCommandHistoryBase.cpp b/commands/kpCommandHistoryBase.cpp new file mode 100644 index 0000000..028037c --- /dev/null +++ b/commands/kpCommandHistoryBase.cpp @@ -0,0 +1,714 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COMMAND_HISTORY 0 + + +#include "kpCommandHistoryBase.h" + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "kpCommand.h" +#include "kpLogCategories.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "tools/kpTool.h" + +//--------------------------------------------------------------------- + +static void ClearPointerList(QList &list) +{ + qDeleteAll(list); + list.clear(); +} + +//-------------------------------------------------------------------------------- + +kpCommandHistoryBase::kpCommandHistoryBase (bool doReadConfig, + KActionCollection *ac) +{ + m_actionUndo = new KToolBarPopupAction(QIcon::fromTheme(QStringLiteral("edit-undo")), undoActionText (), this); + ac->addAction (KStandardAction::name (KStandardAction::Undo), m_actionUndo); + ac->setDefaultShortcuts (m_actionUndo, KStandardShortcut::shortcut (KStandardShortcut::Undo)); + connect (m_actionUndo, &KToolBarPopupAction::triggered, this, &kpCommandHistoryBase::undo); + + m_actionRedo = new KToolBarPopupAction(QIcon::fromTheme(QStringLiteral("edit-redo")), redoActionText (), this); + ac->addAction (KStandardAction::name (KStandardAction::Redo), m_actionRedo); + ac->setDefaultShortcuts (m_actionRedo, KStandardShortcut::shortcut (KStandardShortcut::Redo)); + connect (m_actionRedo, &KToolBarPopupAction::triggered, this, &kpCommandHistoryBase::redo ); + + + m_actionUndo->setEnabled (false); + m_actionRedo->setEnabled (false); + + + connect (m_actionUndo->menu(), &QMenu::triggered, + this, &kpCommandHistoryBase::undoUpToNumber); + + connect (m_actionRedo->menu(), &QMenu::triggered, + this, &kpCommandHistoryBase::redoUpToNumber); + + + m_undoMinLimit = 10; + m_undoMaxLimit = 500; + m_undoMaxLimitSizeLimit = 16 * 1048576; + + + m_documentRestoredPosition = 0; + + + if (doReadConfig) { + readConfig (); + } +} + +//-------------------------------------------------------------------------------- + +kpCommandHistoryBase::~kpCommandHistoryBase () +{ + ::ClearPointerList(m_undoCommandList); + ::ClearPointerList(m_redoCommandList); +} + +//-------------------------------------------------------------------------------- + +// public +int kpCommandHistoryBase::undoLimit () const +{ + return undoMinLimit (); +} + +// public +void kpCommandHistoryBase::setUndoLimit (int limit) +{ + setUndoMinLimit (limit); +} + + +// public +int kpCommandHistoryBase::undoMinLimit () const +{ + return m_undoMinLimit; +} + +// public +void kpCommandHistoryBase::setUndoMinLimit (int limit) +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::setUndoMinLimit(" + << limit << ")"; +#endif + + if (limit < 1 || limit > 5000/*"ought to be enough for anybody"*/) + { + qCCritical(kpLogCommands) << "kpCommandHistoryBase::setUndoMinLimit(" + << limit << ")"; + return; + } + + if (limit == m_undoMinLimit) { + return; + } + + m_undoMinLimit = limit; + trimCommandListsUpdateActions (); +} + + +// public +int kpCommandHistoryBase::undoMaxLimit () const +{ + return m_undoMaxLimit; +} + +// public +void kpCommandHistoryBase::setUndoMaxLimit (int limit) +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::setUndoMaxLimit(" + << limit << ")"; +#endif + + if (limit < 1 || limit > 5000/*"ought to be enough for anybody"*/) + { + qCCritical(kpLogCommands) << "kpCommandHistoryBase::setUndoMaxLimit(" + << limit << ")"; + return; + } + + if (limit == m_undoMaxLimit) { + return; + } + + m_undoMaxLimit = limit; + trimCommandListsUpdateActions (); +} + + +// public +kpCommandSize::SizeType kpCommandHistoryBase::undoMaxLimitSizeLimit () const +{ + return m_undoMaxLimitSizeLimit; +} + +// public +void kpCommandHistoryBase::setUndoMaxLimitSizeLimit (kpCommandSize::SizeType sizeLimit) +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::setUndoMaxLimitSizeLimit(" + << sizeLimit << ")"; +#endif + + if (sizeLimit < 0 || + sizeLimit > (500 * 1048576)/*"ought to be enough for anybody"*/) + { + qCCritical(kpLogCommands) << "kpCommandHistoryBase::setUndoMaxLimitSizeLimit(" + << sizeLimit << ")"; + return; + } + + if (sizeLimit == m_undoMaxLimitSizeLimit) { + return; + } + + m_undoMaxLimitSizeLimit = sizeLimit; + trimCommandListsUpdateActions (); +} + + +// public +void kpCommandHistoryBase::readConfig () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::readConfig()"; +#endif + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupUndoRedo); + + setUndoMinLimit (cfg.readEntry (kpSettingUndoMinLimit, undoMinLimit ())); + setUndoMaxLimit (cfg.readEntry (kpSettingUndoMaxLimit, undoMaxLimit ())); + setUndoMaxLimitSizeLimit ( + cfg.readEntry (kpSettingUndoMaxLimitSizeLimit, + undoMaxLimitSizeLimit ())); + + trimCommandListsUpdateActions (); +} + +// public +void kpCommandHistoryBase::writeConfig () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::writeConfig()"; +#endif + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupUndoRedo); + + cfg.writeEntry (kpSettingUndoMinLimit, undoMinLimit ()); + cfg.writeEntry (kpSettingUndoMaxLimit, undoMaxLimit ()); + cfg.writeEntry ( + kpSettingUndoMaxLimitSizeLimit, undoMaxLimitSizeLimit ()); + + cfg.sync (); +} + + +// public +void kpCommandHistoryBase::addCommand (kpCommand *command, bool execute) +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::addCommand(" + << command + << ",execute=" << execute << ")" +#endif + + if (execute) { + command->execute (); + } + + m_undoCommandList.push_front (command); + ::ClearPointerList(m_redoCommandList); + +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\tdocumentRestoredPosition=" << m_documentRestoredPosition; +#endif + if (m_documentRestoredPosition != INT_MAX) + { + if (m_documentRestoredPosition > 0) { + m_documentRestoredPosition = INT_MAX; + } + else { + m_documentRestoredPosition--; + } + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\t\tdocumentRestoredPosition=" << m_documentRestoredPosition; + #endif + } + + trimCommandListsUpdateActions (); +} + +// public +void kpCommandHistoryBase::clear () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::clear()"; +#endif + + ::ClearPointerList(m_undoCommandList); + ::ClearPointerList(m_redoCommandList); + + m_documentRestoredPosition = 0; + + updateActions (); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpCommandHistoryBase::undoInternal () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::undoInternal()"; +#endif + + kpCommand *undoCommand = nextUndoCommand (); + if (!undoCommand) { + return; + } + + undoCommand->unexecute (); + + + m_undoCommandList.erase (m_undoCommandList.begin ()); + m_redoCommandList.push_front (undoCommand); + +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\tdocumentRestoredPosition=" << m_documentRestoredPosition; +#endif + if (m_documentRestoredPosition != INT_MAX) + { + m_documentRestoredPosition++; + if (m_documentRestoredPosition == 0) + emit documentRestored (); + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\t\tdocumentRestoredPosition=" << m_documentRestoredPosition; + #endif + } +} + +//--------------------------------------------------------------------- + +// protected slot +void kpCommandHistoryBase::redoInternal () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::redoInternal()"; +#endif + + kpCommand *redoCommand = nextRedoCommand (); + if (!redoCommand) { + return; + } + + redoCommand->execute (); + + + m_redoCommandList.erase (m_redoCommandList.begin ()); + m_undoCommandList.push_front (redoCommand); + +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\tdocumentRestoredPosition=" << m_documentRestoredPosition; +#endif + if (m_documentRestoredPosition != INT_MAX) + { + m_documentRestoredPosition--; + if (m_documentRestoredPosition == 0) { + emit documentRestored (); + } + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\t\tdocumentRestoredPosition=" << m_documentRestoredPosition; + #endif + } +} + +//--------------------------------------------------------------------- + +// public slot virtual +void kpCommandHistoryBase::undo () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::undo()"; +#endif + + undoInternal (); + trimCommandListsUpdateActions (); +} + +//--------------------------------------------------------------------- + +// public slot virtual +void kpCommandHistoryBase::redo () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::redo()"; +#endif + + redoInternal (); + trimCommandListsUpdateActions (); +} + +//--------------------------------------------------------------------- + +// public slot virtual +void kpCommandHistoryBase::undoUpToNumber (QAction *which) +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::undoUpToNumber(" << which << ")"; +#endif + + for (int i = 0; + i <= which->data().toInt() && !m_undoCommandList.isEmpty (); + i++) + { + undoInternal (); + } + + trimCommandListsUpdateActions (); +} + +// public slot virtual +void kpCommandHistoryBase::redoUpToNumber (QAction *which) +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::redoUpToNumber(" << which << ")"; +#endif + + for (int i = 0; + i <= which->data().toInt() && !m_redoCommandList.isEmpty (); + i++) + { + redoInternal (); + } + + trimCommandListsUpdateActions (); +} + + +// protected +QString kpCommandHistoryBase::undoActionText () const +{ + kpCommand *undoCommand = nextUndoCommand (); + + return (undoCommand) ? i18n ("&Undo: %1", undoCommand->name ()) : i18n ("&Undo"); +} + +// protected +QString kpCommandHistoryBase::redoActionText () const +{ + kpCommand *redoCommand = nextRedoCommand (); + + return (redoCommand) ? i18n ("&Redo: %1", redoCommand->name ()) : i18n ("&Redo"); +} + + +// protected +QString kpCommandHistoryBase::undoActionToolTip () const +{ + kpCommand *undoCommand = nextUndoCommand (); + + return (undoCommand) ? i18n ("Undo: %1", undoCommand->name ()) : i18n ("Undo"); +} + +// protected +QString kpCommandHistoryBase::redoActionToolTip () const +{ + kpCommand *redoCommand = nextRedoCommand (); + + return (redoCommand) ? i18n ("Redo: %1", redoCommand->name ()) : i18n ("Redo"); +} + + +// protected +void kpCommandHistoryBase::trimCommandListsUpdateActions () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::trimCommandListsUpdateActions()"; +#endif + + trimCommandLists (); + updateActions (); +} + +//-------------------------------------------------------------------------------- + +// protected +void kpCommandHistoryBase::trimCommandList(QList &commandList) +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::trimCommandList()"; + QTime timer; timer.start (); + + qCDebug(kpLogCommands) << "\tsize=" << commandList.size() + << " undoMinLimit=" << m_undoMinLimit + << " undoMaxLimit=" << m_undoMaxLimit + << " undoMaxLimitSizeLimit=" << m_undoMaxLimitSizeLimit; +#endif + if ( commandList.size() <= m_undoMinLimit ) + { + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\t\tsize under undoMinLimit - done"; + #endif + return; + } + + +#if DEBUG_KP_COMMAND_HISTORY && 0 + qCDebug(kpLogCommands) << "\tsize over undoMinLimit - iterating thru cmds:"; +#endif + + QList ::iterator it = commandList.begin (); + int upto = 0; + + kpCommandSize::SizeType sizeSoFar = 0; + + while (it != commandList.end ()) + { + bool advanceIt = true; + + if (sizeSoFar <= m_undoMaxLimitSizeLimit) + { + sizeSoFar += (*it)->size (); + } + + #if DEBUG_KP_COMMAND_HISTORY && 0 + qCDebug(kpLogCommands) << "\t\t" << upto << ":" + << " name='" << (*it)->name () + << "' size=" << (*it)->size () + << " sizeSoFar=" << sizeSoFar; + #endif + + if (upto >= m_undoMinLimit) + { + if (upto >= m_undoMaxLimit || + sizeSoFar > m_undoMaxLimitSizeLimit) + { + #if DEBUG_KP_COMMAND_HISTORY && 0 + qCDebug(kpLogCommands) << "\t\t\tkill"; + #endif + delete (*it); + it = m_undoCommandList.erase (it); + advanceIt = false; + } + } + + if (advanceIt) { + it++; + } + upto++; + } + +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\ttook " << timer.elapsed () << "ms"; +#endif +} + +//-------------------------------------------------------------------------------- + +// protected +void kpCommandHistoryBase::trimCommandLists () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::trimCommandLists()"; +#endif + + trimCommandList(m_undoCommandList); + trimCommandList(m_redoCommandList); + +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\tdocumentRestoredPosition=" << m_documentRestoredPosition +#endif + if (m_documentRestoredPosition != INT_MAX) + { + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\t\tundoCmdList.size=" << m_undoCommandList.size () + << " redoCmdList.size=" << m_redoCommandList.size (); + #endif + if (m_documentRestoredPosition > static_cast (m_redoCommandList.size ()) || + -m_documentRestoredPosition > static_cast (m_undoCommandList.size ())) + { + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\t\t\tinvalidate documentRestoredPosition"; + #endif + m_documentRestoredPosition = INT_MAX; + } + } +} + + +static void populatePopupMenu (QMenu *popupMenu, + const QString &undoOrRedo, + const QList &commandList) +{ + if (!popupMenu) { + return; + } + + popupMenu->clear (); + + QList ::const_iterator it = commandList.begin (); + int i = 0; + while (i < 10 && it != commandList.end ()) + { + QAction *action = new QAction(i18n ("%1: %2", undoOrRedo, (*it)->name ()), popupMenu); + action->setData(i); + popupMenu->addAction (action); + i++; + it++; + } + + if (it != commandList.end ()) + { + // TODO: maybe have a scrollview show all the items instead, like KOffice in KDE 3 + // LOCOMPAT: should be centered text. + popupMenu->addSection (i18np ("%1 more item", "%1 more items", + commandList.size () - i)); + } +} + + +// protected +void kpCommandHistoryBase::updateActions () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::updateActions()"; +#endif + + m_actionUndo->setEnabled (static_cast (nextUndoCommand ())); + // Don't want to keep changing toolbar text. + // TODO: As a bad side-effect, the menu doesn't have "Undo: " + // anymore. In any case, the KDE4 KToolBarPopupAction + // sucks in menus as it forces the clicking of a submenu. IMO, + // there should be no submenu in the menu. + //m_actionUndo->setText (undoActionText ()); + + // But in icon mode, a tooltip with context is useful. + m_actionUndo->setToolTip (undoActionToolTip ()); +#if DEBUG_KP_COMMAND_HISTORY + QTime timer; timer.start (); +#endif + populatePopupMenu (m_actionUndo->menu (), + i18n ("Undo"), + m_undoCommandList); +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\tpopuplatePopupMenu undo=" << timer.elapsed () + << "ms"; +#endif + + m_actionRedo->setEnabled (static_cast (nextRedoCommand ())); + // Don't want to keep changing toolbar text. + // TODO: As a bad side-effect, the menu doesn't have "Undo: " + // anymore. In any case, the KDE4 KToolBarPopupAction + // sucks in menus as it forces the clicking of a submenu. IMO, + // there should be no submenu in the menu. + //m_actionRedo->setText (redoActionText ()); + + // But in icon mode, a tooltip with context is useful. + m_actionRedo->setToolTip (redoActionToolTip ()); +#if DEBUG_KP_COMMAND_HISTORY + timer.restart (); +#endif + populatePopupMenu (m_actionRedo->menu (), + i18n ("Redo"), + m_redoCommandList); +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\tpopuplatePopupMenu redo=" << timer.elapsed () + << "ms"; +#endif +} + + +// public +kpCommand *kpCommandHistoryBase::nextUndoCommand () const +{ + if (m_undoCommandList.isEmpty ()) { + return nullptr; + } + + return m_undoCommandList.first (); +} + +// public +kpCommand *kpCommandHistoryBase::nextRedoCommand () const +{ + if (m_redoCommandList.isEmpty ()) { + return nullptr; + } + + return m_redoCommandList.first (); +} + + +// public +void kpCommandHistoryBase::setNextUndoCommand (kpCommand *command) +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::setNextUndoCommand("<< command << ")"; +#endif + + if (m_undoCommandList.isEmpty ()) { + return; + } + + delete *m_undoCommandList.begin (); + *m_undoCommandList.begin () = command; + + trimCommandListsUpdateActions (); +} + + +// public slot virtual +void kpCommandHistoryBase::documentSaved () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpCommandHistoryBase::documentSaved()"; +#endif + + m_documentRestoredPosition = 0; +} + + diff --git a/commands/kpCommandHistoryBase.h b/commands/kpCommandHistoryBase.h new file mode 100644 index 0000000..971a75a --- /dev/null +++ b/commands/kpCommandHistoryBase.h @@ -0,0 +1,146 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpCommandHistoryBase_H +#define kpCommandHistoryBase_H + + +#include +#include +#include + + +#include "commands/kpCommandSize.h" + +class QAction; + +class KActionCollection; +class KToolBarPopupAction; + +class kpCommand; + + +// Clone of KCommandHistory with features required by KolourPaint but which +// could also be useful for other apps: +// - nextUndoCommand()/nextRedoCommand() +// - undo/redo history limited by both number and size +// +// Features not required by KolourPaint (e.g. commandExecuted()) are not +// implemented and undo limit == redo limit. So compared to +// KCommandHistory, this is only "almost source compatible". +class kpCommandHistoryBase : public QObject +{ +Q_OBJECT + +public: + kpCommandHistoryBase (bool doReadConfig, KActionCollection *ac); + ~kpCommandHistoryBase () override; + +public: + // (provided for compatibility with KCommandHistory) + int undoLimit () const; + void setUndoLimit (int limit); + + + int undoMinLimit () const; + void setUndoMinLimit (int limit); + + int undoMaxLimit () const; + void setUndoMaxLimit (int limit); + + kpCommandSize::SizeType undoMaxLimitSizeLimit () const; + void setUndoMaxLimitSizeLimit (kpCommandSize::SizeType sizeLimit); + +public: + // Read and write above config + void readConfig (); + void writeConfig (); + +public: + void addCommand (kpCommand *command, bool execute = true); + void clear (); + +protected slots: + // (same as undo() & redo() except they don't call + // trimCommandListsUpdateActions()) + void undoInternal (); + void redoInternal (); + +public slots: + virtual void undo (); + virtual void redo (); + + virtual void undoUpToNumber (QAction *which); + virtual void redoUpToNumber (QAction *which); + +protected: + QString undoActionText () const; + QString redoActionText () const; + + QString undoActionToolTip () const; + QString redoActionToolTip () const; + + void trimCommandListsUpdateActions (); + void trimCommandList(QList &commandList); + void trimCommandLists (); + void updateActions (); + +public: + kpCommand *nextUndoCommand () const; + kpCommand *nextRedoCommand () const; + + void setNextUndoCommand (kpCommand *command); + +public slots: + virtual void documentSaved (); + +signals: + void documentRestored (); + +protected: + KToolBarPopupAction *m_actionUndo, *m_actionRedo; + + // (Front element is the next one) + QList m_undoCommandList; + QList m_redoCommandList; + + int m_undoMinLimit, m_undoMaxLimit; + kpCommandSize::SizeType m_undoMaxLimitSizeLimit; + + // What you have to do to get back to the document's unmodified state: + // * -x: must Undo x times + // * 0: unmodified + // * +x: must Redo x times + // * INT_MAX: can never become unmodified again + // + // ASSUMPTION: will never have INT_MAX commands in any list. + int m_documentRestoredPosition; +}; + + +#endif // kpCommandHistoryBase_H diff --git a/commands/kpCommandSize.cpp b/commands/kpCommandSize.cpp new file mode 100644 index 0000000..74d7ca2 --- /dev/null +++ b/commands/kpCommandSize.cpp @@ -0,0 +1,152 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COMMAND_SIZE 0 + + +#include "commands/kpCommandSize.h" +#include "layers/selections/kpAbstractSelection.h" + +#include +#include +#include + + +// public static +kpCommandSize::SizeType kpCommandSize::PixmapSize (const QImage &image) +{ + return kpCommandSize::PixmapSize (image.width (), image.height (), image.depth ()); +} + +// public static +kpCommandSize::SizeType kpCommandSize::PixmapSize (const QImage *image) +{ + return (image ? kpCommandSize::PixmapSize (*image) : 0); +} + +// public static +kpCommandSize::SizeType kpCommandSize::PixmapSize (int width, int height, int depth) +{ + // handle 15bpp + int roundedDepth = (depth > 8 ? (depth + 7) / 8 * 8 : depth); + kpCommandSize::SizeType ret = + static_cast (width) * height * roundedDepth / 8; + +#if DEBUG_KP_COMMAND_SIZE && 0 + qCDebug(kpLogCommands) << "kpCommandSize::PixmapSize() w=" << width + << " h=" << height + << " d=" << depth + << " roundedDepth=" << roundedDepth + << " ret=" << ret; +#endif + return ret; +} + + +// public static +kpCommandSize::SizeType kpCommandSize::QImageSize (const QImage &image) +{ + return kpCommandSize::QImageSize (image.width (), image.height (), image.depth ()); +} + +// public static +kpCommandSize::SizeType kpCommandSize::QImageSize (const QImage *image) +{ + return (image ? kpCommandSize::QImageSize (*image) : 0); +} + +// public static +kpCommandSize::SizeType kpCommandSize::QImageSize (int width, int height, int depth) +{ + // handle 15bpp + int roundedDepth = (depth > 8 ? (depth + 7) / 8 * 8 : depth); + kpCommandSize::SizeType ret = + static_cast (width) * height * roundedDepth / 8; + +#if DEBUG_KP_COMMAND_SIZE && 0 + qCDebug(kpLogCommands) << "kpCommandSize::QImageSize() w=" << width + << " h=" << height + << " d=" << depth + << " roundedDepth=" << roundedDepth + << " ret=" << ret; +#endif + + return ret; +} + + +// public static +kpCommandSize::SizeType kpCommandSize::ImageSize (const kpImage &image) +{ + return kpCommandSize::PixmapSize (image); +} + +// public static +kpCommandSize::SizeType kpCommandSize::ImageSize (const kpImage *image) +{ + return kpCommandSize::PixmapSize (image); +} + + +// public static +kpCommandSize::SizeType kpCommandSize::SelectionSize (const kpAbstractSelection &sel) +{ + return sel.size (); +} + +// public static +kpCommandSize::SizeType kpCommandSize::SelectionSize (const kpAbstractSelection *sel) +{ + return (sel ? sel->size () : 0); +} + + +// public static +kpCommandSize::SizeType kpCommandSize::StringSize (const QString &string) +{ +#if DEBUG_KP_COMMAND_SIZE && 1 + qCDebug(kpLogCommands) << "kpCommandSize::StringSize(" << string << ")" + << " len=" << string.length () + << " sizeof(QChar)=" << sizeof (QChar); +#endif + return static_cast (static_cast (string.length ()) * sizeof (QChar)); +} + + +// public static +kpCommandSize::SizeType kpCommandSize::PolygonSize (const QPolygon &points) +{ +#if DEBUG_KP_COMMAND_SIZE && 1 + qCDebug(kpLogCommands) << "kpCommandSize::PolygonSize() points.size=" + << points.size () + << " sizeof(QPoint)=" << sizeof (QPoint); +#endif + + return static_cast (static_cast (points.size ()) * sizeof (QPoint)); +} + diff --git a/commands/kpCommandSize.h b/commands/kpCommandSize.h new file mode 100644 index 0000000..c6594b5 --- /dev/null +++ b/commands/kpCommandSize.h @@ -0,0 +1,87 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpCommandSize_H +#define kpCommandSize_H + + +#include "imagelib/kpImage.h" + + +class QImage; +class QPolygon; +class QString; + +class kpAbstractSelection; + + +// +// Estimates the size of the object being pointed to, in bytes. +// +// This is used by the command history to trim stored commands, once a +// certain amount of memory is used by those commands. +// +class kpCommandSize +{ +public: + // Force 64-bit arithmetic, instead of 32-bit, to prevent overflow + // when determining whether to clip the command history -- we might be + // adding a large number of large sizes. This will eventually help + // KolourPaint support more than 2GB of image data. + // + // For some reason, GCC doesn't warn of accidental casts to smaller types + // (e.g. 32-bit). An easy way to get around this is to change "SizeType" + // to be "double" temporarily and recompile - every time an implicit cast to + // "int" (32-bit) is made, we'll be warned. + // + // TODO: Exhaustively test that we're not accidentally doing intermediate + // calculations using 32-bit in some places (mainly inside + // implementations of kpCommand::size()). + typedef qlonglong SizeType; + + static SizeType PixmapSize (const QImage &image); + static SizeType PixmapSize (const QImage *image); + static SizeType PixmapSize (int width, int height, int depth); + + static SizeType QImageSize (const QImage &image); + static SizeType QImageSize (const QImage *image); + static SizeType QImageSize (int width, int height, int depth); + + static SizeType ImageSize (const kpImage &image); + static SizeType ImageSize (const kpImage *image); + + static SizeType SelectionSize (const kpAbstractSelection &sel); + static SizeType SelectionSize (const kpAbstractSelection *sel); + + static SizeType StringSize (const QString &string); + + static SizeType PolygonSize (const QPolygon &points); +}; + + +#endif // kpCommandSize_H diff --git a/commands/kpMacroCommand.cpp b/commands/kpMacroCommand.cpp new file mode 100644 index 0000000..4221b35 --- /dev/null +++ b/commands/kpMacroCommand.cpp @@ -0,0 +1,133 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COMMAND_HISTORY 0 + + +#include "commands/kpMacroCommand.h" +#include "views/manager/kpViewManager.h" + +#include + +#include + +//--------------------------------------------------------------------- + +kpMacroCommand::kpMacroCommand (const QString &name, kpCommandEnvironment *environ) + : kpNamedCommand (name, environ) +{ +} + +//--------------------------------------------------------------------- + +kpMacroCommand::~kpMacroCommand () +{ + qDeleteAll(m_commandList); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpMacroCommand::size () const +{ +#if DEBUG_KP_COMMAND_HISTORY && 0 + qCDebug(kpLogCommands) << "kpMacroCommand::size()"; +#endif + SizeType s = 0; + +#if DEBUG_KP_COMMAND_HISTORY && 0 + qCDebug(kpLogCommands) << "\tcalculating:"; +#endif + foreach (kpCommand *cmd, m_commandList) + { + #if DEBUG_KP_COMMAND_HISTORY && 0 + qCDebug(kpLogCommands) << "\t\tcurrentSize=" << s << " + " + << cmd->name () << ".size=" << cmd->size (); + #endif + s += cmd->size (); + } + +#if DEBUG_KP_COMMAND_HISTORY && 0 + qCDebug(kpLogCommands) << "\treturning " << s; +#endif + return s; +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +void kpMacroCommand::execute () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpMacroCommand::execute()"; +#endif + + viewManager()->setQueueUpdates(); + + foreach (kpCommand *command, m_commandList) + { + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\texecuting " << command->name(); + #endif + command->execute(); + } + + viewManager()->restoreQueueUpdates(); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +void kpMacroCommand::unexecute () +{ +#if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "kpMacroCommand::unexecute()"; +#endif + + viewManager()->setQueueUpdates(); + + for (int i = m_commandList.count() - 1; i >= 0; i--) + { + #if DEBUG_KP_COMMAND_HISTORY + qCDebug(kpLogCommands) << "\tunexecuting " << m_commandList[i]->name(); + #endif + m_commandList[i]->unexecute(); + } + + viewManager()->restoreQueueUpdates(); +} + +//--------------------------------------------------------------------- + +// public +void kpMacroCommand::addCommand(kpCommand *command) +{ + m_commandList.append(command); +} + +//--------------------------------------------------------------------- diff --git a/commands/kpMacroCommand.h b/commands/kpMacroCommand.h new file mode 100644 index 0000000..84ca09b --- /dev/null +++ b/commands/kpMacroCommand.h @@ -0,0 +1,66 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpMacroCommand_H +#define kpMacroCommand_H + + +#include "commands/kpNamedCommand.h" + +#include + + +class kpMacroCommand : public kpNamedCommand +{ +public: + kpMacroCommand (const QString &name, kpCommandEnvironment *environ); + ~kpMacroCommand () override; + + + // + // kpCommand Interface + // + + SizeType size () const override; + + void execute () override; + void unexecute () override; + + + // + // Interface + // + + void addCommand (kpCommand *command); + +protected: + QList m_commandList; +}; + + +#endif // kpMacroCommand_H diff --git a/commands/kpNamedCommand.cpp b/commands/kpNamedCommand.cpp new file mode 100644 index 0000000..c903626 --- /dev/null +++ b/commands/kpNamedCommand.cpp @@ -0,0 +1,45 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "commands/kpNamedCommand.h" + +//--------------------------------------------------------------------- + +kpNamedCommand::kpNamedCommand (const QString &name, kpCommandEnvironment *environ) + : kpCommand (environ), + m_name (name) +{ +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +QString kpNamedCommand::name () const +{ + return m_name; +} + +//--------------------------------------------------------------------- diff --git a/commands/kpNamedCommand.h b/commands/kpNamedCommand.h new file mode 100644 index 0000000..183e458 --- /dev/null +++ b/commands/kpNamedCommand.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpNamedCommand_H +#define kpNamedCommand_H + + +#include "commands/kpCommand.h" + +#include + + +class kpNamedCommand : public kpCommand +{ +public: + kpNamedCommand (const QString &name, kpCommandEnvironment *environ); + + QString name () const override; + +protected: + QString m_name; +}; + + +#endif // kpNamedCommand_H diff --git a/commands/tools/flow/kpToolFlowCommand.cpp b/commands/tools/flow/kpToolFlowCommand.cpp new file mode 100644 index 0000000..7982735 --- /dev/null +++ b/commands/tools/flow/kpToolFlowCommand.cpp @@ -0,0 +1,140 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_FLOW_COMMAND 0 + + +#include "kpToolFlowCommand.h" + +#include "document/kpDocument.h" +#include "imagelib/kpImage.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" +#include "views/manager/kpViewManager.h" + +#include + + +struct kpToolFlowCommandPrivate +{ + kpImage image; + QRect boundingRect; +}; + + +kpToolFlowCommand::kpToolFlowCommand (const QString &name, kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + d (new kpToolFlowCommandPrivate ()) +{ + d->image = document ()->image (); +} + +kpToolFlowCommand::~kpToolFlowCommand () +{ + delete d; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolFlowCommand::size () const +{ + return ImageSize (d->image); +} + + +// public virtual [base kpCommand] +void kpToolFlowCommand::execute () +{ + swapOldAndNew (); +} + +// public virtual [base kpCommand] +void kpToolFlowCommand::unexecute () +{ + swapOldAndNew (); +} + + +// private +void kpToolFlowCommand::swapOldAndNew () +{ + if (d->boundingRect.isValid ()) + { + const kpImage oldImage = document ()->getImageAt (d->boundingRect); + + document ()->setImageAt (d->image, d->boundingRect.topLeft ()); + + d->image = oldImage; + } +} + +// public +void kpToolFlowCommand::updateBoundingRect (const QPoint &point) +{ + updateBoundingRect (QRect (point, point)); +} + +// public +void kpToolFlowCommand::updateBoundingRect (const QRect &rect) +{ +#if DEBUG_KP_TOOL_FLOW_COMMAND & 0 + qCDebug(kpLogCommands) << "kpToolFlowCommand::updateBoundingRect() existing=" + << d->boundingRect + << " plus=" + << rect; +#endif + d->boundingRect = d->boundingRect.united (rect); +#if DEBUG_KP_TOOL_FLOW_COMMAND & 0 + qCDebug(kpLogCommands) << "\tresult=" << d->boundingRect; +#endif +} + +// public +void kpToolFlowCommand::finalize () +{ + if (d->boundingRect.isValid ()) + { + // Store only the needed part of doc image. + d->image = kpTool::neededPixmap (d->image, d->boundingRect); + } + else + { + d->image = kpImage (); + } +} + +// public +void kpToolFlowCommand::cancel () +{ + if (d->boundingRect.isValid ()) + { + viewManager ()->setFastUpdates (); + document ()->setImageAt (d->image, d->boundingRect.topLeft ()); + viewManager ()->restoreFastUpdates (); + } +} diff --git a/commands/tools/flow/kpToolFlowCommand.h b/commands/tools/flow/kpToolFlowCommand.h new file mode 100644 index 0000000..f63d74c --- /dev/null +++ b/commands/tools/flow/kpToolFlowCommand.h @@ -0,0 +1,64 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_FLOW_COMMAND_H +#define KP_TOOL_FLOW_COMMAND_H + + +#include "commands/kpNamedCommand.h" + + +class QPoint; +class QRect; + + +class kpToolFlowCommand : public kpNamedCommand +{ +public: + kpToolFlowCommand (const QString &name, kpCommandEnvironment *environ); + ~kpToolFlowCommand () override; + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + + // interface for kpToolFlowBase + void updateBoundingRect (const QPoint &point); + void updateBoundingRect (const QRect &rect); + void finalize (); + void cancel (); + +private: + void swapOldAndNew (); + + struct kpToolFlowCommandPrivate * const d; +}; + + +#endif // KP_TOOL_FLOW_COMMAND_H diff --git a/commands/tools/kpToolColorPickerCommand.cpp b/commands/tools/kpToolColorPickerCommand.cpp new file mode 100644 index 0000000..5173fd6 --- /dev/null +++ b/commands/tools/kpToolColorPickerCommand.cpp @@ -0,0 +1,81 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_COLOR_PICKER 0 + + +#include "kpToolColorPickerCommand.h" + +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" + +#include + + +kpToolColorPickerCommand::kpToolColorPickerCommand ( + int mouseButton, + const kpColor &newColor, + const kpColor &oldColor, + kpCommandEnvironment *environ) + + : kpCommand (environ), + m_mouseButton (mouseButton), + m_newColor (newColor), + m_oldColor (oldColor) +{ +} + +kpToolColorPickerCommand::~kpToolColorPickerCommand () = default; + + +// public virtual [base kpCommand] +QString kpToolColorPickerCommand::name () const +{ + return i18n ("Color Picker"); +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolColorPickerCommand::size () const +{ + return 0; +} + + +// public virtual [base kpCommand] +void kpToolColorPickerCommand::execute () +{ + environ ()->setColor (m_mouseButton, m_newColor); +} + +// public virtual [base kpCommand] +void kpToolColorPickerCommand::unexecute () +{ + environ ()->setColor (m_mouseButton, m_oldColor); +} + diff --git a/commands/tools/kpToolColorPickerCommand.h b/commands/tools/kpToolColorPickerCommand.h new file mode 100644 index 0000000..9dca6aa --- /dev/null +++ b/commands/tools/kpToolColorPickerCommand.h @@ -0,0 +1,59 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolColorPickerCommand_H +#define kpToolColorPickerCommand_H + + +#include "imagelib/kpColor.h" +#include "commands/kpCommand.h" + + +class kpToolColorPickerCommand : public kpCommand +{ +public: + kpToolColorPickerCommand (int mouseButton, + const kpColor &newColor, const kpColor &oldColor, + kpCommandEnvironment *environ); + ~kpToolColorPickerCommand () override; + + QString name () const override; + + SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + int m_mouseButton; + kpColor m_newColor; + kpColor m_oldColor; +}; + + +#endif // kpToolColorPickerCommand_H diff --git a/commands/tools/kpToolFloodFillCommand.cpp b/commands/tools/kpToolFloodFillCommand.cpp new file mode 100644 index 0000000..bcd54fb --- /dev/null +++ b/commands/tools/kpToolFloodFillCommand.cpp @@ -0,0 +1,169 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_FLOOD_FILL 0 + + +#include "kpToolFloodFillCommand.h" + +#include "imagelib/kpColor.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "imagelib/kpImage.h" +#include "kpLogCategories.h" + +#include + +#include + +//--------------------------------------------------------------------- + +struct kpToolFloodFillCommandPrivate +{ + kpImage oldImage; + bool fillEntireImage{false}; +}; + +//--------------------------------------------------------------------- + +kpToolFloodFillCommand::kpToolFloodFillCommand (int x, int y, + const kpColor &color, int processedColorSimilarity, + kpCommandEnvironment *environ) + + : kpCommand (environ), + kpFloodFill (document ()->imagePointer (), x, y, color, processedColorSimilarity), + d (new kpToolFloodFillCommandPrivate ()) +{ + d->fillEntireImage = false; +} + +//--------------------------------------------------------------------- + +kpToolFloodFillCommand::~kpToolFloodFillCommand () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +QString kpToolFloodFillCommand::name () const +{ + return i18n ("Flood Fill"); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolFloodFillCommand::size () const +{ + return kpFloodFill::size () + ImageSize (d->oldImage); +} + +//--------------------------------------------------------------------- + +// public +void kpToolFloodFillCommand::setFillEntireImage (bool yes) +{ + d->fillEntireImage = yes; +} + +//--------------------------------------------------------------------- + +// protected virtual [base kpCommand] +void kpToolFloodFillCommand::execute () +{ +#if DEBUG_KP_TOOL_FLOOD_FILL && 1 + qCDebug(kpLogCommands) << "kpToolFloodFillCommand::execute() fillEntireImage=" + << d->fillEntireImage; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + + if (d->fillEntireImage) + { + doc->fill (kpFloodFill::color ()); + } + else + { + QRect rect = kpFloodFill::boundingRect (); + if (rect.isValid ()) + { + QApplication::setOverrideCursor (Qt::WaitCursor); + { + d->oldImage = doc->getImageAt (rect); + + kpFloodFill::fill (); + doc->slotContentsChanged (rect); + } + QApplication::restoreOverrideCursor (); + } + else + { + #if DEBUG_KP_TOOL_FLOOD_FILL && 1 + qCDebug(kpLogCommands) << "\tinvalid boundingRect - must be NOP case"; + #endif + } + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base kpCommand] +void kpToolFloodFillCommand::unexecute () +{ +#if DEBUG_KP_TOOL_FLOOD_FILL && 1 + qCDebug(kpLogCommands) << "kpToolFloodFillCommand::unexecute() fillEntireImage=" + << d->fillEntireImage; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + + if (d->fillEntireImage) + { + doc->fill (kpFloodFill::colorToChange ()); + } + else + { + QRect rect = kpFloodFill::boundingRect (); + if (rect.isValid ()) + { + doc->setImageAt (d->oldImage, rect.topLeft ()); + + d->oldImage = kpImage (); + + doc->slotContentsChanged (rect); + } + } +} + +//--------------------------------------------------------------------- diff --git a/commands/tools/kpToolFloodFillCommand.h b/commands/tools/kpToolFloodFillCommand.h new file mode 100644 index 0000000..ca558a9 --- /dev/null +++ b/commands/tools/kpToolFloodFillCommand.h @@ -0,0 +1,68 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolFloodFillCommand_H +#define kpToolFloodFillCommand_H + + +#include "commands/kpCommand.h" +#include "imagelib/kpFloodFill.h" + + +class kpColor; +class kpCommandEnvironment; + + +struct kpToolFloodFillCommandPrivate; + +class kpToolFloodFillCommand : public kpCommand, public kpFloodFill +{ +public: + kpToolFloodFillCommand (int x, int y, + const kpColor &color, int processedColorSimilarity, + kpCommandEnvironment *environ); + ~kpToolFloodFillCommand () override; + + QString name () const override; + + kpCommandSize::SizeType size () const override; + + // Optimization hack: filling a fresh, unmodified document does not require + // reading any pixels - just set the whole document to + // . + void setFillEntireImage (bool yes = true); + + void execute () override; + void unexecute () override; + +private: + kpToolFloodFillCommandPrivate * const d; +}; + + +#endif // kpToolFloodFillCommand_H diff --git a/commands/tools/polygonal/kpToolPolygonalCommand.cpp b/commands/tools/polygonal/kpToolPolygonalCommand.cpp new file mode 100644 index 0000000..af771d5 --- /dev/null +++ b/commands/tools/polygonal/kpToolPolygonalCommand.cpp @@ -0,0 +1,123 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_POLYGON 0 + + +#include "kpToolPolygonalCommand.h" + +#include "document/kpDocument.h" +#include "kpDefs.h" +#include "imagelib/kpImage.h" + + +struct kpToolPolygonalCommandPrivate +{ + kpToolPolygonalBase::DrawShapeFunc drawShapeFunc{}; + + QPolygon points; + QRect boundingRect; + + kpColor fcolor; + int penWidth{}; + kpColor bcolor; + + kpImage oldImage; +}; + +kpToolPolygonalCommand::kpToolPolygonalCommand (const QString &name, + kpToolPolygonalBase::DrawShapeFunc drawShapeFunc, + const QPolygon &points, + const QRect &boundingRect, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + kpCommandEnvironment *environ) + + : kpNamedCommand (name, environ), + d (new kpToolPolygonalCommandPrivate ()) +{ + d->drawShapeFunc = drawShapeFunc; + + d->points = points; + d->boundingRect = boundingRect; + + d->fcolor = fcolor; + d->penWidth = penWidth; + d->bcolor = bcolor; +} + +kpToolPolygonalCommand::~kpToolPolygonalCommand () +{ + delete d; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolPolygonalCommand::size () const +{ + return PolygonSize (d->points) + + ImageSize (d->oldImage); +} + +// public virtual [base kpCommand] +void kpToolPolygonalCommand::execute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + // Store Undo info. + Q_ASSERT (d->oldImage.isNull ()); + d->oldImage = doc->getImageAt (d->boundingRect); + + // Invoke shape drawing function passed in ctor. + kpImage image = d->oldImage; + + QPolygon pointsTranslated = d->points; + pointsTranslated.translate (-d->boundingRect.x (), -d->boundingRect.y ()); + + (*d->drawShapeFunc) (&image, + pointsTranslated, + d->fcolor, d->penWidth, + d->bcolor, + true/*final shape*/); + + doc->setImageAt (image, d->boundingRect.topLeft ()); +} + +// public virtual [base kpCommand] +void kpToolPolygonalCommand::unexecute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + Q_ASSERT (!d->oldImage.isNull ()); + doc->setImageAt (d->oldImage, d->boundingRect.topLeft ()); + + d->oldImage = kpImage (); +} + diff --git a/commands/tools/polygonal/kpToolPolygonalCommand.h b/commands/tools/polygonal/kpToolPolygonalCommand.h new file mode 100644 index 0000000..7032713 --- /dev/null +++ b/commands/tools/polygonal/kpToolPolygonalCommand.h @@ -0,0 +1,68 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolPolygonalCommand_H +#define kpToolPolygonalCommand_H + + +#include "commands/kpNamedCommand.h" +#include "tools/polygonal/kpToolPolygonalBase.h" + + +class QPolygon; +class QRect; + +class kpColor; + + +// TODO: merge with kpToolRectangularCommand due to code duplication. +class kpToolPolygonalCommand : public kpNamedCommand +{ +public: + // = the bounding rectangle for including . + kpToolPolygonalCommand (const QString &name, + kpToolPolygonalBase::DrawShapeFunc drawShapeFunc, + const QPolygon &points, + const QRect &boundingRect, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + kpCommandEnvironment *environ); + ~kpToolPolygonalCommand () override; + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + struct kpToolPolygonalCommandPrivate * const d; + kpToolPolygonalCommand &operator= (const kpToolPolygonalCommand &) const; +}; + + +#endif // kpToolPolygonalCommand_H diff --git a/commands/tools/rectangular/kpToolRectangularCommand.cpp b/commands/tools/rectangular/kpToolRectangularCommand.cpp new file mode 100644 index 0000000..7cc2734 --- /dev/null +++ b/commands/tools/rectangular/kpToolRectangularCommand.cpp @@ -0,0 +1,126 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_RECTANGULAR_COMMAND 0 + + +#include "kpToolRectangularCommand.h" + +#include "imagelib/kpColor.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "layers/tempImage/kpTempImage.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetFillStyle.h" +#include "widgets/toolbars/options/kpToolWidgetLineWidth.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" +#include "kpLogCategories.h" + + +struct kpToolRectangularCommandPrivate +{ + kpToolRectangularBase::DrawShapeFunc drawShapeFunc{}; + + QRect rect; + + kpColor fcolor; + int penWidth{}; + kpColor bcolor; + + kpImage oldImage; +}; + +kpToolRectangularCommand::kpToolRectangularCommand (const QString &name, + kpToolRectangularBase::DrawShapeFunc drawShapeFunc, + const QRect &rect, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + kpCommandEnvironment *environ) + + : kpNamedCommand (name, environ), + d (new kpToolRectangularCommandPrivate ()) +{ + d->drawShapeFunc = drawShapeFunc; + + d->rect = rect; + + d->fcolor = fcolor; + d->penWidth = penWidth; + d->bcolor = bcolor; +} + +kpToolRectangularCommand::~kpToolRectangularCommand () +{ + delete d; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolRectangularCommand::size () const +{ + return ImageSize (d->oldImage); +} + + +// public virtual [base kpCommand] +void kpToolRectangularCommand::execute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + // Store Undo info. + // OPT: For a pure rectangle, can do better if there is no bcolor, by only + // saving 4 pixmaps corresponding to the pixels dirtied by the 4 edges. + Q_ASSERT (d->oldImage.isNull ()); + d->oldImage = doc->getImageAt (d->rect); + + // Invoke shape drawing function passed in ctor. + kpImage image = d->oldImage; + (*d->drawShapeFunc) (&image, + 0, 0, d->rect.width (), d->rect.height (), + d->fcolor, d->penWidth, + d->bcolor); + + doc->setImageAt (image, d->rect.topLeft ()); +} + +// public virtual [base kpCommand] +void kpToolRectangularCommand::unexecute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + Q_ASSERT (!d->oldImage.isNull ()); + doc->setImageAt (d->oldImage, d->rect.topLeft ()); + + d->oldImage = kpImage (); +} + diff --git a/commands/tools/rectangular/kpToolRectangularCommand.h b/commands/tools/rectangular/kpToolRectangularCommand.h new file mode 100644 index 0000000..5406478 --- /dev/null +++ b/commands/tools/rectangular/kpToolRectangularCommand.h @@ -0,0 +1,62 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_RECTANGULAR_COMMAND_H +#define KP_TOOL_RECTANGULAR_COMMAND_H + + +#include "commands/kpNamedCommand.h" +#include "tools/rectangular/kpToolRectangularBase.h" + + +class kpColor; + + +class kpToolRectangularCommand : public kpNamedCommand +{ +public: + kpToolRectangularCommand (const QString &name, + kpToolRectangularBase::DrawShapeFunc drawShapeFunc, + const QRect &rect, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + kpCommandEnvironment *environ); + ~kpToolRectangularCommand () override; + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + struct kpToolRectangularCommandPrivate * const d; + kpToolRectangularCommand &operator= (const kpToolRectangularCommand &) const; +}; + + +#endif // KP_TOOL_RECTANGULAR_COMMAND_H diff --git a/commands/tools/selection/kpAbstractSelectionContentCommand.cpp b/commands/tools/selection/kpAbstractSelectionContentCommand.cpp new file mode 100644 index 0000000..333d183 --- /dev/null +++ b/commands/tools/selection/kpAbstractSelectionContentCommand.cpp @@ -0,0 +1,69 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpAbstractSelectionContentCommand.h" + +#include "layers/selections/kpAbstractSelection.h" + + +struct kpAbstractSelectionContentCommandPrivate +{ + const kpAbstractSelection *orgSelBorder; +}; + +kpAbstractSelectionContentCommand::kpAbstractSelectionContentCommand ( + const kpAbstractSelection &originalSelBorder, + const QString &name, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + d (new kpAbstractSelectionContentCommandPrivate ()) +{ + Q_ASSERT (!originalSelBorder.hasContent ()); + + d->orgSelBorder = originalSelBorder.clone (); +} + +kpAbstractSelectionContentCommand::~kpAbstractSelectionContentCommand () +{ + delete d->orgSelBorder; + delete d; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpAbstractSelectionContentCommand::size () const +{ + return d->orgSelBorder->size (); +} + + +// public +const kpAbstractSelection *kpAbstractSelectionContentCommand::originalSelection () const +{ + return d->orgSelBorder; +} diff --git a/commands/tools/selection/kpAbstractSelectionContentCommand.h b/commands/tools/selection/kpAbstractSelectionContentCommand.h new file mode 100644 index 0000000..c81889d --- /dev/null +++ b/commands/tools/selection/kpAbstractSelectionContentCommand.h @@ -0,0 +1,71 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpAbstractSelectionContentCommand_H +#define kpAbstractSelectionContentCommand_H + + +#include "commands/kpNamedCommand.h" + + +// Converts a selection border to a selection with content. +// This must be executed before any manipulations can be made +// to a selection. +// +// Its construction and execution always follows that of a +// kpToolSelectionCreateCommand, which must be given a selection with +// no content. +// +// It's always the first subcommand of a kpMacroCommand, with the following +// subcommands being whatever the selection operation is (e.g. movement, +// resizing). +class kpAbstractSelectionContentCommand : public kpNamedCommand +{ +// LOREFACTOR: Pull up more methods into here? Looking at the code, not +// much could be dragged up without unnecessarily complicated +// abstraction. +public: + // must be a border i.e. have no content. + kpAbstractSelectionContentCommand ( + const kpAbstractSelection &originalSelBorder, + const QString &name, + kpCommandEnvironment *environ); + ~kpAbstractSelectionContentCommand () override; + + kpCommandSize::SizeType size () const override; + + // Note: Returned pointer is only valid for as long as this command is + // alive. + const kpAbstractSelection *originalSelection () const; + +private: + struct kpAbstractSelectionContentCommandPrivate * const d; +}; + + +#endif // kpAbstractSelectionContentCommand_H diff --git a/commands/tools/selection/kpToolImageSelectionTransparencyCommand.cpp b/commands/tools/selection/kpToolImageSelectionTransparencyCommand.cpp new file mode 100644 index 0000000..2ef4595 --- /dev/null +++ b/commands/tools/selection/kpToolImageSelectionTransparencyCommand.cpp @@ -0,0 +1,96 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpToolImageSelectionTransparencyCommand.h" + +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "generic/kpSetOverrideCursorSaver.h" +#include "kpLogCategories.h" +#include "layers/selections/image/kpAbstractImageSelection.h" + +#include + +//-------------------------------------------------------------------------------- + +kpToolImageSelectionTransparencyCommand::kpToolImageSelectionTransparencyCommand ( + const QString &name, + const kpImageSelectionTransparency &st, + const kpImageSelectionTransparency &oldST, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + m_st (st), + m_oldST (oldST) +{ +} + +kpToolImageSelectionTransparencyCommand::~kpToolImageSelectionTransparencyCommand () = default; + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolImageSelectionTransparencyCommand::size () const +{ + return 0; +} + + +// public virtual [base kpCommand] +void kpToolImageSelectionTransparencyCommand::execute () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolImageSelectionTransparencyCommand::execute()"; +#endif + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + environ ()->setImageSelectionTransparency (m_st, true/*force colour change*/); + + if (imageSelection ()) { + imageSelection ()->setTransparency (m_st); + } +} + +// public virtual [base kpCommand] +void kpToolImageSelectionTransparencyCommand::unexecute () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolImageSelectionTransparencyCommand::unexecute()"; +#endif + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + environ ()->setImageSelectionTransparency (m_oldST, true/*force colour change*/); + + if (imageSelection ()) { + imageSelection ()->setTransparency (m_oldST); + } +} + diff --git a/commands/tools/selection/kpToolImageSelectionTransparencyCommand.h b/commands/tools/selection/kpToolImageSelectionTransparencyCommand.h new file mode 100644 index 0000000..a4f2d20 --- /dev/null +++ b/commands/tools/selection/kpToolImageSelectionTransparencyCommand.h @@ -0,0 +1,56 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolImageSelectionTransparencyCommand_H +#define kpToolImageSelectionTransparencyCommand_H + + +#include "commands/kpNamedCommand.h" +#include "layers/selections/image/kpImageSelectionTransparency.h" + + +class kpToolImageSelectionTransparencyCommand : public kpNamedCommand +{ +public: + kpToolImageSelectionTransparencyCommand (const QString &name, + const kpImageSelectionTransparency &st, + const kpImageSelectionTransparency &oldST, + kpCommandEnvironment *environ); + ~kpToolImageSelectionTransparencyCommand () override; + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + kpImageSelectionTransparency m_st, m_oldST; +}; + + +#endif // kpToolImageSelectionTransparencyCommand_H diff --git a/commands/tools/selection/kpToolSelectionCreateCommand.cpp b/commands/tools/selection/kpToolSelectionCreateCommand.cpp new file mode 100644 index 0000000..241fd95 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionCreateCommand.cpp @@ -0,0 +1,161 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include "kpLogCategories.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +kpToolSelectionCreateCommand::kpToolSelectionCreateCommand (const QString &name, + const kpAbstractSelection &fromSelection, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + m_fromSelection (nullptr), + m_textRow (0), m_textCol (0) +{ + setFromSelection (fromSelection); +} + +kpToolSelectionCreateCommand::~kpToolSelectionCreateCommand () +{ + delete m_fromSelection; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolSelectionCreateCommand::size () const +{ + return SelectionSize (m_fromSelection); +} + + +// public +const kpAbstractSelection *kpToolSelectionCreateCommand::fromSelection () const +{ + return m_fromSelection; +} + +// public +void kpToolSelectionCreateCommand::setFromSelection (const kpAbstractSelection &fromSelection) +{ + delete m_fromSelection; + m_fromSelection = fromSelection.clone (); +} + +// public virtual [base kpCommand] +void kpToolSelectionCreateCommand::execute () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "kpToolSelectionCreateCommand::execute()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + if (m_fromSelection) + { + #if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "\tusing fromSelection"; + qCDebug(kpLogCommands) << "\t\thave sel=" << doc->selection () << endl; + #endif + kpAbstractImageSelection *imageSel = + dynamic_cast (m_fromSelection); + kpTextSelection *textSel = + dynamic_cast (m_fromSelection); + if (imageSel) + { + if (imageSel->transparency () != environ ()->imageSelectionTransparency ()) { + environ ()->setImageSelectionTransparency (imageSel->transparency ()); + } + } + else if (textSel) + { + if (textSel->textStyle () != environ ()->textStyle ()) { + environ ()->setTextStyle (textSel->textStyle ()); + } + } + else { + Q_ASSERT (!"Unknown selection type"); + } + + viewManager ()->setTextCursorPosition (m_textRow, m_textCol); + doc->setSelection (*m_fromSelection); + + environ ()->somethingBelowTheCursorChanged (); + } +} + +// public virtual [base kpCommand] +void kpToolSelectionCreateCommand::unexecute () +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + if (!doc->selection ()) + { + // Was just a border that got deselected? + if (m_fromSelection && !m_fromSelection->hasContent ()) { + return; + } + + Q_ASSERT (!"kpToolSelectionCreateCommand::unexecute() without sel region"); + return; + } + + m_textRow = viewManager ()->textCursorRow (); + m_textCol = viewManager ()->textCursorCol (); + + doc->selectionDelete (); + + environ ()->somethingBelowTheCursorChanged (); +} + diff --git a/commands/tools/selection/kpToolSelectionCreateCommand.h b/commands/tools/selection/kpToolSelectionCreateCommand.h new file mode 100644 index 0000000..7556b10 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionCreateCommand.h @@ -0,0 +1,62 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolSelectionCreateCommand_H +#define kpToolSelectionCreateCommand_H + + +#include "commands/kpNamedCommand.h" + + +class kpAbstractSelection; + + +class kpToolSelectionCreateCommand : public kpNamedCommand +{ +public: + // (if fromSelection doesn't have a pixmap, it will only recreate the region) + kpToolSelectionCreateCommand (const QString &name, const kpAbstractSelection &fromSelection, + kpCommandEnvironment *environ); + ~kpToolSelectionCreateCommand () override; + + kpCommandSize::SizeType size () const override; + + const kpAbstractSelection *fromSelection () const; + void setFromSelection (const kpAbstractSelection &fromSelection); + + void execute () override; + void unexecute () override; + +private: + kpAbstractSelection *m_fromSelection; + + int m_textRow, m_textCol; +}; + + +#endif // kpToolSelectionCreateCommand_H diff --git a/commands/tools/selection/kpToolSelectionDestroyCommand.cpp b/commands/tools/selection/kpToolSelectionDestroyCommand.cpp new file mode 100644 index 0000000..2be17d8 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionDestroyCommand.cpp @@ -0,0 +1,176 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpToolSelectionDestroyCommand.h" +#include "kpLogCategories.h" +#include "layers/selections/kpAbstractSelection.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "views/manager/kpViewManager.h" + +//--------------------------------------------------------------------- + +kpToolSelectionDestroyCommand::kpToolSelectionDestroyCommand (const QString &name, + bool pushOntoDocument, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + m_pushOntoDocument (pushOntoDocument), + m_oldSelectionPtr (nullptr), + m_textRow(0), m_textCol(0) +{ +} + +//--------------------------------------------------------------------- + +kpToolSelectionDestroyCommand::~kpToolSelectionDestroyCommand () +{ + delete m_oldSelectionPtr; +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolSelectionDestroyCommand::size () const +{ + return ImageSize (m_oldDocImage) + + SelectionSize (m_oldSelectionPtr); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +void kpToolSelectionDestroyCommand::execute () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "kpToolSelectionDestroyCommand::execute () CALLED"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + Q_ASSERT (doc->selection ()); + + m_textRow = viewManager ()->textCursorRow (); + m_textCol = viewManager ()->textCursorCol (); + + Q_ASSERT (!m_oldSelectionPtr); + m_oldSelectionPtr = doc->selection ()->clone (); + + if (m_pushOntoDocument) + { + m_oldDocImage = doc->getImageAt (doc->selection ()->boundingRect ()); + doc->selectionPushOntoDocument (); + } + else { + doc->selectionDelete (); + } + + environ ()->somethingBelowTheCursorChanged (); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +void kpToolSelectionDestroyCommand::unexecute () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "kpToolSelectionDestroyCommand::unexecute () CALLED"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + if (doc->selection ()) + { + // not error because it's possible that the user dragged out a new + // region (without pulling image), and then CTRL+Z + #if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "kpToolSelectionDestroyCommand::unexecute() already has sel region"; + #endif + + if (doc->selection ()->hasContent ()) + { + Q_ASSERT (!"kpToolSelectionDestroyCommand::unexecute() already has sel content"); + return; + } + } + + Q_ASSERT (m_oldSelectionPtr); + + if (m_pushOntoDocument) + { + #if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "\tunpush oldDocImage onto doc first"; + #endif + doc->setImageAt (m_oldDocImage, m_oldSelectionPtr->topLeft ()); + } + +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "\tsetting selection to: rect=" << m_oldSelectionPtr->boundingRect () + << " hasContent=" << m_oldSelectionPtr->hasContent (); +#endif + kpAbstractImageSelection *imageSel = + dynamic_cast (m_oldSelectionPtr); + kpTextSelection *textSel = + dynamic_cast (m_oldSelectionPtr); + if (imageSel) + { + if (imageSel->transparency () != environ ()->imageSelectionTransparency ()) { + environ ()->setImageSelectionTransparency (imageSel->transparency ()); + } + if (dynamic_cast (doc->selection())) { + doc->selectionPushOntoDocument(); + } + } + else if (textSel) + { + if (textSel->textStyle () != environ ()->textStyle ()) { + environ ()->setTextStyle (textSel->textStyle ()); + } + if (dynamic_cast (doc->selection())) { + doc->selectionPushOntoDocument(); + } + } + else { + Q_ASSERT (!"Unknown selection type"); + } + + viewManager ()->setTextCursorPosition (m_textRow, m_textCol); + doc->setSelection (*m_oldSelectionPtr); + + environ ()->somethingBelowTheCursorChanged (); + + delete m_oldSelectionPtr; + m_oldSelectionPtr = nullptr; +} + diff --git a/commands/tools/selection/kpToolSelectionDestroyCommand.h b/commands/tools/selection/kpToolSelectionDestroyCommand.h new file mode 100644 index 0000000..0639945 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionDestroyCommand.h @@ -0,0 +1,61 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolSelectionDestroyCommand_H +#define kpToolSelectionDestroyCommand_H + + +#include "imagelib/kpImage.h" +#include "commands/kpNamedCommand.h" + + +class kpAbstractSelection; + + +class kpToolSelectionDestroyCommand : public kpNamedCommand +{ +public: + kpToolSelectionDestroyCommand (const QString &name, bool pushOntoDocument, + kpCommandEnvironment *environ); + ~kpToolSelectionDestroyCommand () override; + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +private: + bool m_pushOntoDocument; + kpImage m_oldDocImage; + kpAbstractSelection *m_oldSelectionPtr; + + int m_textRow, m_textCol; +}; + + +#endif // kpToolSelectionDestroyCommand_H diff --git a/commands/tools/selection/kpToolSelectionMoveCommand.cpp b/commands/tools/selection/kpToolSelectionMoveCommand.cpp new file mode 100644 index 0000000..00904f3 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionMoveCommand.cpp @@ -0,0 +1,219 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpToolSelectionMoveCommand.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/manager/kpViewManager.h" + +#include "kpLogCategories.h" + +//-------------------------------------------------------------------------------- + +kpToolSelectionMoveCommand::kpToolSelectionMoveCommand (const QString &name, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ) +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + Q_ASSERT (doc->selection ()); + + m_startPoint = m_endPoint = doc->selection ()->topLeft (); +} + +kpToolSelectionMoveCommand::~kpToolSelectionMoveCommand () = default; + + +// public +kpAbstractSelection *kpToolSelectionMoveCommand::originalSelectionClone () const +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + Q_ASSERT (doc->selection ()); + + kpAbstractSelection *selection = doc->selection ()->clone (); + selection->moveTo (m_startPoint); + + return selection; +} + + +// public virtual [base kpComand] +kpCommandSize::SizeType kpToolSelectionMoveCommand::size () const +{ + return ImageSize (m_oldDocumentImage) + + PolygonSize (m_copyOntoDocumentPoints); +} + + +// public virtual [base kpCommand] +void kpToolSelectionMoveCommand::execute () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolSelectionMoveCommand::execute()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + kpAbstractSelection *sel = doc->selection (); + // Must have content before it can be moved. + Q_ASSERT (sel && sel->hasContent ()); + + kpViewManager *vm = viewManager (); + Q_ASSERT (vm); + + vm->setQueueUpdates (); + { + for (const auto &p : m_copyOntoDocumentPoints) + { + sel->moveTo (p); + doc->selectionCopyOntoDocument (); + } + + sel->moveTo (m_endPoint); + + environ ()->somethingBelowTheCursorChanged (); + } + vm->restoreQueueUpdates (); +} + +// public virtual [base kpCommand] +void kpToolSelectionMoveCommand::unexecute () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolSelectionMoveCommand::unexecute()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + kpAbstractSelection *sel = doc->selection (); + // Must have content before it can be un-moved. + Q_ASSERT (sel && sel->hasContent ()); + + kpViewManager *vm = viewManager (); + Q_ASSERT (vm); + + vm->setQueueUpdates (); + + if (!m_oldDocumentImage.isNull ()) { + doc->setImageAt (m_oldDocumentImage, m_documentBoundingRect.topLeft ()); + } + +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "\tmove to startPoint=" << m_startPoint; +#endif + sel->moveTo (m_startPoint); + + environ ()->somethingBelowTheCursorChanged (); + + vm->restoreQueueUpdates (); +} + +// public +void kpToolSelectionMoveCommand::moveTo (const QPoint &point, bool moveLater) +{ +#if DEBUG_KP_TOOL_SELECTION && 0 + qCDebug(kpLogCommands) << "kpToolSelectionMoveCommand::moveTo" << point + << " moveLater=" << moveLater; +#endif + + if (!moveLater) + { + kpDocument *doc = document (); + Q_ASSERT (doc); + + kpAbstractSelection *sel = doc->selection (); + // Must have content before it can be moved. + Q_ASSERT (sel && sel->hasContent ()); + + if (point == sel->topLeft ()) { + return; + } + + sel->moveTo (point); + } + + m_endPoint = point; +} + +// public +void kpToolSelectionMoveCommand::moveTo (int x, int y, bool moveLater) +{ + moveTo (QPoint (x, y), moveLater); +} + +// public +void kpToolSelectionMoveCommand::copyOntoDocument () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "kpToolSelectionMoveCommand::copyOntoDocument()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + kpAbstractSelection *sel = doc->selection (); + // Must have content before we allow it be stamped onto the document, + // to be consistent with the requirement on other selection operations. + Q_ASSERT (sel && sel->hasContent ()); + + if (m_oldDocumentImage.isNull ()) { + m_oldDocumentImage = doc->image (); + } + + QRect selBoundingRect = sel->boundingRect (); + m_documentBoundingRect = m_documentBoundingRect.united (selBoundingRect); + + doc->selectionCopyOntoDocument (); + + m_copyOntoDocumentPoints.putPoints (m_copyOntoDocumentPoints.count (), + 1, + selBoundingRect.x (), + selBoundingRect.y ()); +} + +// public +void kpToolSelectionMoveCommand::finalize () +{ + if (!m_oldDocumentImage.isNull () && !m_documentBoundingRect.isNull ()) + { + m_oldDocumentImage = kpTool::neededPixmap (m_oldDocumentImage, + m_documentBoundingRect); + } +} + diff --git a/commands/tools/selection/kpToolSelectionMoveCommand.h b/commands/tools/selection/kpToolSelectionMoveCommand.h new file mode 100644 index 0000000..c6e61f0 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionMoveCommand.h @@ -0,0 +1,74 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolSelectionMoveCommand_H +#define kpToolSelectionMoveCommand_H + + +#include +#include +#include + +#include "imagelib/kpImage.h" +#include "commands/kpNamedCommand.h" + + +class kpAbstractSelection; + + +class kpToolSelectionMoveCommand : public kpNamedCommand +{ +public: + kpToolSelectionMoveCommand (const QString &name, kpCommandEnvironment *environ); + ~kpToolSelectionMoveCommand () override; + + kpAbstractSelection *originalSelectionClone () const; + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + + void moveTo (const QPoint &point, bool moveLater = false); + void moveTo (int x, int y, bool moveLater = false); + void copyOntoDocument (); + void finalize (); + +private: + QPoint m_startPoint, m_endPoint; + + kpImage m_oldDocumentImage; + + // area of document affected (not the bounding rect of the sel) + QRect m_documentBoundingRect; + + QPolygon m_copyOntoDocumentPoints; +}; + + +#endif // kpToolSelectionMoveCommand_H diff --git a/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.cpp b/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.cpp new file mode 100644 index 0000000..bd48644 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.cpp @@ -0,0 +1,140 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpToolSelectionPullFromDocumentCommand.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "document/kpDocument.h" +#include "views/manager/kpViewManager.h" +#include "kpLogCategories.h" + + +kpToolSelectionPullFromDocumentCommand::kpToolSelectionPullFromDocumentCommand ( + const kpAbstractImageSelection &originalSelBorder, + const kpColor &backgroundColor, + const QString &name, + kpCommandEnvironment *environ) + : kpAbstractSelectionContentCommand (originalSelBorder, name, environ), + m_backgroundColor (backgroundColor) +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolSelectionPullFromDocumentCommand::() environ=" + << environ; +#endif +} + +kpToolSelectionPullFromDocumentCommand::~kpToolSelectionPullFromDocumentCommand () = default; + + +// public virtual [base kpCommand] +void kpToolSelectionPullFromDocumentCommand::execute () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolSelectionPullFromDocumentCommand::execute()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + kpViewManager *vm = viewManager (); + Q_ASSERT (vm); + + vm->setQueueUpdates (); + { + // + // Recreate border + // + + // The previously executed command is required to have been a + // kpToolSelectionCreateCommand, which must have been given an image + // selection with no content. + // + // However, there is a tricky case. Suppose we are called for the first + // time, where the above precondition holds. We would add content + // to the selection as expected. But the user then undoes (CTRL+Z) the + // operation, calling unexecute(). There is now no content again. + // Since selection is only a border, the user can freely deselect it + // and/or select another region without changing the command history + // or document modified state. Therefore, if they now call us again + // by redoing (CTRL+Shift+Z), there is potentially no selection at all + // or it is at an arbitrary location. + // + // This assertion covers all 3 possibilities: + // + // 1. First call: image selection with no content + // 2. Later calls: + // a) no image selection (due to deselection) + // b) image selection with no content, at an arbitrary location + Q_ASSERT (!imageSelection () || !imageSelection ()->hasContent ()); + + const auto *originalImageSel = dynamic_cast + (originalSelection ()); + + if (originalImageSel->transparency () != + environ ()->imageSelectionTransparency ()) + { + environ ()->setImageSelectionTransparency (originalImageSel->transparency ()); + } + + doc->setSelection (*originalSelection ()); + + + // + // Add content + // + + doc->imageSelectionPullFromDocument (m_backgroundColor); + } + vm->restoreQueueUpdates (); +} + +// public virtual [base kpCommand] +void kpToolSelectionPullFromDocumentCommand::unexecute () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolSelectionPullFromDocumentCommand::unexecute()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + // Must have selection image content. + Q_ASSERT (doc->imageSelection () && doc->imageSelection ()->hasContent ()); + + + // We can have faith that this is the state of the selection after + // execute(), rather than after the user tried to throw us off by + // simply selecting another region as to do that, a destroy command + // must have been used. + doc->selectionCopyOntoDocument (false/*use opaque pixmap*/); + doc->imageSelection ()->deleteContent (); +} + diff --git a/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.h b/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.h new file mode 100644 index 0000000..203dcbf --- /dev/null +++ b/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.h @@ -0,0 +1,59 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolSelectionPullFromDocumentCommand_H +#define kpToolSelectionPullFromDocumentCommand_H + + +#include "kpAbstractSelectionContentCommand.h" +#include "imagelib/kpColor.h" + + +class kpAbstractImageSelection; + + +class kpToolSelectionPullFromDocumentCommand : + public kpAbstractSelectionContentCommand +{ +public: + kpToolSelectionPullFromDocumentCommand ( + const kpAbstractImageSelection &originalSelBorder, + const kpColor &backgroundColor, + const QString &name, + kpCommandEnvironment *environ); + ~kpToolSelectionPullFromDocumentCommand () override; + + void execute () override; + void unexecute () override; + +private: + kpColor m_backgroundColor; +}; + + +#endif // kpToolSelectionPullFromDocumentCommand_H diff --git a/commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp b/commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp new file mode 100644 index 0000000..da772a1 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp @@ -0,0 +1,257 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpToolSelectionResizeScaleCommand.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "layers/selections/text/kpTextSelection.h" +#include "kpLogCategories.h" + +#include +#include +#include + +#include + +//-------------------------------------------------------------------------------- + +kpToolSelectionResizeScaleCommand::kpToolSelectionResizeScaleCommand ( + kpCommandEnvironment *environ) + : kpNamedCommand (environ->textSelection () ? + i18n ("Text: Resize Box") : + i18n ("Selection: Smooth Scale"), + environ), + m_smoothScaleTimer (new QTimer (this)) +{ + m_originalSelectionPtr = selection ()->clone (); + + m_newTopLeft = selection ()->topLeft (); + m_newWidth = selection ()->width (); + m_newHeight = selection ()->height (); + + m_smoothScaleTimer->setSingleShot (true); + connect (m_smoothScaleTimer, &QTimer::timeout, this, [this]{resizeScaleAndMove(false);}); +} + +kpToolSelectionResizeScaleCommand::~kpToolSelectionResizeScaleCommand () +{ + delete m_originalSelectionPtr; +} + + +// public virtual +kpCommandSize::SizeType kpToolSelectionResizeScaleCommand::size () const +{ + return SelectionSize (m_originalSelectionPtr); +} + + +// public +const kpAbstractSelection *kpToolSelectionResizeScaleCommand::originalSelection () const +{ + return m_originalSelectionPtr; +} + + +// public +QPoint kpToolSelectionResizeScaleCommand::topLeft () const +{ + return m_newTopLeft; +} + +// public +void kpToolSelectionResizeScaleCommand::moveTo (const QPoint &point) +{ + if (point == m_newTopLeft) { + return; + } + + m_newTopLeft = point; + selection ()->moveTo (m_newTopLeft); +} + + +// public +int kpToolSelectionResizeScaleCommand::width () const +{ + return m_newWidth; +} + +// public +int kpToolSelectionResizeScaleCommand::height () const +{ + return m_newHeight; +} + +// public +void kpToolSelectionResizeScaleCommand::resize (int width, int height, + bool delayed) +{ + if (width == m_newWidth && height == m_newHeight) { + return; + } + + m_newWidth = width; + m_newHeight = height; + + resizeScaleAndMove (delayed); +} + + +// public +void kpToolSelectionResizeScaleCommand::resizeAndMoveTo (int width, int height, + const QPoint &point, + bool delayed) +{ + if (width == m_newWidth && height == m_newHeight && + point == m_newTopLeft) + { + return; + } + + m_newWidth = width; + m_newHeight = height; + m_newTopLeft = point; + + resizeScaleAndMove (delayed); +} + + +// protected +void kpToolSelectionResizeScaleCommand::killSmoothScaleTimer () +{ + m_smoothScaleTimer->stop (); +} + + +// protected +void kpToolSelectionResizeScaleCommand::resizeScaleAndMove (bool delayed) +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "kpToolSelectionResizeScaleCommand::resizeScaleAndMove(delayed=" + << delayed << ")"; +#endif + + killSmoothScaleTimer (); + + kpAbstractSelection *newSelPtr = nullptr; + + if (textSelection ()) + { + Q_ASSERT (dynamic_cast (m_originalSelectionPtr)); + auto *orgTextSel = dynamic_cast (m_originalSelectionPtr); + + newSelPtr = orgTextSel->resized (m_newWidth, m_newHeight); + } + else + { + Q_ASSERT (dynamic_cast (m_originalSelectionPtr)); + auto *imageSel = dynamic_cast (m_originalSelectionPtr); + + newSelPtr = new kpRectangularImageSelection ( + QRect (imageSel->x (), + imageSel->y (), + m_newWidth, + m_newHeight), + kpPixmapFX::scale (imageSel->baseImage (), + m_newWidth, m_newHeight, + !delayed/*if not delayed, smooth*/), + imageSel->transparency ()); + + if (delayed) + { + // Call self (once) with delayed==false in 200ms + m_smoothScaleTimer->start (200/*ms*/); + } + } + + Q_ASSERT (newSelPtr); + newSelPtr->moveTo (m_newTopLeft); + + document ()->setSelection (*newSelPtr); + + delete newSelPtr; +} + + +// public +void kpToolSelectionResizeScaleCommand::finalize () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogCommands) << "kpToolSelectionResizeScaleCommand::finalize()" + << " smoothScaleTimer->isActive=" + << m_smoothScaleTimer->isActive (); +#endif + + // Make sure the selection contains the final image and the timer won't + // fire afterwards. + if (m_smoothScaleTimer->isActive ()) + { + resizeScaleAndMove (); + Q_ASSERT (!m_smoothScaleTimer->isActive ()); + } +} + + +// public virtual [base kpToolResizeScaleCommand] +void kpToolSelectionResizeScaleCommand::execute () +{ + QApplication::setOverrideCursor (Qt::WaitCursor); + + killSmoothScaleTimer (); + + resizeScaleAndMove (); + + environ ()->somethingBelowTheCursorChanged (); + + QApplication::restoreOverrideCursor (); +} + +// public virtual [base kpToolResizeScaleCommand] +void kpToolSelectionResizeScaleCommand::unexecute () +{ + QApplication::setOverrideCursor (Qt::WaitCursor); + + killSmoothScaleTimer (); + + document ()->setSelection (*m_originalSelectionPtr); + + environ ()->somethingBelowTheCursorChanged (); + + QApplication::restoreOverrideCursor (); +} + + diff --git a/commands/tools/selection/kpToolSelectionResizeScaleCommand.h b/commands/tools/selection/kpToolSelectionResizeScaleCommand.h new file mode 100644 index 0000000..426b768 --- /dev/null +++ b/commands/tools/selection/kpToolSelectionResizeScaleCommand.h @@ -0,0 +1,104 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolSelectionResizeScaleCommand_H +#define kpToolSelectionResizeScaleCommand_H + + +#include +#include + +#include "commands/kpNamedCommand.h" + + +class QTimer; + +class kpAbstractSelection; + + +// You could subclass kpToolResizeScaleCommand and/or +// kpToolSelectionMoveCommand instead if want a disaster. +// This is different to kpToolResizeScaleCommand in that: +// +// 1. This only works for selections. +// 2. This is designed for the size and position to change several times +// before execute(). +// +// REFACTOR: Later: I take that all back. We should merge with +// kpToolResizeScaleCommand to reduce code duplication. +class kpToolSelectionResizeScaleCommand : public QObject, + public kpNamedCommand +{ +Q_OBJECT + +public: + kpToolSelectionResizeScaleCommand (kpCommandEnvironment *environ); + ~kpToolSelectionResizeScaleCommand () override; + + kpCommandSize::SizeType size () const override; + +public: + const kpAbstractSelection *originalSelection () const; + + QPoint topLeft () const; + void moveTo (const QPoint &point); + + int width () const; + int height () const; + void resize (int width, int height, bool delayed = false); + + // (equivalent to resize() followed by moveTo() but faster) + void resizeAndMoveTo (int width, int height, const QPoint &point, + bool delayed = false); + +protected: + void killSmoothScaleTimer (); + + // If , does a fast, low-quality scale and then calls itself + // with unset for a smooth scale, a short time later. + // If acting on a text box, is ignored. + void resizeScaleAndMove (bool delayed = false); + +public: + void finalize (); + +public: + void execute () override; + void unexecute () override; + +protected: + kpAbstractSelection *m_originalSelectionPtr; + + QPoint m_newTopLeft; + int m_newWidth, m_newHeight; + + QTimer *m_smoothScaleTimer; +}; + + +#endif // kpToolSelectionResizeScaleCommand_H diff --git a/commands/tools/selection/text/kpToolTextBackspaceCommand.cpp b/commands/tools/selection/text/kpToolTextBackspaceCommand.cpp new file mode 100644 index 0000000..03b3cc1 --- /dev/null +++ b/commands/tools/selection/text/kpToolTextBackspaceCommand.cpp @@ -0,0 +1,152 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "kpToolTextBackspaceCommand.h" + +#include "layers/selections/text/kpTextSelection.h" +#include "views/manager/kpViewManager.h" + +#include + + +kpToolTextBackspaceCommand::kpToolTextBackspaceCommand (const QString &name, + int row, int col, Action action, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + m_row (row), m_col (col), + m_numBackspaces (0) +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + if (action == AddBackspaceNow) { + addBackspace (); + } +} + +kpToolTextBackspaceCommand::~kpToolTextBackspaceCommand () = default; + + +// public +void kpToolTextBackspaceCommand::addBackspace () +{ + QList textLines = textSelection ()->textLines (); + + if (m_col > 0) + { + m_deletedText.prepend (textLines [m_row][m_col - 1]); + + textLines [m_row] = textLines [m_row].left (m_col - 1) + + textLines [m_row].mid (m_col); + m_col--; + } + else + { + if (m_row > 0) + { + int newCursorRow = m_row - 1; + int newCursorCol = textLines [newCursorRow].length (); + + m_deletedText.prepend ('\n'); + + textLines [newCursorRow] += textLines [m_row]; + + textLines.erase (textLines.begin () + m_row); + + m_row = newCursorRow; + m_col = newCursorCol; + } + } + + textSelection ()->setTextLines (textLines); + + viewManager ()->setTextCursorPosition (m_row, m_col); + + m_numBackspaces++; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolTextBackspaceCommand::size () const +{ + return static_cast + (static_cast (m_deletedText.length ()) * sizeof (QChar)); +} + + +// public virtual [base kpCommand] +void kpToolTextBackspaceCommand::execute () +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + m_deletedText.clear (); + int oldNumBackspaces = m_numBackspaces; + m_numBackspaces = 0; + + for (int i = 0; i < oldNumBackspaces; i++) { + addBackspace (); + } +} + +// public virtual [base kpCommand] +void kpToolTextBackspaceCommand::unexecute () +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + QList textLines = textSelection ()->textLines (); + + for (auto && i : m_deletedText) + { + if (i == '\n') + { + const QString rightHalf = textLines [m_row].mid (m_col); + + textLines [m_row].truncate (m_col); + textLines.insert (textLines.begin () + m_row + 1, rightHalf); + + m_row++; + m_col = 0; + } + else + { + const QString leftHalf = textLines [m_row].left (m_col); + const QString rightHalf = textLines [m_row].mid (m_col); + + textLines [m_row] = leftHalf + i + rightHalf; + m_col++; + } + } + + m_deletedText.clear (); + + textSelection ()->setTextLines (textLines); + + viewManager ()->setTextCursorPosition (m_row, m_col); +} + diff --git a/commands/tools/selection/text/kpToolTextBackspaceCommand.h b/commands/tools/selection/text/kpToolTextBackspaceCommand.h new file mode 100644 index 0000000..e728b40 --- /dev/null +++ b/commands/tools/selection/text/kpToolTextBackspaceCommand.h @@ -0,0 +1,64 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_TEXT_BACKSPACE_COMMAND_H +#define KP_TOOL_TEXT_BACKSPACE_COMMAND_H + + +#include "commands/kpNamedCommand.h" + + +class kpToolTextBackspaceCommand : public kpNamedCommand +{ +public: + enum Action + { + DontAddBackspaceYet, + AddBackspaceNow + }; + + kpToolTextBackspaceCommand (const QString &name, + int row, int col, Action action, + kpCommandEnvironment *environ); + ~kpToolTextBackspaceCommand () override; + + void addBackspace (); + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +protected: + int m_row, m_col; + int m_numBackspaces; + QString m_deletedText; +}; + + +#endif // KP_TOOL_TEXT_BACKSPACE_COMMAND_H diff --git a/commands/tools/selection/text/kpToolTextChangeStyleCommand.cpp b/commands/tools/selection/text/kpToolTextChangeStyleCommand.cpp new file mode 100644 index 0000000..1e9a73a --- /dev/null +++ b/commands/tools/selection/text/kpToolTextChangeStyleCommand.cpp @@ -0,0 +1,96 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "kpToolTextChangeStyleCommand.h" + +#include "environments/commands/kpCommandEnvironment.h" +#include "layers/selections/text/kpTextSelection.h" + +#include "kpLogCategories.h" + + +kpToolTextChangeStyleCommand::kpToolTextChangeStyleCommand (const QString &name, + const kpTextStyle &newTextStyle, const kpTextStyle &oldTextStyle, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + m_newTextStyle (newTextStyle), + m_oldTextStyle (oldTextStyle) +{ +} + +kpToolTextChangeStyleCommand::~kpToolTextChangeStyleCommand () = default; + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolTextChangeStyleCommand::size () const +{ + return 0; +} + + +// public virtual [base kpCommand] +void kpToolTextChangeStyleCommand::execute () +{ +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogCommands) << "kpToolTextChangeStyleCommand::execute()" + << " font=" << m_newTextStyle.fontFamily () + << " fontSize=" << m_newTextStyle.fontSize () + << " isBold=" << m_newTextStyle.isBold () + << " isItalic=" << m_newTextStyle.isItalic () + << " isUnderline=" << m_newTextStyle.isUnderline () + << " isStrikeThru=" << m_newTextStyle.isStrikeThru (); +#endif + + environ ()->setTextStyle (m_newTextStyle); + + if (textSelection ()) { + textSelection ()->setTextStyle (m_newTextStyle); + } +} + +// public virtual [base kpCommand] +void kpToolTextChangeStyleCommand::unexecute () +{ +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogCommands) << "kpToolTextChangeStyleCommand::unexecute()" + << " font=" << m_newTextStyle.fontFamily () + << " fontSize=" << m_newTextStyle.fontSize () + << " isBold=" << m_newTextStyle.isBold () + << " isItalic=" << m_newTextStyle.isItalic () + << " isUnderline=" << m_newTextStyle.isUnderline () + << " isStrikeThru=" << m_newTextStyle.isStrikeThru (); +#endif + + environ ()->setTextStyle (m_oldTextStyle); + + if (textSelection ()) + textSelection ()->setTextStyle (m_oldTextStyle); +} + diff --git a/commands/tools/selection/text/kpToolTextChangeStyleCommand.h b/commands/tools/selection/text/kpToolTextChangeStyleCommand.h new file mode 100644 index 0000000..b1ad7ac --- /dev/null +++ b/commands/tools/selection/text/kpToolTextChangeStyleCommand.h @@ -0,0 +1,55 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_TEXT_CHANGE_STYLE_COMMAND_H +#define KP_TOOL_TEXT_CHANGE_STYLE_COMMAND_H + + +#include "commands/kpNamedCommand.h" +#include "layers/selections/text/kpTextStyle.h" + + +class kpToolTextChangeStyleCommand : public kpNamedCommand +{ +public: + kpToolTextChangeStyleCommand (const QString &name, + const kpTextStyle &newTextStyle, const kpTextStyle &oldTextStyle, + kpCommandEnvironment *environ); + ~kpToolTextChangeStyleCommand () override; + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +protected: + kpTextStyle m_newTextStyle, m_oldTextStyle; +}; + + +#endif // KP_TOOL_TEXT_CHANGE_STYLE_COMMAND_H diff --git a/commands/tools/selection/text/kpToolTextDeleteCommand.cpp b/commands/tools/selection/text/kpToolTextDeleteCommand.cpp new file mode 100644 index 0000000..459657c --- /dev/null +++ b/commands/tools/selection/text/kpToolTextDeleteCommand.cpp @@ -0,0 +1,140 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "kpToolTextDeleteCommand.h" + +#include "layers/selections/text/kpTextSelection.h" +#include "views/manager/kpViewManager.h" + +#include + + +kpToolTextDeleteCommand::kpToolTextDeleteCommand (const QString &name, + int row, int col, Action action, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + m_row (row), m_col (col), + m_numDeletes (0) +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + if (action == AddDeleteNow) { + addDelete (); + } +} + +kpToolTextDeleteCommand::~kpToolTextDeleteCommand () = default; + + +// public +void kpToolTextDeleteCommand::addDelete () +{ + QList textLines = textSelection ()->textLines (); + + if (m_col < static_cast (textLines [m_row].length ())) + { + m_deletedText.prepend (textLines [m_row][m_col]); + + textLines [m_row] = textLines [m_row].left (m_col) + + textLines [m_row].mid (m_col + 1); + } + else + { + if (m_row < static_cast (textLines.size () - 1)) + { + m_deletedText.prepend ('\n'); + + textLines [m_row] += textLines [m_row + 1]; + textLines.erase (textLines.begin () + m_row + 1); + } + } + + textSelection ()->setTextLines (textLines); + + viewManager ()->setTextCursorPosition (m_row, m_col); + + m_numDeletes++; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolTextDeleteCommand::size () const +{ + return static_cast + (static_cast (m_deletedText.length ()) * sizeof (QChar)); +} + + +// public virtual [base kpCommand] +void kpToolTextDeleteCommand::execute () +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + m_deletedText.clear (); + int oldNumDeletes = m_numDeletes; + m_numDeletes = 0; + + for (int i = 0; i < oldNumDeletes; i++) { + addDelete (); + } +} + +// public virtual [base kpCommand] +void kpToolTextDeleteCommand::unexecute () +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + QList textLines = textSelection ()->textLines (); + + for (auto && i : m_deletedText) + { + if (i == '\n') + { + const QString rightHalf = textLines [m_row].mid (m_col); + + textLines [m_row].truncate (m_col); + textLines.insert (textLines.begin () + m_row + 1, rightHalf); + } + else + { + const QString leftHalf = textLines [m_row].left (m_col); + const QString rightHalf = textLines [m_row].mid (m_col); + + textLines [m_row] = leftHalf + i + rightHalf; + } + } + + m_deletedText.clear (); + + textSelection ()->setTextLines (textLines); + + viewManager ()->setTextCursorPosition (m_row, m_col); +} + diff --git a/commands/tools/selection/text/kpToolTextDeleteCommand.h b/commands/tools/selection/text/kpToolTextDeleteCommand.h new file mode 100644 index 0000000..c1d8cdd --- /dev/null +++ b/commands/tools/selection/text/kpToolTextDeleteCommand.h @@ -0,0 +1,64 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_TEXT_DELETE_COMMAND_H +#define KP_TOOL_TEXT_DELETE_COMMAND_H + + +#include "commands/kpNamedCommand.h" + + +class kpToolTextDeleteCommand : public kpNamedCommand +{ +public: + enum Action + { + DontAddDeleteYet, + AddDeleteNow + }; + + kpToolTextDeleteCommand (const QString &name, + int row, int col, Action action, + kpCommandEnvironment *environ); + ~kpToolTextDeleteCommand () override; + + void addDelete (); + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +protected: + int m_row, m_col; + int m_numDeletes; + QString m_deletedText; +}; + + +#endif // KP_TOOL_TEXT_DELETE_COMMAND_H diff --git a/commands/tools/selection/text/kpToolTextEnterCommand.cpp b/commands/tools/selection/text/kpToolTextEnterCommand.cpp new file mode 100644 index 0000000..c341c77 --- /dev/null +++ b/commands/tools/selection/text/kpToolTextEnterCommand.cpp @@ -0,0 +1,126 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "kpToolTextEnterCommand.h" + +#include "layers/selections/text/kpTextSelection.h" +#include "views/manager/kpViewManager.h" + +#include + + +kpToolTextEnterCommand::kpToolTextEnterCommand (const QString &name, + int row, int col, Action action, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + m_row (row), m_col (col), + m_numEnters (0) +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + if (action == AddEnterNow) { + addEnter (); + } +} + +kpToolTextEnterCommand::~kpToolTextEnterCommand () = default; + + +// public +void kpToolTextEnterCommand::addEnter () +{ + QList textLines = textSelection ()->textLines (); + + const QString rightHalf = textLines [m_row].mid (m_col); + + textLines [m_row].truncate (m_col); + textLines.insert (textLines.begin () + m_row + 1, rightHalf); + + textSelection ()->setTextLines (textLines); + + m_row++; + m_col = 0; + + viewManager ()->setTextCursorPosition (m_row, m_col); + + m_numEnters++; +} + + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolTextEnterCommand::size () const +{ + return 0; +} + + +// public virtual [base kpCommand] +void kpToolTextEnterCommand::execute () +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + int oldNumEnters = m_numEnters; + m_numEnters = 0; + + for (int i = 0; i < oldNumEnters; i++) { + addEnter (); + } +} + +// public virtual [base kpCommand] +void kpToolTextEnterCommand::unexecute () +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + QList textLines = textSelection ()->textLines (); + + for (int i = 0; i < m_numEnters; i++) + { + Q_ASSERT (m_col == 0); + + if (m_row <= 0) { + break; + } + + int newRow = m_row - 1; + int newCol = textLines [newRow].length (); + + textLines [newRow] += textLines [m_row]; + + textLines.erase (textLines.begin () + m_row); + + m_row = newRow; + m_col = newCol; + } + + textSelection ()->setTextLines (textLines); + + viewManager ()->setTextCursorPosition (m_row, m_col); +} + diff --git a/commands/tools/selection/text/kpToolTextEnterCommand.h b/commands/tools/selection/text/kpToolTextEnterCommand.h new file mode 100644 index 0000000..036e852 --- /dev/null +++ b/commands/tools/selection/text/kpToolTextEnterCommand.h @@ -0,0 +1,63 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_TEXT_ENTER_COMMAND_H +#define KP_TOOL_TEXT_ENTER_COMMAND_H + + +#include "commands/kpNamedCommand.h" + + +class kpToolTextEnterCommand : public kpNamedCommand +{ +public: + enum Action + { + DontAddEnterYet, + AddEnterNow + }; + + kpToolTextEnterCommand (const QString &name, + int row, int col, Action action, + kpCommandEnvironment *environ); + ~kpToolTextEnterCommand () override; + + void addEnter (); + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +protected: + int m_row, m_col; + int m_numEnters; +}; + + +#endif // KP_TOOL_TEXT_ENTER_COMMAND_H diff --git a/commands/tools/selection/text/kpToolTextGiveContentCommand.cpp b/commands/tools/selection/text/kpToolTextGiveContentCommand.cpp new file mode 100644 index 0000000..7ee0c8f --- /dev/null +++ b/commands/tools/selection/text/kpToolTextGiveContentCommand.cpp @@ -0,0 +1,151 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpToolTextGiveContentCommand.h" + +#include "environments/commands/kpCommandEnvironment.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "views/manager/kpViewManager.h" +#include "kpLogCategories.h" + + +kpToolTextGiveContentCommand::kpToolTextGiveContentCommand ( + const kpTextSelection &originalSelBorder, + const QString &name, + kpCommandEnvironment *environ) + : kpAbstractSelectionContentCommand (originalSelBorder, name, environ) +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolTextGiveContentCommand::() environ=" + << environ +#endif +} + +kpToolTextGiveContentCommand::~kpToolTextGiveContentCommand () = default; + + +// public virtual [base kpCommand] +void kpToolTextGiveContentCommand::execute () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolTextGiveContentCommand::execute()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + kpViewManager *vm = viewManager (); + Q_ASSERT (vm); + + // See API Doc for kpViewManager::textCursorRow() & textCursorCol(). + Q_ASSERT (vm->textCursorRow () == 0 && vm->textCursorCol () == 0); + + vm->setQueueUpdates (); + { + // + // Recreate border + // + + // The previously executed command is required to have been a + // kpToolSelectionCreateCommand, which must have been given a text + // selection with no content. + // + // However, there is a tricky case. Suppose we are called for the first + // time, where the above precondition holds. We would add content + // to the selection as expected. But the user then undoes (CTRL+Z) the + // operation, calling unexecute(). There is now no content again. + // Since selection is only a border, the user can freely deselect it + // and/or select another region without changing the command history + // or document modified state. Therefore, if they now call us again + // by redoing (CTRL+Shift+Z), there is potentially no selection at all + // or it is at an arbitrary location. + // + // This assertion covers all 3 possibilities: + // + // 1. First call: text selection with no content + // 2. Later calls: + // a) no text selection (due to deselection) + // b) text selection with no content, at an arbitrary location + Q_ASSERT (!textSelection () || !textSelection ()->hasContent ()); + + const auto *originalTextSel = dynamic_cast + (originalSelection ()); + + if (originalTextSel->textStyle () != environ ()->textStyle ()) { + environ ()->setTextStyle (originalTextSel->textStyle ()); + } + + doc->setSelection (*originalSelection ()); + + + // + // Add Content + // + + QList listOfOneEmptyString; + listOfOneEmptyString.append (QString ()); + textSelection ()->setTextLines (listOfOneEmptyString); + } + vm->restoreQueueUpdates (); + + // This should not have changed from the start of the method. + Q_ASSERT (vm->textCursorRow () == 0 && vm->textCursorCol () == 0); +} + +// public virtual [base kpCommand] +void kpToolTextGiveContentCommand::unexecute () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogCommands) << "kpToolTextGiveContentCommand::unexecute()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + // Must have selection text content. + Q_ASSERT (doc->textSelection () && doc->textSelection ()->hasContent ()); + + kpViewManager *vm = viewManager (); + Q_ASSERT (vm); + // All the commands after us have been unexecuted, so we must be back + // to the state we were after our execute(). + Q_ASSERT (vm->textCursorRow () == 0 && vm->textCursorCol () == 0); + + // We can have faith that this is the state of the selection after + // execute(), rather than after the user tried to throw us off by + // simply selecting another region as to do that, a destroy command + // must have been used. + doc->textSelection ()->deleteContent (); + + // This should not have changed from the start of the method. + Q_ASSERT (vm->textCursorRow () == 0 && vm->textCursorCol () == 0); +} + diff --git a/commands/tools/selection/text/kpToolTextGiveContentCommand.h b/commands/tools/selection/text/kpToolTextGiveContentCommand.h new file mode 100644 index 0000000..6a7a2f1 --- /dev/null +++ b/commands/tools/selection/text/kpToolTextGiveContentCommand.h @@ -0,0 +1,59 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolTextGiveContentCommand_H +#define kpToolTextGiveContentCommand_H + + +#include "commands/tools/selection/kpAbstractSelectionContentCommand.h" + + +class kpTextSelection; + + +// Converts a text border (no text lines) to a text selection with 1 empty +// text line. This must be executed before any manipulations can be made +// to a text selection. +// +// Text analog of kpToolSelectionPullFromDocumentCommand. +class kpToolTextGiveContentCommand : + public kpAbstractSelectionContentCommand +{ +public: + kpToolTextGiveContentCommand ( + const kpTextSelection &originalSelBorder, + const QString &name, + kpCommandEnvironment *environ); + ~kpToolTextGiveContentCommand () override; + + void execute () override; + void unexecute () override; +}; + + +#endif // kpToolTextGiveContentCommand_H diff --git a/commands/tools/selection/text/kpToolTextInsertCommand.cpp b/commands/tools/selection/text/kpToolTextInsertCommand.cpp new file mode 100644 index 0000000..7db6e13 --- /dev/null +++ b/commands/tools/selection/text/kpToolTextInsertCommand.cpp @@ -0,0 +1,110 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "kpToolTextInsertCommand.h" + +#include "layers/selections/text/kpTextSelection.h" +#include "views/manager/kpViewManager.h" + +#include + +//--------------------------------------------------------------------- + +kpToolTextInsertCommand::kpToolTextInsertCommand (const QString &name, + int row, int col, const QString& newText, + kpCommandEnvironment *environ) + : kpNamedCommand (name, environ), + m_row (row), m_col (col) +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + addText (newText); +} + +//--------------------------------------------------------------------- + +// public +void kpToolTextInsertCommand::addText (const QString &moreText) +{ + if (moreText.isEmpty ()) { + return; + } + + QList textLines = textSelection ()->textLines (); + const QString leftHalf = textLines [m_row].left (m_col); + const QString rightHalf = textLines [m_row].mid (m_col); + textLines [m_row] = leftHalf + moreText + rightHalf; + textSelection ()->setTextLines (textLines); + + m_newText += moreText; + m_col += moreText.length (); + + viewManager ()->setTextCursorPosition (m_row, m_col); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +kpCommandSize::SizeType kpToolTextInsertCommand::size () const +{ + return static_cast + (static_cast (m_newText.length ()) * sizeof (QChar)); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +void kpToolTextInsertCommand::execute () +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + QString text = m_newText; + m_newText.clear (); + addText (text); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +void kpToolTextInsertCommand::unexecute () +{ + viewManager ()->setTextCursorPosition (m_row, m_col); + + QList textLines = textSelection ()->textLines (); + const QString leftHalf = textLines [m_row].left (m_col - m_newText.length ()); + const QString rightHalf = textLines [m_row].mid (m_col); + textLines [m_row] = leftHalf + rightHalf; + textSelection ()->setTextLines (textLines); + + m_col -= m_newText.length (); + + viewManager ()->setTextCursorPosition (m_row, m_col); +} + +//--------------------------------------------------------------------- diff --git a/commands/tools/selection/text/kpToolTextInsertCommand.h b/commands/tools/selection/text/kpToolTextInsertCommand.h new file mode 100644 index 0000000..aaf7956 --- /dev/null +++ b/commands/tools/selection/text/kpToolTextInsertCommand.h @@ -0,0 +1,56 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_TEXT_INSERT_COMMAND_H +#define KP_TOOL_TEXT_INSERT_COMMAND_H + + +#include "commands/kpNamedCommand.h" + + +class kpToolTextInsertCommand : public kpNamedCommand +{ +public: + kpToolTextInsertCommand (const QString &name, + int row, int col, const QString& newText, + kpCommandEnvironment *environ); + + void addText (const QString &moreText); + + kpCommandSize::SizeType size () const override; + + void execute () override; + void unexecute () override; + +protected: + int m_row, m_col; + QString m_newText; +}; + + +#endif // KP_TOOL_TEXT_INSERT_COMMAND_H diff --git a/cursors/kpCursorLightCross.cpp b/cursors/kpCursorLightCross.cpp new file mode 100644 index 0000000..915ea0c --- /dev/null +++ b/cursors/kpCursorLightCross.cpp @@ -0,0 +1,131 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_CURSOR_LIGHT_CROSS 0 + + +#include "kpCursorLightCross.h" + +#include "kpLogCategories.h" + +#include +#include + + +enum PixelValue +{ + White, Black, Transparent +}; + +static void setPixel (unsigned char *colorBitmap, + unsigned char *maskBitmap, + int width, + int y, int x, enum PixelValue pv) +{ + const int ColorBlack = 1; + const int ColorWhite = 0; + + const int MaskOpaque = 1; + const int MaskTransparent = 0; + + int colorValue, maskValue; + + switch (pv) + { + case White: + colorValue = ColorWhite; + maskValue = MaskOpaque; + break; + + case Black: + colorValue = ColorBlack; + maskValue = MaskOpaque; + break; + + case Transparent: + colorValue = ColorWhite; + maskValue = MaskTransparent; + break; + } + + if (colorValue) { + colorBitmap [y * (width / 8) + (x / 8)] |= (1 << (x % 8)); + } + + if (maskValue) { + maskBitmap [y * (width / 8) + (x / 8)] |= (1 << (x % 8)); + } +} + + +const QCursor *kpCursorLightCrossCreate () +{ +#if DEBUG_KP_CURSOR_LIGHT_CROSS + qCDebug(kpLogMisc) << "kpCursorLightCrossCreate() "; +#endif + + const int side = 24; + const int byteSize = (side * side) / 8; + auto *colorBitmap = new unsigned char [byteSize]; + auto *maskBitmap = new unsigned char [byteSize]; + + memset (colorBitmap, 0, byteSize); + memset (maskBitmap, 0, byteSize); + + const int oddSide = side - 1; + const int strokeLen = oddSide * 3 / 8; + + for (int i = 0; i < strokeLen; i++) + { + const enum PixelValue pv = (i % 2) ? Black : White; + + #define X_(val) (val) + #define Y_(val) (val) + #define DRAW(y,x) setPixel (colorBitmap, maskBitmap, side, (y), (x), pv) + // horizontal + DRAW (Y_(side / 2), X_(1 + i)); + DRAW (Y_(side / 2), X_(side - 1 - i)); + + // vertical + DRAW (Y_(1 + i), X_(side / 2)); + DRAW (Y_(side - 1 - i), X_(side / 2)); + #undef DRAW + #undef Y_ + #undef X_ + } + + const QSize size (side, side); + QCursor *cursor = new QCursor ( + QBitmap::fromData (size, colorBitmap, QImage::Format_MonoLSB), + QBitmap::fromData (size, maskBitmap, QImage::Format_MonoLSB)); + + delete [] maskBitmap; + delete [] colorBitmap; + + return cursor; +} + diff --git a/cursors/kpCursorLightCross.h b/cursors/kpCursorLightCross.h new file mode 100644 index 0000000..941e825 --- /dev/null +++ b/cursors/kpCursorLightCross.h @@ -0,0 +1,39 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_CURSOR_LIGHT_CROSS_H +#define KP_CURSOR_LIGHT_CROSS_H + + +class QCursor; + + +const QCursor *kpCursorLightCrossCreate (); + + +#endif // KP_CURSOR_LIGHT_CROSS_H diff --git a/cursors/kpCursorProvider.cpp b/cursors/kpCursorProvider.cpp new file mode 100644 index 0000000..fdc3d51 --- /dev/null +++ b/cursors/kpCursorProvider.cpp @@ -0,0 +1,48 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpCursorProvider.h" + +#include "kpCursorLightCross.h" + +#include + + +static const QCursor *TheLightCursor = nullptr; + + +// public static +QCursor kpCursorProvider::lightCross () +{ + // TODO: don't leak (although it's cleaned up on exit by OS anyway) + if (!::TheLightCursor) { + ::TheLightCursor = kpCursorLightCrossCreate (); + } + + return *::TheLightCursor; +} diff --git a/cursors/kpCursorProvider.h b/cursors/kpCursorProvider.h new file mode 100644 index 0000000..9714261 --- /dev/null +++ b/cursors/kpCursorProvider.h @@ -0,0 +1,43 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_CURSOR_PROVIDER_H +#define KP_CURSOR_PROVIDER_H + + +class QCursor; + + +class kpCursorProvider +{ +public: + static QCursor lightCross (); +}; + + +#endif // KP_CURSOR_PROVIDER_H diff --git a/dialogs/imagelib/effects/kpEffectsDialog.cpp b/dialogs/imagelib/effects/kpEffectsDialog.cpp new file mode 100644 index 0000000..926581b --- /dev/null +++ b/dialogs/imagelib/effects/kpEffectsDialog.cpp @@ -0,0 +1,372 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECTS_DIALOG 0 + + +#include "kpEffectsDialog.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "widgets/imagelib/effects/kpEffectBalanceWidget.h" +#include "widgets/imagelib/effects/kpEffectBlurSharpenWidget.h" +#include "widgets/imagelib/effects/kpEffectEmbossWidget.h" +#include "widgets/imagelib/effects/kpEffectFlattenWidget.h" +#include "widgets/imagelib/effects/kpEffectHSVWidget.h" +#include "widgets/imagelib/effects/kpEffectInvertWidget.h" +#include "widgets/imagelib/effects/kpEffectReduceColorsWidget.h" +#include "widgets/imagelib/effects/kpEffectToneEnhanceWidget.h" +#include "pixmapfx/kpPixmapFX.h" +#include "environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h" + +#include +#include "kpLogCategories.h" +#include + +#include +#include +#include +#include +#include +#include + + +// protected static +int kpEffectsDialog::s_lastWidth = 640; +int kpEffectsDialog::s_lastHeight = 620; + + +kpEffectsDialog::kpEffectsDialog (bool actOnSelection, + kpTransformDialogEnvironment *_env, + QWidget *parent, + int defaultSelectedEffect) + : kpTransformPreviewDialog (kpTransformPreviewDialog::Preview, + true/*reserve top row*/, + QString()/*caption*/, + QString()/*afterActionText (no Dimensions Group Box)*/, + actOnSelection, + _env, + parent), + m_delayedUpdateTimer (new QTimer (this)), + m_effectsComboBox (nullptr), + m_settingsGroupBox (nullptr), + m_settingsLayout (nullptr), + m_effectWidget (nullptr) +{ +#if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "kpEffectsDialog::kpEffectsDialog()"; +#endif + const bool e = updatesEnabled (); + setUpdatesEnabled (false); + + + if (actOnSelection) { + setWindowTitle (i18nc ("@title:window", "More Image Effects (Selection)")); + } + else { + setWindowTitle (i18nc ("@title:window", "More Image Effects")); + } + + + m_delayedUpdateTimer->setSingleShot (true); + connect (m_delayedUpdateTimer, &QTimer::timeout, + this, &kpEffectsDialog::slotUpdateWithWaitCursor); + + + QWidget *effectContainer = new QWidget (mainWidget ()); + + auto *containerLayout = new QHBoxLayout (effectContainer); + containerLayout->setContentsMargins(0, 0, 0, 0); + + QLabel *label = new QLabel (i18n ("&Effect:"), effectContainer); + + m_effectsComboBox = new QComboBox (effectContainer); + // Keep in alphabetical order. + // TODO: What about translations? + // sync: order in selectEffect(). + m_effectsComboBox->addItem (i18n ("Balance")); + m_effectsComboBox->addItem (i18n ("Emboss")); + m_effectsComboBox->addItem (i18n ("Flatten")); + m_effectsComboBox->addItem (i18n ("Histogram Equalizer")); + m_effectsComboBox->addItem (i18n ("Hue, Saturation, Value")); + m_effectsComboBox->addItem (i18n ("Invert")); + m_effectsComboBox->addItem (i18n ("Reduce Colors")); + m_effectsComboBox->addItem (i18n ("Soften & Sharpen")); + + containerLayout->addWidget (label); + containerLayout->addWidget (m_effectsComboBox, 1); + + label->setBuddy (m_effectsComboBox); + + addCustomWidgetToFront (effectContainer); + + + m_settingsGroupBox = new QGroupBox (mainWidget ()); + m_settingsLayout = new QVBoxLayout ( m_settingsGroupBox ); + addCustomWidgetToBack (m_settingsGroupBox); + + + connect (m_effectsComboBox, static_cast(&QComboBox::activated), + this, &kpEffectsDialog::selectEffect); + + + selectEffect (defaultSelectedEffect); + + + resize (s_lastWidth, s_lastHeight); + + +#if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "about to setUpdatesEnabled()"; +#endif + // OPT: The preview pixmap gets recalculated here and then possibly + // again when QResizeEvent fires, when the dialog is shown. + setUpdatesEnabled (e); +#if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << endl + << endl + << endl; +#endif +} + +kpEffectsDialog::~kpEffectsDialog () +{ + s_lastWidth = width (); + s_lastHeight = height (); +} + + +// public virtual [base kpTransformPreviewDialog] +bool kpEffectsDialog::isNoOp () const +{ + if (!m_effectWidget) { + return true; + } + + return m_effectWidget->isNoOp (); +} + +// public +kpEffectCommandBase *kpEffectsDialog::createCommand () const +{ + if (!m_effectWidget) { + return nullptr; + } + + return m_effectWidget->createCommand (m_environ->commandEnvironment ()); +} + + +// protected virtual [base kpTransformPreviewDialog] +QSize kpEffectsDialog::newDimensions () const +{ + kpDocument *doc = document (); + if (!doc) { + return {}; + } + + return {doc->width (m_actOnSelection), doc->height (m_actOnSelection)}; +} + +// protected virtual [base kpTransformPreviewDialog] +QImage kpEffectsDialog::transformPixmap (const QImage &pixmap, + int targetWidth, int targetHeight) const +{ + QImage pixmapWithEffect; + + if (m_effectWidget && !m_effectWidget->isNoOp ()) { + pixmapWithEffect = m_effectWidget->applyEffect (pixmap); + } + else { + pixmapWithEffect = pixmap; + } + + return kpPixmapFX::scale (pixmapWithEffect, targetWidth, targetHeight); +} + + +// public +int kpEffectsDialog::selectedEffect () const +{ + return m_effectsComboBox->currentIndex (); +} + +// public slot +void kpEffectsDialog::selectEffect (int which) +{ +#if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "kpEffectsDialog::selectEffect(" << which << ")"; +#endif + + if (which < 0 || + which >= m_effectsComboBox->count ()) + { + return; + } + + if (which != m_effectsComboBox->currentIndex ()) { + m_effectsComboBox->setCurrentIndex (which); + } + + + delete m_effectWidget; + m_effectWidget = nullptr; + + + m_settingsGroupBox->setWindowTitle(QString()); + +#define CREATE_EFFECT_WIDGET(name) \ + m_effectWidget = new name (m_actOnSelection, m_settingsGroupBox) + // sync: order in constructor. + switch (which) + { + case 0: + CREATE_EFFECT_WIDGET (kpEffectBalanceWidget); + break; + + case 1: + CREATE_EFFECT_WIDGET (kpEffectEmbossWidget); + break; + + case 2: + CREATE_EFFECT_WIDGET (kpEffectFlattenWidget); + break; + + case 3: + CREATE_EFFECT_WIDGET (kpEffectToneEnhanceWidget); + break; + + case 4: + CREATE_EFFECT_WIDGET (kpEffectHSVWidget); + break; + + case 5: + CREATE_EFFECT_WIDGET (kpEffectInvertWidget); + break; + + case 6: + CREATE_EFFECT_WIDGET (kpEffectReduceColorsWidget); + break; + + case 7: + CREATE_EFFECT_WIDGET (kpEffectBlurSharpenWidget); + break; + } +#undef CREATE_EFFECT_WIDGET + + + if (m_effectWidget) + { + const bool e = updatesEnabled (); + setUpdatesEnabled (false); + + #if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "widget exists for effect #"; + #endif + m_settingsGroupBox->setTitle (m_effectWidget->caption ()); + + // Show widget. + // + // Don't resize the whole dialog when doing this. + // This seems to work magically without any extra code with Qt4. + #if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "addWidget"; + #endif + m_settingsLayout->addWidget (m_effectWidget); + #if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "show widget"; + #endif + m_effectWidget->show (); + + connect (m_effectWidget, &kpEffectWidgetBase::settingsChangedNoWaitCursor, + this, &kpEffectsDialog::slotUpdate); + connect (m_effectWidget, &kpEffectWidgetBase::settingsChanged, + this, &kpEffectsDialog::slotUpdateWithWaitCursor); + connect (m_effectWidget, &kpEffectWidgetBase::settingsChangedDelayed, + this, &kpEffectsDialog::slotDelayedUpdate); + + #if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "about to setUpdatesEnabled()"; + #endif + setUpdatesEnabled (e); + } + + +#if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "done" + << endl + << endl + << endl; +#endif +} + + +// protected slot virtual [base kpTransformPreviewDialog] +void kpEffectsDialog::slotUpdate () +{ +#if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "kpEffectsDialog::slotUpdate()" + << " timerActive=" << m_delayedUpdateTimer->isActive () + << endl; +#endif + + m_delayedUpdateTimer->stop (); + + kpTransformPreviewDialog::slotUpdate (); +} + +// protected slot virtual [base kpTransformPreviewDialog] +void kpEffectsDialog::slotUpdateWithWaitCursor () +{ +#if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "kpEffectsDialog::slotUpdateWithWaitCursor()" + << " timerActive=" << m_delayedUpdateTimer->isActive () + << endl; +#endif + + m_delayedUpdateTimer->stop (); + + kpTransformPreviewDialog::slotUpdateWithWaitCursor (); +} + + +// protected slot +void kpEffectsDialog::slotDelayedUpdate () +{ +#if DEBUG_KP_EFFECTS_DIALOG + qCDebug(kpLogDialogs) << "kpEffectsDialog::slotDelayedUpdate()" + << " timerActive=" << m_delayedUpdateTimer->isActive () + << endl; +#endif + m_delayedUpdateTimer->stop (); + + // (single shot) + m_delayedUpdateTimer->start (400/*ms*/); +} + + diff --git a/dialogs/imagelib/effects/kpEffectsDialog.h b/dialogs/imagelib/effects/kpEffectsDialog.h new file mode 100644 index 0000000..5b29290 --- /dev/null +++ b/dialogs/imagelib/effects/kpEffectsDialog.h @@ -0,0 +1,91 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_EFFECTS_DIALOG_H +#define KP_EFFECTS_DIALOG_H + + +#include "dialogs/imagelib/transforms/kpTransformPreviewDialog.h" + + +class QComboBox; +class QGroupBox; +class QImage; +class QTimer; +class QVBoxLayout; + +class kpEffectCommandBase; +class kpEffectWidgetBase; + + +class kpEffectsDialog : public kpTransformPreviewDialog +{ +Q_OBJECT + +public: + // Specifying is more efficient than leaving it + // as 0 and then calling selectEffect() afterwards. + kpEffectsDialog (bool actOnSelection, + kpTransformDialogEnvironment *_env, + QWidget *parent, + int defaultSelectedEffect = 0); + ~kpEffectsDialog () override; + + bool isNoOp () const override; + kpEffectCommandBase *createCommand () const; + +protected: + QSize newDimensions () const override; + QImage transformPixmap (const QImage &pixmap, + int targetWidth, int targetHeight) const override; + +public: + int selectedEffect () const; +public slots: + void selectEffect (int which); + +protected slots: + void slotUpdate () override; + void slotUpdateWithWaitCursor () override; + + void slotDelayedUpdate (); + +protected: + static int s_lastWidth, s_lastHeight; + + QTimer *m_delayedUpdateTimer; + + QComboBox *m_effectsComboBox; + QGroupBox *m_settingsGroupBox; + QVBoxLayout *m_settingsLayout; + + kpEffectWidgetBase *m_effectWidget; +}; + + +#endif // KP_EFFECTS_DIALOG_H diff --git a/dialogs/imagelib/kpDocumentMetaInfoDialog.cpp b/dialogs/imagelib/kpDocumentMetaInfoDialog.cpp new file mode 100644 index 0000000..a475ea0 --- /dev/null +++ b/dialogs/imagelib/kpDocumentMetaInfoDialog.cpp @@ -0,0 +1,753 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_DOCUMENT_META_INFO_DIALOG 0 + + +#include "kpDocumentMetaInfoDialog.h" + +#include "kpDefs.h" +#include "imagelib/kpDocumentMetaInfo.h" + +#include +#include +#include "kpLogCategories.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +struct kpDocumentMetaInfoDialogPrivate +{ + const kpDocumentMetaInfo *originalMetaInfoPtr; + + QDoubleSpinBox *horizDpiInput, *vertDpiInput; + QSpinBox *horizOffsetInput, *vertOffsetInput; + + QTableWidget *fieldsTableWidget; + QPushButton *fieldsAddRowButton, *fieldsDeleteRowButton, *fieldsResetButton; +}; + + +// (shared by all dialogs, across all main windows, in a KolourPaint instance) +static int LastWidth = -1, LastHeight = -1; + + +// sync: You must keep DpiMinStep = 10 ^ (-DpiPrecision). +// +// You can increase the precision to reduce the chance of inadvertently changing +// the resolution when converting from kpDocumentMetaInfo's "dots per meter" +// to our "dots per inch" and back. It would be bad if simply going into this +// dialog and pressing OK changed the resolution (it's unlikely but I still think +// it might happen with the current precision). +// TODO: On a related note, for many particular resolutions, if the user enters +// one of them into the UI, presses OK and then comes back to the dialog, +// s/he is presented with a different resolution to the one typed in. +// Maybe make DotsPerMeter[XY] be of type "double" instead of "int" to +// solve this problem? +// +// Of course, if you increase the precision too much, the minimum step will +// become so small that it will start experiencing floating point inaccuracies +// esp. since we use it for the "DpiUnspecified" hack. +static const int DpiPrecision = 3; +static const double DpiMinStep = 0.001; + +static const double DpiLegalMin = + kpDocumentMetaInfo::MinDotsPerMeter / KP_INCHES_PER_METER; + +// Out of range represents unspecified DPI. +static const double DpiUnspecified = ::DpiLegalMin - ::DpiMinStep; + +static const double DpiInputMin = ::DpiUnspecified; +static const double DpiInputMax = + kpDocumentMetaInfo::MaxDotsPerMeter / KP_INCHES_PER_METER; + +// The increment the DPI spinboxes jump by when they're clicked. +// +// We make this relatively big since people don't usually just increase their +// DPIs by 1 or so -- they are usually changing from say, 72, to 96. +// +// Obviously, making it equal to DpiMinStep is too slow a UI. Therefore, with +// our big setting, the user will still have to manually change the value in +// the spinbox, using the keyboard, after all their clicking to ensure it is +// exactly the value they want. +static const double DpiInputStep = 10; + + +// TODO: Halve groupbox layout margins in every other file since it doesn't +// seem to be need in Qt4. +kpDocumentMetaInfoDialog::kpDocumentMetaInfoDialog ( + const kpDocumentMetaInfo *docMetaInfo, + QWidget *parent) + + : QDialog (parent), + d (new kpDocumentMetaInfoDialogPrivate ()) +{ + d->originalMetaInfoPtr = docMetaInfo; + + + setWindowTitle (i18nc ("@title:window", "Document Properties")); + auto * buttons = new QDialogButtonBox (QDialogButtonBox::Ok | + QDialogButtonBox::Cancel, this); + + connect (buttons, &QDialogButtonBox::accepted, this, &kpDocumentMetaInfoDialog::accept); + connect (buttons, &QDialogButtonBox::rejected, this, &kpDocumentMetaInfoDialog::reject); + + auto *baseWidget = new QWidget (this); + + auto *dialogLayout = new QVBoxLayout (this); + dialogLayout->addWidget (baseWidget); + dialogLayout->addWidget (buttons); + + + // + // DPI Group Box + // + + Q_ASSERT (::DpiInputMin < ::DpiInputMax); + + auto *dpiGroupBox = new QGroupBox(i18n("Dots &Per Inch (DPI)"), baseWidget); + + d->horizDpiInput = new QDoubleSpinBox(dpiGroupBox); + d->horizDpiInput->setRange(::DpiInputMin, ::DpiInputMax); + d->horizDpiInput->setValue(0.0); + d->horizDpiInput->setSingleStep(::DpiInputStep); + d->horizDpiInput->setDecimals(::DpiPrecision); + d->horizDpiInput->setSpecialValueText(i18n("Unspecified")); + + auto *dpiXLabel = new QLabel ( + i18nc ("Horizontal DPI 'x' Vertical DPI", " x "), dpiGroupBox); + dpiXLabel->setAlignment (Qt::AlignCenter); + + d->vertDpiInput = new QDoubleSpinBox(dpiGroupBox); + d->vertDpiInput->setRange(::DpiInputMin, ::DpiInputMax); + d->vertDpiInput->setValue(0.0); + d->vertDpiInput->setSingleStep(::DpiInputStep); + d->vertDpiInput->setDecimals(::DpiPrecision); + d->vertDpiInput->setSpecialValueText(i18n("Unspecified")); + + + auto *dpiLay = new QGridLayout(dpiGroupBox); + + dpiLay->addWidget(new QLabel(i18n("Horizontal:")), 0, 0, Qt::AlignHCenter); + dpiLay->addWidget(d->horizDpiInput, 1, 0); + dpiLay->addWidget(dpiXLabel, 0, 1); + dpiLay->addWidget(new QLabel(i18n("Vertical:")), 0, 2, Qt::AlignHCenter); + dpiLay->addWidget(d->vertDpiInput, 1, 2); + + dpiLay->setRowStretch(2, 1); + + + dpiGroupBox->setWhatsThis ( + i18n ( + "" + "

Dots Per Inch (DPI) specifies the number of pixels" + " of the image that should be printed inside one inch (2.54cm).

" + + "

The higher the image's DPI, the smaller the printed image." + " Note that your printer is unlikely to produce high" + " quality prints if you increase this to more than 300 or 600 DPI," + " depending on the printer.

" + + "

If you would like to print the image so that it is the same" + " size as it is displayed on the screen, set the image's DPI" + " values to be the same as the screen's.

" + + // TODO: This is currently not true! + // See "96dpi" TODO in kpMainWindow::sendPixmapToPrinter(). + // This also why we don't try to report the current screen DPI + // for the above paragraph. + "

If either DPI value is Unspecified, the image will also" + " be printed to be the same size as on the screen.

" + + "

Not all image formats support DPI values. If the format you" + " save in does not support them, they will not be saved.

" + "
" + )); + + + // + // Offset Group Box + // + + auto *offsetGroupBox = new QGroupBox(i18n ("O&ffset"), baseWidget); + + d->horizOffsetInput = new QSpinBox; + d->horizOffsetInput->setRange(kpDocumentMetaInfo::MinOffset, kpDocumentMetaInfo::MaxOffset); + + d->vertOffsetInput = new QSpinBox; + d->vertOffsetInput->setRange(kpDocumentMetaInfo::MinOffset, kpDocumentMetaInfo::MaxOffset); + + auto *offsetLay = new QGridLayout(offsetGroupBox); + + offsetLay->addWidget(new QLabel(i18n("Horizontal:")), 0, 0, Qt::AlignHCenter); + offsetLay->addWidget(d->horizOffsetInput, 1, 0); + offsetLay->addWidget(new QLabel(i18n("Vertical:")), 0, 1, Qt::AlignHCenter); + offsetLay->addWidget(d->vertOffsetInput, 1, 1); + + offsetLay->setRowStretch (2, 1); + + + offsetGroupBox->setWhatsThis ( + i18n ( + "" + "

The Offset is the relative position where this image" + " should be placed, compared to other images.

" + + "

Not all image formats support the Offset feature." + " If the format you save in does not support it, the values" + " specified here will not be saved.

" + "
" + )); + + + // + // Fields Group Box + // + + + auto *fieldsGroupBox = new QGroupBox (i18n ("&Text Fields"), + baseWidget); + + d->fieldsTableWidget = new QTableWidget (fieldsGroupBox); + d->fieldsTableWidget->setEditTriggers(QAbstractItemView::AllEditTriggers); + + connect (d->fieldsTableWidget, &QTableWidget::currentCellChanged, + this, &kpDocumentMetaInfoDialog::slotFieldsCurrentCellChanged); + + connect (d->fieldsTableWidget, &QTableWidget::itemChanged, + this, &kpDocumentMetaInfoDialog::slotFieldsItemChanged); + + d->fieldsAddRowButton = new QPushButton (i18n ("&Add Row"), + fieldsGroupBox); + connect (d->fieldsAddRowButton, &QPushButton::clicked, + this, &kpDocumentMetaInfoDialog::slotFieldsAddRowButtonClicked); + + d->fieldsDeleteRowButton = new QPushButton (i18n ("&Delete Row"), + fieldsGroupBox); + connect (d->fieldsDeleteRowButton, &QPushButton::clicked, + this, &kpDocumentMetaInfoDialog::slotFieldsDeleteRowButtonClicked); + + d->fieldsResetButton = new QPushButton (i18n ("&Reset"), + fieldsGroupBox); + connect (d->fieldsResetButton, &QPushButton::clicked, + this, &kpDocumentMetaInfoDialog::setUIToOriginalMetaInfo); + + auto *fieldsButtonsLayout = new QHBoxLayout (); + fieldsButtonsLayout->addWidget (d->fieldsAddRowButton); + fieldsButtonsLayout->addWidget (d->fieldsDeleteRowButton); + fieldsButtonsLayout->addStretch (); + fieldsButtonsLayout->addWidget (d->fieldsResetButton); + + auto *fieldsLayout = new QVBoxLayout (fieldsGroupBox); + + fieldsLayout->addWidget (d->fieldsTableWidget); + fieldsLayout->addLayout (fieldsButtonsLayout); + + + fieldsGroupBox->setWhatsThis ( + i18n ( + "" + "

Text Fields provide extra information about the image." + " This is probably a comment area that you can freely write any text in.

" + + "

However, this is format-specific so the fields could theoretically be" + " computer-interpreted data - that you should not modify -" + " but this is unlikely.

" + + "

Not all image formats support Text Fields. If the format" + " you save in does not support them, they will not be saved.

" + "
" + )); + + + // + // Global Layout + // + auto *baseLayout = new QGridLayout (baseWidget); + baseLayout->setContentsMargins(0, 0, 0, 0); + + // Col 0 + baseLayout->addWidget (dpiGroupBox, 0, 0); + baseLayout->addWidget (offsetGroupBox, 1, 0); + + // Col 1 + baseLayout->addWidget (fieldsGroupBox, 0, 1, 2/*row span*/, 1/*col span*/); + baseLayout->setColumnStretch (1, 1/*stretch*/); + + + // + // Remaining UI Setup + // + + + setUIToOriginalMetaInfo (); + + + if (::LastWidth > 0 && ::LastHeight > 0) { + resize (::LastWidth, ::LastHeight); + } +} + +//--------------------------------------------------------------------- + +kpDocumentMetaInfoDialog::~kpDocumentMetaInfoDialog () +{ + ::LastWidth = width (); + ::LastHeight = height (); + + delete d; +} + +//--------------------------------------------------------------------- +// private + +void kpDocumentMetaInfoDialog::editCell (int r, int c) +{ + d->fieldsTableWidget->setCurrentCell (r, c); + d->fieldsTableWidget->editItem (d->fieldsTableWidget->item (r, c)); +} + +//--------------------------------------------------------------------- +// private slot + +void kpDocumentMetaInfoDialog::setUIToOriginalMetaInfo () +{ + // Set DPI spinboxes. + d->horizDpiInput->setValue (d->originalMetaInfoPtr->dotsPerMeterX () / + KP_INCHES_PER_METER); + d->vertDpiInput->setValue (d->originalMetaInfoPtr->dotsPerMeterY () / + KP_INCHES_PER_METER); + + + // Set Offset spinboxes. + d->horizOffsetInput->setValue (d->originalMetaInfoPtr->offset ().x ()); + d->vertOffsetInput->setValue (d->originalMetaInfoPtr->offset ().y ()); + + + // Set Text Fields. + // + // Block itemChanged() signal as slotFieldsItemChanged() should not get called + // when rows are half-created. + const bool b = d->fieldsTableWidget->blockSignals (true); + { + d->fieldsTableWidget->clear (); + + d->fieldsTableWidget->setRowCount (d->originalMetaInfoPtr->textKeys ().size ()); + d->fieldsTableWidget->setColumnCount (2); + + QStringList fieldsHeader; + fieldsHeader << i18n ("Key") << i18n ("Value"); + d->fieldsTableWidget->setHorizontalHeaderLabels (fieldsHeader); + + int row = 0; + for (const auto &key : d->originalMetaInfoPtr->textKeys ()) + { + d->fieldsTableWidget->setItem (row, 0/*1st col*/, + new QTableWidgetItem (key)); + d->fieldsTableWidget->setItem (row, 1/*2nd col*/, + new QTableWidgetItem (d->originalMetaInfoPtr->text (key))); + + row++; + } + + fieldsAppendEmptyRow (); + } + d->fieldsTableWidget->blockSignals (b); + + + editCell (0/*row*/, 0/*col*/); + + + enableFieldsDeleteRowButtonIfShould (); +} + +//--------------------------------------------------------------------- +// public + +bool kpDocumentMetaInfoDialog::isNoOp () const +{ + return (metaInfo () == *d->originalMetaInfoPtr); +} + +//--------------------------------------------------------------------- + +// public +kpDocumentMetaInfo kpDocumentMetaInfoDialog::originalMetaInfo () const +{ + return *d->originalMetaInfoPtr; +} + +// public +kpDocumentMetaInfo kpDocumentMetaInfoDialog::metaInfo ( + QString *errorMessage) const +{ + if (errorMessage) + { + // No errors to start with. + *errorMessage = QString (); + } + + + kpDocumentMetaInfo ret; + + + if (d->horizDpiInput->value () < ::DpiLegalMin) { + ret.setDotsPerMeterX (0/*unspecified*/); + } + else { + ret.setDotsPerMeterX (qRound (d->horizDpiInput->value () * KP_INCHES_PER_METER)); + } + + if (d->vertDpiInput->value () < ::DpiLegalMin) { + ret.setDotsPerMeterY (0/*unspecified*/); + } + else { + ret.setDotsPerMeterY (qRound (d->vertDpiInput->value () * KP_INCHES_PER_METER)); + } + + + ret.setOffset (QPoint (d->horizOffsetInput->value (), + d->vertOffsetInput->value ())); + + + for (int r = 0; r < d->fieldsTableWidget->rowCount (); r++) + { + const QString key = d->fieldsTableWidget->item (r, 0)->text (); + const QString value = d->fieldsTableWidget->item (r, 1)->text (); + + // Empty key? + if (key.isEmpty ()) + { + // Empty value too? + if (value.isEmpty ()) + { + // Ignore empty row. + continue; + } + // Value without a key? + + + if (errorMessage) + { + *errorMessage = + ki18n ("The text value \"%1\" on line %2 requires a key.") + .subs (value).subs (r + 1/*count from 1*/).toString (); + + // Print only 1 error message per method invocation. + errorMessage = nullptr; + } + + // Ignore. + continue; + + } + + // Duplicate key? + if (ret.textKeys ().contains (key)) + { + if (errorMessage) + { + int q; + for (q = 0; q < r; q++) + { + if (d->fieldsTableWidget->item (q, 0)->text () == key) { + break; + } + } + Q_ASSERT (q != r); + + *errorMessage = + ki18n ("All text keys must be unique. The text key \"%1\"" + " on lines %2 and %3 are identical.") + .subs (key) + .subs (q + 1/*count from 1*/) + .subs (r + 1/*count from 1*/) + .toString (); + + // Print only 1 error message per method invocation. + errorMessage = nullptr; + } + + // Ignore this duplicate - keep the first value of the key. + continue; + } + + ret.setText (key, value); + + } // for (r = 0; r < table widget rows; r++) { + + + return ret; +} + + +// private +void kpDocumentMetaInfoDialog::fieldsUpdateVerticalHeader () +{ + QStringList vertLabels; + for (int r = 1; r <= d->fieldsTableWidget->rowCount (); r++) { + vertLabels << QString::number (r); + } + + d->fieldsTableWidget->setVerticalHeaderLabels (vertLabels); +} + + +// private +void kpDocumentMetaInfoDialog::fieldsAddEmptyRow (int atRow) +{ + // Block itemChanged() signal as slotFieldsItemChanged() should not get called + // when rows are half-created. + const bool b = d->fieldsTableWidget->blockSignals (true); + { + d->fieldsTableWidget->insertRow (atRow); + + d->fieldsTableWidget->setItem (atRow, 0, new QTableWidgetItem (QString ())); + d->fieldsTableWidget->setItem (atRow, 1, new QTableWidgetItem (QString ())); + } + d->fieldsTableWidget->blockSignals (b); + + // Hack around Qt's failure to redraw these sometimes. + fieldsUpdateVerticalHeader (); + + enableFieldsDeleteRowButtonIfShould (); +} + +// private +void kpDocumentMetaInfoDialog::fieldsAppendEmptyRow () +{ + fieldsAddEmptyRow (d->fieldsTableWidget->rowCount ()); +} + + +// private +bool kpDocumentMetaInfoDialog::isFieldsRowDeleteable (int row) const +{ + // Can't delete no row and can't delete last (always blank) row, which + // is used to make it easy for the user to add rows without pressing + // the "Add" button explicitly. + return (row >= 0 && row < d->fieldsTableWidget->rowCount () - 1); +} + +// private +void kpDocumentMetaInfoDialog::fieldsDeleteRow (int r) +{ +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "kpDocumentMetaInfoDialog::fieldsDeleteRow(" + << "row=" << r << ")" + << " currentRow=" << d->fieldsTableWidget->currentRow (); +#endif + + Q_ASSERT (isFieldsRowDeleteable (r)); + + if (r == d->fieldsTableWidget->currentRow ()) + { + // Assertion follows from previous assertion. + const int newRow = r + 1; + #if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "\tnewRow=" << newRow; + #endif + Q_ASSERT (newRow < d->fieldsTableWidget->rowCount ()); + + int newCol = d->fieldsTableWidget->currentColumn (); + #if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "\tnewCol=" << newCol; + #endif + if (newCol != 0 && newCol != 1) + { + newCol = 0; + #if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "\t\tcorrecting to " << newCol; + #endif + } + + // WARNING: You must call this _before_ deleting the row. Else, you'll + // trigger a Qt bug where if the editor is active on the row to + // be deleted, it might crash. To reproduce, move this line to + // after removeRow() (and subtract 1 from newRow) and + // press the "Delete Row" button several times in succession + // very quickly. + // + // TODO: This usually results in a redraw error if the scrollbar scrolls + // after deleting the 2nd last row. Qt bug. + editCell (newRow, newCol); + } + + + d->fieldsTableWidget->removeRow (r); + + + fieldsUpdateVerticalHeader (); + + enableFieldsDeleteRowButtonIfShould (); +} + + +// private +void kpDocumentMetaInfoDialog::enableFieldsDeleteRowButtonIfShould () +{ +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "kpDocumentMetaInfoDialog::enableFieldsDeleteRowButtonIfShould()"; +#endif + + const int r = d->fieldsTableWidget->currentRow (); +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "\tr=" << r; +#endif + + d->fieldsDeleteRowButton->setEnabled (isFieldsRowDeleteable (r)); +} + + +// private slot +void kpDocumentMetaInfoDialog::slotFieldsCurrentCellChanged (int row, int col, + int oldRow, int oldCol) +{ +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "kpDocumentMetaInfoDialog::slotFieldsCurrentCellChanged(" + << "row=" << row << ",col=" << col + << ",oldRow=" << oldRow << ",oldCol=" << oldCol + << ")" << endl; +#endif + + (void) row; + (void) col; + (void) oldRow; + (void) oldCol; + + enableFieldsDeleteRowButtonIfShould (); +} + +//--------------------------------------------------------------------- +// private slot + +void kpDocumentMetaInfoDialog::slotFieldsItemChanged (QTableWidgetItem *it) +{ +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "kpDocumentMetaInfoDialog::slotFieldsItemChanged(" + << "item=" << it << ") rows=" << d->fieldsTableWidget->rowCount (); +#endif + + const int r = d->fieldsTableWidget->row (it); +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "\tr=" << r; +#endif + Q_ASSERT (r >= 0 && r < d->fieldsTableWidget->rowCount ()); + + const QString key = d->fieldsTableWidget->item (r, 0)->text (); +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << " key='" << key << "'"; +#endif + + const QString value = d->fieldsTableWidget->item (r, 1)->text (); +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << " value='" << value << "'"; +#endif + + // At the last row? + if (r == d->fieldsTableWidget->rowCount () - 1) + { + // Typed some text? + if (!key.isEmpty () || !value.isEmpty ()) + { + // LOTODO: If we're called due to the cell's text being finalized + // as a result of the user pressing the "Add Row" button, + // should this really append a row since + // slotFieldsAddRowButtonClicked() button is going to add + // another one? That's two rows when the user only clicked + // that button once! + fieldsAppendEmptyRow (); + } + } +} + +//--------------------------------------------------------------------- +// private slot + +void kpDocumentMetaInfoDialog::slotFieldsAddRowButtonClicked () +{ +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "kpDocumentMetaInfoDialog::slotFieldsAddRowButtonClicked()"; +#endif + + const int r = d->fieldsTableWidget->currentRow (); +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "\tr=" << r; +#endif + + // (if no row is selected, r = -1) + fieldsAddEmptyRow (r + 1); + + // Edit the key of this new row (column 0). + // No one edits the value first (column 1). + editCell ((r + 1)/*row*/, 0/*col*/); +} + +//--------------------------------------------------------------------- + +// private slot +void kpDocumentMetaInfoDialog::slotFieldsDeleteRowButtonClicked () +{ +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "kpDocumentMetaInfoDialog::slotFieldsDeleteRowButtonClicked()"; +#endif + + const int r = d->fieldsTableWidget->currentRow (); +#if DEBUG_KP_DOCUMENT_META_INFO_DIALOG + qCDebug(kpLogDialogs) << "\tr=" << r; +#endif + + Q_ASSERT (isFieldsRowDeleteable (r)); + fieldsDeleteRow (r); +} + + +// private slot virtual [base QDialog] +void kpDocumentMetaInfoDialog::accept () +{ + // Validate text fields. + QString errorMessage; + (void) metaInfo (&errorMessage); + if (!errorMessage.isEmpty ()) + { + KMessageBox::sorry (this, errorMessage, i18nc ("@title:window", "Invalid Text Fields")); + return; + } + + QDialog::accept (); +} + + diff --git a/dialogs/imagelib/kpDocumentMetaInfoDialog.h b/dialogs/imagelib/kpDocumentMetaInfoDialog.h new file mode 100644 index 0000000..1b73e33 --- /dev/null +++ b/dialogs/imagelib/kpDocumentMetaInfoDialog.h @@ -0,0 +1,114 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpDocumentMetaInfoDialog_H +#define kpDocumentMetaInfoDialog_H + + +#include + + +class QTableWidgetItem; + +class kpDocumentMetaInfo; + + +// Dialog for editing document meta information (see kpDocumentMetaInfo). +// It contains: +// +// 1. DPI spinboxes +// 2. Offset spinboxes +// 3. Text Fields +// +// The Text Fields widget always keeps an empty key-value row at the bottom. +// If text is entered in this row, a new one is created. This allows users +// to add new rows without pressing any pushbuttons. +class kpDocumentMetaInfoDialog : public QDialog +{ +Q_OBJECT + +public: + kpDocumentMetaInfoDialog (const kpDocumentMetaInfo *docMetaInfo, + QWidget *parent); + ~kpDocumentMetaInfoDialog () override; + +public: + bool isNoOp () const; + + kpDocumentMetaInfo originalMetaInfo () const; + + // Returns the meta information gathered from all the UI. + // + // If there is any invalid data in the UI (e.g. duplicate text field + // keys), the returned meta information will still be valid but will not + // contain the complete contents of the UI (this description is + // deliberately vague so that you don't use the return value in such a + // situation). In this situation, if is set, a non-empty, + // translated error message will be returned through it. + // + // If all data in the UI is valid and is set, an empty + // string will be returned through it. + // + // If QDialog::exec() succeeded, all data in the UI was valid so the + // returned meta information will be complete and correct. + // + // This is a slow method as it recalculates the meta information each + // time it's called. + kpDocumentMetaInfo metaInfo (QString *errorMessage = nullptr) const; + +private: + void editCell (int r, int c); + void fieldsUpdateVerticalHeader (); + + void fieldsAddEmptyRow (int atRow); + void fieldsAppendEmptyRow (); + + bool isFieldsRowDeleteable (int row) const; + void fieldsDeleteRow (int r); + + void enableFieldsDeleteRowButtonIfShould (); + +private slots: + void setUIToOriginalMetaInfo (); + void slotFieldsCurrentCellChanged (int row, int col, int oldRow, int oldCol); + + // Allows the user to add a row without pressing any pushbuttons: + // Appends a new, blank row when text has been added to the last row. + void slotFieldsItemChanged (QTableWidgetItem *item); + + void slotFieldsAddRowButtonClicked (); + void slotFieldsDeleteRowButtonClicked (); + + void accept () override; + +private: + struct kpDocumentMetaInfoDialogPrivate * const d; +}; + + +#endif // kpDocumentMetaInfoDialog_H diff --git a/dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp b/dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp new file mode 100644 index 0000000..fa5e458 --- /dev/null +++ b/dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp @@ -0,0 +1,467 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TRANSFORM_PREVIEW_DIALOG 0 + + +#include "dialogs/imagelib/transforms/kpTransformPreviewDialog.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" +#include + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "imagelib/kpColor.h" +#include "document/kpDocument.h" +#include "pixmapfx/kpPixmapFX.h" +#include "generic/widgets/kpResizeSignallingLabel.h" +#include "environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h" + + +kpTransformPreviewDialog::kpTransformPreviewDialog (Features features, + bool reserveTopRow, + const QString &caption, + const QString &afterActionText, + bool actOnSelection, + kpTransformDialogEnvironment *_env, + QWidget *parent) + : QDialog (parent), + m_afterActionText (afterActionText), + m_actOnSelection (actOnSelection), + m_dimensionsGroupBox (nullptr), + m_afterTransformDimensionsLabel (nullptr), + m_previewGroupBox (nullptr), + m_previewPixmapLabel (nullptr), + m_gridLayout (nullptr), + m_environ (_env) +{ + setWindowTitle (caption); + QDialogButtonBox *buttons = new QDialogButtonBox (QDialogButtonBox::Ok | + QDialogButtonBox::Cancel, this); + connect (buttons, &QDialogButtonBox::accepted, this, &kpTransformPreviewDialog::accept); + connect (buttons, &QDialogButtonBox::rejected, this, &kpTransformPreviewDialog::reject); + + QWidget *baseWidget = new QWidget (this); + m_mainWidget = baseWidget; + + auto *dialogLayout = new QVBoxLayout (this); + dialogLayout->addWidget (baseWidget); + dialogLayout->addWidget (buttons); + + + if (document ()) + { + m_oldWidth = document ()->width (actOnSelection); + m_oldHeight = document ()->height (actOnSelection); + } + else + { + m_oldWidth = m_oldHeight = 1; + } + + + if (features & Dimensions) { + createDimensionsGroupBox (); + } + + if (features & Preview) { + createPreviewGroupBox (); + } + + + m_gridLayout = new QGridLayout (baseWidget ); + m_gridLayout->setContentsMargins(0, 0, 0, 0); + m_gridNumRows = reserveTopRow ? 1 : 0; + if (m_dimensionsGroupBox || m_previewGroupBox) + { + if (m_dimensionsGroupBox && m_previewGroupBox) + { + m_gridLayout->addWidget (m_dimensionsGroupBox, m_gridNumRows, 0); + m_gridLayout->addWidget (m_previewGroupBox, m_gridNumRows, 1); + + m_gridLayout->setColumnStretch (1, 1); + } + else if (m_dimensionsGroupBox) + { + m_gridLayout->addWidget (m_dimensionsGroupBox, + m_gridNumRows, 0, 1, 2); + } + else if (m_previewGroupBox) + { + m_gridLayout->addWidget (m_previewGroupBox, + m_gridNumRows, 0, 1, 2); + } + + m_gridLayout->setRowStretch (m_gridNumRows, 1); + m_gridNumRows++; + } +} + +kpTransformPreviewDialog::~kpTransformPreviewDialog () = default; + + +// private +void kpTransformPreviewDialog::createDimensionsGroupBox () +{ + m_dimensionsGroupBox = new QGroupBox (i18n ("Dimensions"), mainWidget ()); + + auto *originalLabel = new QLabel (i18n ("Original:"), m_dimensionsGroupBox); + QString originalDimensions; + if (document ()) + { + originalDimensions = i18n ("%1 x %2", + m_oldWidth, + m_oldHeight); + + // Stop the Dimensions Group Box from resizing so often + const QString minimumLengthString (QStringLiteral("100000 x 100000")); + const int padLength = minimumLengthString.length (); + for (int i = originalDimensions.length (); i < padLength; i++) { + originalDimensions += ' '; + } + } + auto *originalDimensionsLabel = new QLabel (originalDimensions, m_dimensionsGroupBox); + + auto *afterTransformLabel = new QLabel (m_afterActionText, m_dimensionsGroupBox); + m_afterTransformDimensionsLabel = new QLabel (m_dimensionsGroupBox); + + + auto *dimensionsLayout = new QGridLayout (m_dimensionsGroupBox ); + dimensionsLayout->addWidget (originalLabel, 0, 0, Qt::AlignBottom); + dimensionsLayout->addWidget (originalDimensionsLabel, 0, 1, Qt::AlignBottom); + dimensionsLayout->addWidget (afterTransformLabel, 1, 0, Qt::AlignTop); + dimensionsLayout->addWidget (m_afterTransformDimensionsLabel, 1, 1, Qt::AlignTop); +} + +// private +void kpTransformPreviewDialog::createPreviewGroupBox () +{ + m_previewGroupBox = new QGroupBox (i18n ("Preview"), mainWidget ()); + + m_previewPixmapLabel = new kpResizeSignallingLabel (m_previewGroupBox); + m_previewPixmapLabel->setMinimumSize (150, 110); + connect (m_previewPixmapLabel, &kpResizeSignallingLabel::resized, + this, &kpTransformPreviewDialog::updatePreview); + + QPushButton *updatePushButton = new QPushButton (i18n ("&Update"), + m_previewGroupBox); + connect (updatePushButton, &QPushButton::clicked, + this, &kpTransformPreviewDialog::slotUpdateWithWaitCursor); + + + auto *previewLayout = new QVBoxLayout (m_previewGroupBox); + previewLayout->addWidget (m_previewPixmapLabel, 1/*stretch*/); + previewLayout->addWidget (updatePushButton, 0/*stretch*/, Qt::AlignHCenter); +} + + +// protected +kpDocument *kpTransformPreviewDialog::document () const +{ + return m_environ->document (); +} + +// protected +QWidget *kpTransformPreviewDialog::mainWidget () const +{ + return m_mainWidget; +} + +// protected +void kpTransformPreviewDialog::addCustomWidgetToFront (QWidget *w) +{ + m_gridLayout->addWidget (w, 0, 0, 1, 2); +} + +// protected +void kpTransformPreviewDialog::addCustomWidget (QWidget *w) +{ + m_gridLayout->addWidget (w, m_gridNumRows, 0, 1, 2); + m_gridNumRows++; +} + + +// public override [base QWidget] +void kpTransformPreviewDialog::setUpdatesEnabled (bool enable) +{ + QDialog::setUpdatesEnabled (enable); + + if (enable) { + slotUpdateWithWaitCursor (); + } +} + + +// private +void kpTransformPreviewDialog::updateDimensions () +{ + if (!m_dimensionsGroupBox) { + return; + } + + kpDocument *doc = document (); + if (!doc) { + return; + } + + if (!updatesEnabled ()) + { + #if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "updates not enabled - aborting"; + #endif + return; + } + + QSize newDim = newDimensions (); +#if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "kpTransformPreviewDialog::updateDimensions(): newDim=" << newDim; +#endif + + QString newDimString = i18n ("%1 x %2", + newDim.width (), + newDim.height ()); + m_afterTransformDimensionsLabel->setText (newDimString); +} + + +// public static +double kpTransformPreviewDialog::aspectScale (int newWidth, int newHeight, + int oldWidth, int oldHeight) +{ + double widthScale = double (newWidth) / double (oldWidth); + double heightScale = double (newHeight) / double (oldHeight); + + // Keeps aspect ratio + return qMin (widthScale, heightScale); +} + +// public static +int kpTransformPreviewDialog::scaleDimension (int dimension, double scale, int min, int max) +{ + return qMax (min, + qMin (max, + qRound (dimension * scale))); +} + + +// private +void kpTransformPreviewDialog::updateShrunkenDocumentPixmap () +{ +#if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "kpTransformPreviewDialog::updateShrunkenDocumentPixmap()" + << " shrunkenDocPixmap.size=" + << m_shrunkenDocumentPixmap.size () + << " previewPixmapLabelSizeWhenUpdatedPixmap=" + << m_previewPixmapLabelSizeWhenUpdatedPixmap + << " previewPixmapLabel.size=" + << m_previewPixmapLabel->size () + << endl; +#endif + + if (!m_previewGroupBox) { + return; + } + + + kpDocument *doc = document (); + Q_ASSERT (doc && !doc->image ().isNull ()); + + if (m_shrunkenDocumentPixmap.isNull () || + m_previewPixmapLabel->size () != m_previewPixmapLabelSizeWhenUpdatedPixmap) + { + #if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "\tupdating shrunkenDocPixmap"; + #endif + + // TODO: Why the need to keep aspect ratio here? + // Isn't scaling the skewed result maintaining aspect enough? + double keepsAspectScale = aspectScale (m_previewPixmapLabel->width (), + m_previewPixmapLabel->height (), + m_oldWidth, + m_oldHeight); + + kpImage image; + + if (m_actOnSelection) + { + kpAbstractImageSelection *sel = doc->imageSelection ()->clone (); + if (!sel->hasContent ()) { + sel->setBaseImage (doc->getSelectedBaseImage ()); + } + + image = sel->transparentImage (); + delete sel; + } + else + { + image = doc->image (); + } + + m_shrunkenDocumentPixmap = kpPixmapFX::scale ( + image, + scaleDimension (m_oldWidth, + keepsAspectScale, + 1, m_previewPixmapLabel->width ()), + scaleDimension (m_oldHeight, + keepsAspectScale, + 1, m_previewPixmapLabel->height ())); + + m_previewPixmapLabelSizeWhenUpdatedPixmap = m_previewPixmapLabel->size (); + } +} + + +// private +void kpTransformPreviewDialog::updatePreview () +{ +#if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "kpTransformPreviewDialog::updatePreview()"; +#endif + + if (!m_previewGroupBox) { + return; + } + + + kpDocument *doc = document (); + if (!doc) { + return; + } + + + if (!updatesEnabled ()) + { + #if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "updates not enabled - aborting"; + #endif + return; + } + + + updateShrunkenDocumentPixmap (); + + if (!m_shrunkenDocumentPixmap.isNull ()) + { + QSize newDim = newDimensions (); + double keepsAspectScale = aspectScale (m_previewPixmapLabel->width (), + m_previewPixmapLabel->height (), + newDim.width (), + newDim.height ()); + + int targetWidth = scaleDimension (newDim.width (), + keepsAspectScale, + 1, // min + m_previewPixmapLabel->width ()); // max + int targetHeight = scaleDimension (newDim.height (), + keepsAspectScale, + 1, // min + m_previewPixmapLabel->height ()); // max + + // TODO: Some effects work directly on QImage; so could cache the + // QImage so that transformPixmap() is faster + QImage transformedShrunkenDocumentPixmap = + transformPixmap (m_shrunkenDocumentPixmap, targetWidth, targetHeight); + + QImage previewPixmap (m_previewPixmapLabel->width (), + m_previewPixmapLabel->height (), QImage::Format_ARGB32_Premultiplied); + previewPixmap.fill(QColor(Qt::transparent).rgba()); + kpPixmapFX::setPixmapAt (&previewPixmap, + (previewPixmap.width () - transformedShrunkenDocumentPixmap.width ()) / 2, + (previewPixmap.height () - transformedShrunkenDocumentPixmap.height ()) / 2, + transformedShrunkenDocumentPixmap); + +#if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "kpTransformPreviewDialog::updatePreview ():" + << " shrunkenDocumentPixmap: w=" + << m_shrunkenDocumentPixmap.width () + << " h=" + << m_shrunkenDocumentPixmap.height () + << " previewPixmapLabel: w=" + << m_previewPixmapLabel->width () + << " h=" + << m_previewPixmapLabel->height () + << " transformedShrunkenDocumentPixmap: w=" + << transformedShrunkenDocumentPixmap.width () + << " h=" + << transformedShrunkenDocumentPixmap.height () + << " previewPixmap: w=" + << previewPixmap.width () + << " h=" + << previewPixmap.height () + << endl; +#endif + + m_previewPixmapLabel->setPixmap (QPixmap::fromImage(previewPixmap)); + + // immediate update esp. for expensive previews + m_previewPixmapLabel->repaint (); + +#if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "\tafter QLabel::setPixmap() previewPixmapLabel: w=" + << m_previewPixmapLabel->width () + << " h=" + << m_previewPixmapLabel->height () + << endl; +#endif + } +} + + +// protected slot virtual +void kpTransformPreviewDialog::slotUpdate () +{ +#if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "kpTransformPreviewDialog::slotUpdate()"; +#endif + updateDimensions (); + updatePreview (); +} + +// protected slot virtual +void kpTransformPreviewDialog::slotUpdateWithWaitCursor () +{ +#if DEBUG_KP_TRANSFORM_PREVIEW_DIALOG + qCDebug(kpLogDialogs) << "kpTransformPreviewDialog::slotUpdateWithWaitCursor()"; +#endif + + QApplication::setOverrideCursor (Qt::WaitCursor); + + slotUpdate (); + + QApplication::restoreOverrideCursor (); +} + + diff --git a/dialogs/imagelib/transforms/kpTransformPreviewDialog.h b/dialogs/imagelib/transforms/kpTransformPreviewDialog.h new file mode 100644 index 0000000..a52d326 --- /dev/null +++ b/dialogs/imagelib/transforms/kpTransformPreviewDialog.h @@ -0,0 +1,145 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformPreviewDialog_H +#define kpTransformPreviewDialog_H + + +#include +#include + + +class QLabel; +class QGridLayout; +class QGroupBox; + +class kpDocument; +class kpResizeSignallingLabel; +class kpTransformDialogEnvironment; + + +class kpTransformPreviewDialog : public QDialog +{ +Q_OBJECT + +public: + enum Features + { + Dimensions = 1, Preview = 2, + AllFeatures = Dimensions | Preview + }; + + // You must call slotUpdate() in your constructor + kpTransformPreviewDialog (Features features, + bool reserveTopRow, + // e.g. "Skew (Image|Selection)" + const QString &caption, + // (in the Dimensions Group Box) e.g. "After Skew:" + const QString &afterActionText, + bool actOnSelection, + kpTransformDialogEnvironment *_env, + QWidget *parent); + ~kpTransformPreviewDialog () override; + +private: + void createDimensionsGroupBox (); + void createPreviewGroupBox (); + +public: + virtual bool isNoOp () const = 0; + +protected: + kpDocument *document () const; + + QWidget *mainWidget () const; + + // All widgets must have mainWidget() as their parent + void addCustomWidgetToFront (QWidget *w); // see in ctor + void addCustomWidget (QWidget *w); + void addCustomWidgetToBack (QWidget *w) + { + addCustomWidget (w); + } + + virtual QSize newDimensions () const = 0; + virtual QImage transformPixmap (const QImage &pixmap, + int targetWidth, int targetHeight) const = 0; + +public: + // Use to avoid excessive, expensive preview pixmap label recalcuations, + // during init and widget relayouts. + // + // Setting to true automatically calls slotUpdateWithWaitCursor(). + // + // WARNING: This overrides a non-virtual method in QWidget. + void setUpdatesEnabled (bool enable); + +private: + void updateDimensions (); + +public: + static double aspectScale (int newWidth, int newHeight, + int oldWidth, int oldHeight); + static int scaleDimension (int dimension, double scale, int min, int max); + +private: + void updateShrunkenDocumentPixmap (); + +protected slots: + void updatePreview (); + + // Call this whenever a value (e.g. an angle) changes + // and the Dimensions & Preview need to be updated + virtual void slotUpdate (); + + virtual void slotUpdateWithWaitCursor (); + +protected: + // REFACTOR: Use d-ptr + QString m_afterActionText; + bool m_actOnSelection; + + int m_oldWidth, m_oldHeight; + + QWidget *m_mainWidget; + QGroupBox *m_dimensionsGroupBox; + QLabel *m_afterTransformDimensionsLabel; + + QGroupBox *m_previewGroupBox; + kpResizeSignallingLabel *m_previewPixmapLabel; + QSize m_previewPixmapLabelSizeWhenUpdatedPixmap; + QImage m_shrunkenDocumentPixmap; + + QGridLayout *m_gridLayout; + int m_gridNumRows; + + kpTransformDialogEnvironment *m_environ; +}; + + +#endif // kpTransformPreviewDialog_H diff --git a/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp b/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp new file mode 100644 index 0000000..5c3caac --- /dev/null +++ b/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp @@ -0,0 +1,840 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_RESIZE_SCALE_DIALOG 0 + + +#include "kpTransformResizeScaleDialog.h" + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "kpLogCategories.h" +#include + +#include "layers/selections/kpAbstractSelection.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "tools/kpTool.h" +#include "environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h" + +//--------------------------------------------------------------------- + +#define kpSettingResizeScaleLastKeepAspect "Resize Scale - Last Keep Aspect" +#define kpSettingResizeScaleScaleType "Resize Scale - ScaleType" + +//--------------------------------------------------------------------- + +#define SET_VALUE_WITHOUT_SIGNAL_EMISSION(knuminput_instance,value) \ +{ \ + knuminput_instance->blockSignals (true); \ + knuminput_instance->setValue (value); \ + knuminput_instance->blockSignals (false); \ +} + +#define IGNORE_KEEP_ASPECT_RATIO(cmd) \ +{ \ + m_ignoreKeepAspectRatio++; \ + cmd; \ + m_ignoreKeepAspectRatio--; \ +} + +//--------------------------------------------------------------------- + +kpTransformResizeScaleDialog::kpTransformResizeScaleDialog ( + kpTransformDialogEnvironment *_env, QWidget *parent) + : QDialog (parent), + m_environ (_env), + m_ignoreKeepAspectRatio (0), + m_lastType(kpTransformResizeScaleCommand::Resize) +{ + setWindowTitle (i18nc ("@title:window", "Resize / Scale")); + QDialogButtonBox *buttons = new QDialogButtonBox (QDialogButtonBox::Ok | + QDialogButtonBox::Cancel, this); + connect (buttons, &QDialogButtonBox::accepted, this, &kpTransformResizeScaleDialog::accept); + connect (buttons, &QDialogButtonBox::rejected, this, &kpTransformResizeScaleDialog::reject); + + QWidget *baseWidget = new QWidget (this); + + auto *dialogLayout = new QVBoxLayout (this); + dialogLayout->addWidget (baseWidget); + dialogLayout->addWidget (buttons); + + QWidget *actOnBox = createActOnBox(baseWidget); + QGroupBox *operationGroupBox = createOperationGroupBox(baseWidget); + QGroupBox *dimensionsGroupBox = createDimensionsGroupBox(baseWidget); + + auto *baseLayout = new QVBoxLayout (baseWidget); + baseLayout->setContentsMargins(0, 0, 0, 0); + baseLayout->addWidget(actOnBox); + baseLayout->addWidget(operationGroupBox); + baseLayout->addWidget(dimensionsGroupBox); + + KConfigGroup cfg(KSharedConfig::openConfig(), kpSettingsGroupGeneral); + setKeepAspectRatio(cfg.readEntry(kpSettingResizeScaleLastKeepAspect, false)); + m_lastType = static_cast + (cfg.readEntry(kpSettingResizeScaleScaleType, + static_cast(kpTransformResizeScaleCommand::Resize))); + + slotActOnChanged (); + + m_newWidthInput->setFocus (); + + //enableButtonOk (!isNoOp ()); +} + +//--------------------------------------------------------------------- +// private + +kpDocument *kpTransformResizeScaleDialog::document () const +{ + return m_environ->document (); +} + +//--------------------------------------------------------------------- +// private + +kpAbstractSelection *kpTransformResizeScaleDialog::selection () const +{ + Q_ASSERT (document ()); + return document ()->selection (); +} + +//--------------------------------------------------------------------- +// private + +kpTextSelection *kpTransformResizeScaleDialog::textSelection () const +{ + Q_ASSERT (document ()); + return document ()->textSelection (); +} + +//--------------------------------------------------------------------- +// private + +QWidget *kpTransformResizeScaleDialog::createActOnBox(QWidget *baseWidget) +{ + QWidget *actOnBox = new QWidget (baseWidget); + + + auto *actOnLabel = new QLabel (i18n ("Ac&t on:"), actOnBox); + m_actOnCombo = new QComboBox (actOnBox); + + + actOnLabel->setBuddy (m_actOnCombo); + + m_actOnCombo->insertItem (Image, i18n ("Entire Image")); + if (selection ()) + { + QString selName = i18n ("Selection"); + + if (textSelection ()) { + selName = i18n ("Text Box"); + } + + m_actOnCombo->insertItem (Selection, selName); + m_actOnCombo->setCurrentIndex (Selection); + } + else + { + actOnLabel->setEnabled (false); + m_actOnCombo->setEnabled (false); + } + + auto *lay = new QHBoxLayout (actOnBox); + lay->setContentsMargins(0, 0, 0, 0); + lay->addWidget (actOnLabel); + lay->addWidget (m_actOnCombo, 1); + + connect (m_actOnCombo, static_cast(&QComboBox::activated), + this, &kpTransformResizeScaleDialog::slotActOnChanged); + + return actOnBox; +} + +//--------------------------------------------------------------------- + +static void toolButtonSetLook (QToolButton *button, + const QString &iconName, + const QString &name) +{ + QPixmap icon; + const QString qrcPath = QStringLiteral(":/icons/") + iconName; + if (!icon.load (qrcPath)) { + qWarning() << qrcPath << "not found"; + } else { + button->setIconSize (QSize (icon.width (), icon.height ())); + button->setIcon (icon); + } + + button->setToolButtonStyle (Qt::ToolButtonTextUnderIcon); + button->setText (name); + button->setFocusPolicy (Qt::StrongFocus); + button->setCheckable (true); +} + +//--------------------------------------------------------------------- +// private + +QGroupBox *kpTransformResizeScaleDialog::createOperationGroupBox (QWidget *baseWidget) +{ + QGroupBox *operationGroupBox = new QGroupBox (i18n ("Operation"), baseWidget); + operationGroupBox->setWhatsThis( + i18n ("" + "
    " + "
  • Resize: The size of the picture will be" + " increased" + " by creating new areas to the right and/or bottom" + " (filled in with the background color) or" + " decreased by cutting" + " it at the right and/or bottom.
  • " + + "
  • Scale: The picture will be expanded" + " by duplicating pixels or squashed by dropping pixels.
  • " + + "
  • Smooth Scale: This is the same as" + " Scale except that it blends neighboring" + " pixels to produce a smoother looking picture.
  • " + "
" + "
")); + + m_resizeButton = new QToolButton (operationGroupBox); + toolButtonSetLook (m_resizeButton, + QStringLiteral ("resize"), + i18n ("&Resize")); + + m_scaleButton = new QToolButton (operationGroupBox); + toolButtonSetLook (m_scaleButton, + QStringLiteral ("scale"), + i18n ("&Scale")); + + m_smoothScaleButton = new QToolButton (operationGroupBox); + toolButtonSetLook (m_smoothScaleButton, + QStringLiteral ("smooth_scale"), + i18n ("S&mooth Scale")); + + auto *resizeScaleButtonGroup = new QButtonGroup (baseWidget); + resizeScaleButtonGroup->addButton (m_resizeButton); + resizeScaleButtonGroup->addButton (m_scaleButton); + resizeScaleButtonGroup->addButton (m_smoothScaleButton); + + + auto *operationLayout = new QGridLayout (operationGroupBox ); + operationLayout->addWidget (m_resizeButton, 0, 0, Qt::AlignCenter); + operationLayout->addWidget (m_scaleButton, 0, 1, Qt::AlignCenter); + operationLayout->addWidget (m_smoothScaleButton, 0, 2, Qt::AlignCenter); + + connect (m_resizeButton, &QToolButton::toggled, + this, &kpTransformResizeScaleDialog::slotTypeChanged); + connect (m_scaleButton, &QToolButton::toggled, + this, &kpTransformResizeScaleDialog::slotTypeChanged); + connect (m_smoothScaleButton, &QToolButton::toggled, + this, &kpTransformResizeScaleDialog::slotTypeChanged); + + return operationGroupBox; +} + +//--------------------------------------------------------------------- +// private + +QGroupBox *kpTransformResizeScaleDialog::createDimensionsGroupBox(QWidget *baseWidget) +{ + QGroupBox *dimensionsGroupBox = new QGroupBox (i18n ("Dimensions"), baseWidget); + + auto *widthLabel = new QLabel (i18n ("Width:"), dimensionsGroupBox); + widthLabel->setAlignment (widthLabel->alignment () | Qt::AlignHCenter); + auto *heightLabel = new QLabel (i18n ("Height:"), dimensionsGroupBox); + heightLabel->setAlignment (heightLabel->alignment () | Qt::AlignHCenter); + + auto *originalLabel = new QLabel (i18n ("Original:"), dimensionsGroupBox); + m_originalWidthInput = new QSpinBox; + m_originalWidthInput->setRange(1, INT_MAX); + m_originalWidthInput->setValue(document()->width(static_cast (selection()))); + auto *xLabel0 = new QLabel (i18n ("x"), dimensionsGroupBox); + m_originalHeightInput = new QSpinBox; + m_originalHeightInput->setRange(1, INT_MAX); + m_originalHeightInput->setValue(document()->height(static_cast (selection()))); + + auto *newLabel = new QLabel (i18n ("&New:"), dimensionsGroupBox); + m_newWidthInput = new QSpinBox; + m_newWidthInput->setRange(1, INT_MAX); + auto *xLabel1 = new QLabel (i18n ("x"), dimensionsGroupBox); + m_newHeightInput = new QSpinBox; + m_newHeightInput->setRange(1, INT_MAX); + + auto *percentLabel = new QLabel (i18n ("&Percent:"), dimensionsGroupBox); + m_percentWidthInput = new QDoubleSpinBox; + m_percentWidthInput->setRange(0.01, 1000000); + m_percentWidthInput->setValue(100); + m_percentWidthInput->setSingleStep(1); + m_percentWidthInput->setDecimals(2); + m_percentWidthInput->setSuffix(i18n("%")); + + auto *xLabel2 = new QLabel (i18n ("x"), dimensionsGroupBox); + + m_percentHeightInput = new QDoubleSpinBox; + m_percentHeightInput->setRange(0.01, 1000000); + m_percentHeightInput->setValue(100); + m_percentHeightInput->setSingleStep(1); + m_percentHeightInput->setDecimals(2); + m_percentHeightInput->setSuffix(i18n("%")); + + m_keepAspectRatioCheckBox = new QCheckBox (i18n ("Keep &aspect ratio"), + dimensionsGroupBox); + + + m_originalWidthInput->setEnabled (false); + m_originalHeightInput->setEnabled (false); + originalLabel->setBuddy (m_originalWidthInput); + newLabel->setBuddy (m_newWidthInput); + m_percentWidthInput->setValue (100); + m_percentHeightInput->setValue (100); + percentLabel->setBuddy (m_percentWidthInput); + + + auto *dimensionsLayout = new QGridLayout (dimensionsGroupBox); + dimensionsLayout->setColumnStretch (1/*column*/, 1); + dimensionsLayout->setColumnStretch (3/*column*/, 1); + + + dimensionsLayout->addWidget (widthLabel, 0, 1); + dimensionsLayout->addWidget (heightLabel, 0, 3); + + dimensionsLayout->addWidget (originalLabel, 1, 0); + dimensionsLayout->addWidget (m_originalWidthInput, 1, 1); + dimensionsLayout->addWidget (xLabel0, 1, 2); + dimensionsLayout->addWidget (m_originalHeightInput, 1, 3); + + dimensionsLayout->addWidget (newLabel, 2, 0); + dimensionsLayout->addWidget (m_newWidthInput, 2, 1); + dimensionsLayout->addWidget (xLabel1, 2, 2); + dimensionsLayout->addWidget (m_newHeightInput, 2, 3); + + dimensionsLayout->addWidget (percentLabel, 3, 0); + dimensionsLayout->addWidget (m_percentWidthInput, 3, 1); + dimensionsLayout->addWidget (xLabel2, 3, 2); + dimensionsLayout->addWidget (m_percentHeightInput, 3, 3); + + dimensionsLayout->addWidget (m_keepAspectRatioCheckBox, 4, 0, 1, 4); + dimensionsLayout->setRowStretch (4/*row*/, 1); + dimensionsLayout->setRowMinimumHeight (4/*row*/, dimensionsLayout->rowMinimumHeight (4) * 2); + + + + connect (m_newWidthInput, static_cast(&QSpinBox::valueChanged), + this, &kpTransformResizeScaleDialog::slotWidthChanged); + + connect (m_newHeightInput, static_cast(&QSpinBox::valueChanged), + this, &kpTransformResizeScaleDialog::slotHeightChanged); + + // COMPAT: KDoubleNumInput only fires valueChanged(double) once per + // edit. It should either fire: + // + // 1. At the end of the edit (triggered by clicking or tabbing + // away), like with KDE 3. + // + // OR + // + // 2. Once per keystroke. + // + // Bug in KDoubleNumInput. + connect (m_percentWidthInput, + static_cast(&QDoubleSpinBox::valueChanged), + this, &kpTransformResizeScaleDialog::slotPercentWidthChanged); + + connect (m_percentHeightInput, + static_cast(&QDoubleSpinBox::valueChanged), + this, &kpTransformResizeScaleDialog::slotPercentHeightChanged); + + connect (m_keepAspectRatioCheckBox, &QCheckBox::toggled, + this, &kpTransformResizeScaleDialog::setKeepAspectRatio); + + return dimensionsGroupBox; +} + +//--------------------------------------------------------------------- +// private + +void kpTransformResizeScaleDialog::widthFitHeightToAspectRatio () +{ + if (m_keepAspectRatioCheckBox->isChecked () && !m_ignoreKeepAspectRatio) + { + // width / height = oldWidth / oldHeight + // height = width * oldHeight / oldWidth + const int newHeight = qRound (double (imageWidth ()) * double (originalHeight ()) + / double (originalWidth ())); + IGNORE_KEEP_ASPECT_RATIO (m_newHeightInput->setValue (newHeight)); + } +} + +//--------------------------------------------------------------------- +// private + +void kpTransformResizeScaleDialog::heightFitWidthToAspectRatio () +{ + if (m_keepAspectRatioCheckBox->isChecked () && !m_ignoreKeepAspectRatio) + { + // width / height = oldWidth / oldHeight + // width = height * oldWidth / oldHeight + const int newWidth = qRound (double (imageHeight ()) * double (originalWidth ()) + / double (originalHeight ())); + IGNORE_KEEP_ASPECT_RATIO (m_newWidthInput->setValue (newWidth)); + } +} + +//--------------------------------------------------------------------- +// private + +bool kpTransformResizeScaleDialog::resizeEnabled () const +{ + return (!actOnSelection () || + (actOnSelection () && textSelection ())); +} + +//--------------------------------------------------------------------- +// private + +bool kpTransformResizeScaleDialog::scaleEnabled () const +{ + return (!(actOnSelection () && textSelection ())); +} + +//--------------------------------------------------------------------- +// private + +bool kpTransformResizeScaleDialog::smoothScaleEnabled () const +{ + return scaleEnabled (); +} + +//--------------------------------------------------------------------- +// public slot + +void kpTransformResizeScaleDialog::slotActOnChanged () +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_DIALOG && 1 + qCDebug(kpLogDialogs) << "kpTransformResizeScaleDialog::slotActOnChanged()"; +#endif + + m_resizeButton->setEnabled (resizeEnabled ()); + m_scaleButton->setEnabled (scaleEnabled ()); + m_smoothScaleButton->setEnabled (smoothScaleEnabled ()); + + // TODO: somehow share logic with (resize|*scale)Enabled() + if (actOnSelection ()) + { + if (textSelection ()) + { + m_resizeButton->setChecked (true); + } + else + { + if (m_lastType == kpTransformResizeScaleCommand::Scale) { + m_scaleButton->setChecked (true); + } + else { + m_smoothScaleButton->setChecked (true); + } + } + } + else + { + if (m_lastType == kpTransformResizeScaleCommand::Resize) { + m_resizeButton->setChecked (true); + } + else if (m_lastType == kpTransformResizeScaleCommand::Scale) { + m_scaleButton->setChecked (true); + } + else { + m_smoothScaleButton->setChecked (true); + } + } + + + m_originalWidthInput->setValue (originalWidth ()); + m_originalHeightInput->setValue (originalHeight ()); + + + m_newWidthInput->blockSignals (true); + m_newHeightInput->blockSignals (true); + + m_newWidthInput->setMinimum (actOnSelection () ? + selection ()->minimumWidth () : + 1); + m_newHeightInput->setMinimum (actOnSelection () ? + selection ()->minimumHeight () : + 1); + + m_newWidthInput->blockSignals (false); + m_newHeightInput->blockSignals (false); + + + IGNORE_KEEP_ASPECT_RATIO (slotPercentWidthChanged (m_percentWidthInput->value ())); + IGNORE_KEEP_ASPECT_RATIO (slotPercentHeightChanged (m_percentHeightInput->value ())); + + setKeepAspectRatio (m_keepAspectRatioCheckBox->isChecked ()); +} + +//--------------------------------------------------------------------- +// public slot + +void kpTransformResizeScaleDialog::slotTypeChanged () +{ + m_lastType = type (); +} + +//--------------------------------------------------------------------- + +// public slot +void kpTransformResizeScaleDialog::slotWidthChanged (int width) +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_DIALOG && 1 + qCDebug(kpLogDialogs) << "kpTransformResizeScaleDialog::slotWidthChanged(" + << width << ")" << endl; +#endif + const double newPercentWidth = double (width) * 100 / double (originalWidth ()); + + SET_VALUE_WITHOUT_SIGNAL_EMISSION (m_percentWidthInput,newPercentWidth); + + widthFitHeightToAspectRatio (); + + //enableButtonOk (!isNoOp ()); +} + +//--------------------------------------------------------------------- +// public slot + +void kpTransformResizeScaleDialog::slotHeightChanged (int height) +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_DIALOG && 1 + qCDebug(kpLogDialogs) << "kpTransformResizeScaleDialog::slotHeightChanged(" + << height << ")" << endl; +#endif + const double newPercentHeight = double (height) * 100 / double (originalHeight ()); + + SET_VALUE_WITHOUT_SIGNAL_EMISSION (m_percentHeightInput,newPercentHeight); + + heightFitWidthToAspectRatio (); + + //enableButtonOk (!isNoOp ()); +} + +//--------------------------------------------------------------------- +// public slot + +void kpTransformResizeScaleDialog::slotPercentWidthChanged (double percentWidth) +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_DIALOG && 1 + qCDebug(kpLogDialogs) << "kpTransformResizeScaleDialog::slotPercentWidthChanged(" + << percentWidth << ")"; +#endif + + SET_VALUE_WITHOUT_SIGNAL_EMISSION (m_newWidthInput, + qRound (percentWidth * originalWidth () / 100.0)); + + widthFitHeightToAspectRatio (); + + //enableButtonOk (!isNoOp ()); +} + +//--------------------------------------------------------------------- +// public slot + +void kpTransformResizeScaleDialog::slotPercentHeightChanged (double percentHeight) +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_DIALOG && 1 + qCDebug(kpLogDialogs) << "kpTransformResizeScaleDialog::slotPercentHeightChanged(" + << percentHeight << ")"; +#endif + + SET_VALUE_WITHOUT_SIGNAL_EMISSION (m_newHeightInput, + qRound (percentHeight * originalHeight () / 100.0)); + + heightFitWidthToAspectRatio (); + + //enableButtonOk (!isNoOp ()); +} + +//--------------------------------------------------------------------- +// public slot + +void kpTransformResizeScaleDialog::setKeepAspectRatio (bool on) +{ +#if DEBUG_KP_TOOL_RESIZE_SCALE_DIALOG && 1 + qCDebug(kpLogDialogs) << "kpTransformResizeScaleDialog::setKeepAspectRatio(" + << on << ")"; +#endif + + if (on != m_keepAspectRatioCheckBox->isChecked ()) { + m_keepAspectRatioCheckBox->setChecked (on); + } + + if (on) { + widthFitHeightToAspectRatio (); + } +} + +//--------------------------------------------------------------------- + +#undef IGNORE_KEEP_ASPECT_RATIO +#undef SET_VALUE_WITHOUT_SIGNAL_EMISSION + + +//--------------------------------------------------------------------- +// private + +int kpTransformResizeScaleDialog::originalWidth () const +{ + return document ()->width (actOnSelection ()); +} + +//--------------------------------------------------------------------- +// private + +int kpTransformResizeScaleDialog::originalHeight () const +{ + return document ()->height (actOnSelection ()); +} + +//--------------------------------------------------------------------- +// public + +int kpTransformResizeScaleDialog::imageWidth () const +{ + return m_newWidthInput->value (); +} + +//--------------------------------------------------------------------- +// public + +int kpTransformResizeScaleDialog::imageHeight () const +{ + return m_newHeightInput->value (); +} + +//--------------------------------------------------------------------- +// public + +bool kpTransformResizeScaleDialog::actOnSelection () const +{ + return (m_actOnCombo->currentIndex () == Selection); +} + +//--------------------------------------------------------------------- +// public + +kpTransformResizeScaleCommand::Type kpTransformResizeScaleDialog::type () const +{ + if (m_resizeButton->isChecked ()) { + return kpTransformResizeScaleCommand::Resize; + } + + if (m_scaleButton->isChecked ()) { + return kpTransformResizeScaleCommand::Scale; + } + + return kpTransformResizeScaleCommand::SmoothScale; +} + +//--------------------------------------------------------------------- +// public + +bool kpTransformResizeScaleDialog::isNoOp () const +{ + return (imageWidth () == originalWidth () && + imageHeight () == originalHeight ()); +} + +//--------------------------------------------------------------------- +// private slot virtual [base QDialog] + +void kpTransformResizeScaleDialog::accept () +{ + enum { eText, eSelection, eImage } actionTarget = eText; + + if (actOnSelection ()) + { + if (textSelection ()) + { + actionTarget = eText; + } + else + { + actionTarget = eSelection; + } + } + else + { + actionTarget = eImage; + } + + + KLocalizedString message; + QString caption, continueButtonText; + + // Note: If eText, can't Scale nor SmoothScale. + // If eSelection, can't Resize. + + switch (type ()) + { + default: + case kpTransformResizeScaleCommand::Resize: + if (actionTarget == eText) + { + message = + ki18n ("

Resizing the text box to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to resize the text box?

"); + + caption = i18nc ("@title:window", "Resize Text Box?"); + continueButtonText = i18n ("R&esize Text Box"); + } + else if (actionTarget == eImage) + { + message = + ki18n ("

Resizing the image to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to resize the image?

"); + + caption = i18nc ("@title:window", "Resize Image?"); + continueButtonText = i18n ("R&esize Image"); + } + + break; + + case kpTransformResizeScaleCommand::Scale: + if (actionTarget == eImage) + { + message = + ki18n ("

Scaling the image to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to scale the image?

"); + + caption = i18nc ("@title:window", "Scale Image?"); + continueButtonText = i18n ("Scal&e Image"); + } + else if (actionTarget == eSelection) + { + message = + ki18n ("

Scaling the selection to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to scale the selection?

"); + + caption = i18nc ("@title:window", "Scale Selection?"); + continueButtonText = i18n ("Scal&e Selection"); + } + + break; + + case kpTransformResizeScaleCommand::SmoothScale: + if (actionTarget == eImage) + { + message = + ki18n ("

Smooth Scaling the image to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to smooth scale the image?

"); + + caption = i18nc ("@title:window", "Smooth Scale Image?"); + continueButtonText = i18n ("Smooth Scal&e Image"); + } + else if (actionTarget == eSelection) + { + message = + ki18n ("

Smooth Scaling the selection to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to smooth scale the selection?

"); + + caption = i18nc ("@title:window", "Smooth Scale Selection?"); + continueButtonText = i18n ("Smooth Scal&e Selection"); + } + + break; + } + + + if (kpTool::warnIfBigImageSize (originalWidth (), + originalHeight (), + imageWidth (), imageHeight (), + message.subs (imageWidth ()).subs (imageHeight ()).toString (), + caption, + continueButtonText, + this)) + { + QDialog::accept (); + } + + // store settings + KConfigGroup cfg(KSharedConfig::openConfig(), kpSettingsGroupGeneral); + + cfg.writeEntry(kpSettingResizeScaleLastKeepAspect, m_keepAspectRatioCheckBox->isChecked()); + cfg.writeEntry(kpSettingResizeScaleScaleType, static_cast(m_lastType)); + cfg.sync(); +} + +//--------------------------------------------------------------------- + diff --git a/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.h b/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.h new file mode 100644 index 0000000..20ce224 --- /dev/null +++ b/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.h @@ -0,0 +1,122 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformResizeScaleDialog_H +#define kpTransformResizeScaleDialog_H + +#include + +#include "imagelib/kpColor.h" +#include "commands/imagelib/transforms/kpTransformResizeScaleCommand.h" + + +class QCheckBox; +class QComboBox; +class QGroupBox; +class QToolButton; +class QSpinBox; +class QDoubleSpinBox; + +class kpAbstractSelection; +class kpDocument; +class kpTextSelection; +class kpTransformDialogEnvironment; + + +class kpTransformResizeScaleDialog : public QDialog +{ +Q_OBJECT + + public: + kpTransformResizeScaleDialog(kpTransformDialogEnvironment *_env, QWidget *parent); + + enum ActOn + { + Image, Selection + }; + + int imageWidth () const; + int imageHeight () const; + bool actOnSelection () const; + kpTransformResizeScaleCommand::Type type () const; + + bool isNoOp () const; + + public slots: + void slotActOnChanged (); + void slotTypeChanged (); + + void slotWidthChanged (int width); + void slotHeightChanged (int height); + + void slotPercentWidthChanged (double percentWidth); + void slotPercentHeightChanged (double percentHeight); + + private: + kpDocument *document () const; + kpAbstractSelection *selection () const; + kpTextSelection *textSelection () const; + + QWidget *createActOnBox(QWidget *baseWidget); + QGroupBox *createOperationGroupBox(QWidget *baseWidget); + QGroupBox *createDimensionsGroupBox(QWidget *baseWidget); + + void widthFitHeightToAspectRatio (); + void heightFitWidthToAspectRatio (); + + bool resizeEnabled () const; + bool scaleEnabled () const; + bool smoothScaleEnabled () const; + int originalWidth () const; + int originalHeight () const; + + private slots: + void accept() override; + void setKeepAspectRatio(bool on); + + private: + kpTransformDialogEnvironment *m_environ; + + QComboBox *m_actOnCombo; + + QToolButton *m_resizeButton, + *m_scaleButton, + *m_smoothScaleButton; + + QSpinBox *m_originalWidthInput, *m_originalHeightInput, + *m_newWidthInput, *m_newHeightInput; + QDoubleSpinBox *m_percentWidthInput, *m_percentHeightInput; + QCheckBox *m_keepAspectRatioCheckBox; + + int m_ignoreKeepAspectRatio; + + kpTransformResizeScaleCommand::Type m_lastType; +}; + + +#endif // kpTransformResizeScaleDialog_H diff --git a/dialogs/imagelib/transforms/kpTransformRotateDialog.cpp b/dialogs/imagelib/transforms/kpTransformRotateDialog.cpp new file mode 100644 index 0000000..012e3ae --- /dev/null +++ b/dialogs/imagelib/transforms/kpTransformRotateDialog.cpp @@ -0,0 +1,336 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_ROTATE 0 + + +#include "kpTransformRotateDialog.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" +#include "environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h" +#include "views/manager/kpViewManager.h" + +#include "kpLogCategories.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +// private static +int kpTransformRotateDialog::s_lastWidth = -1, + kpTransformRotateDialog::s_lastHeight = -1; + +// private static +bool kpTransformRotateDialog::s_lastIsClockwise = true; +int kpTransformRotateDialog::s_lastAngleCustom = 0; + + +kpTransformRotateDialog::kpTransformRotateDialog (bool actOnSelection, + kpTransformDialogEnvironment *_env, QWidget *parent) + : kpTransformPreviewDialog (kpTransformPreviewDialog::AllFeatures, + false/*don't reserve top row*/, + actOnSelection ? i18nc ("@title:window", "Rotate Selection") : i18nc ("@title:window", "Rotate Image"), + i18n ("After rotate:"), + actOnSelection, + _env, parent) +{ + s_lastAngleCustom = 0; + + + createDirectionGroupBox (); + createAngleGroupBox (); + + + if (s_lastWidth > 0 && s_lastHeight > 0) { + resize (s_lastWidth, s_lastHeight); + } + + + slotAngleCustomRadioButtonToggled (m_angleCustomRadioButton->isChecked ()); + slotUpdate (); +} + +kpTransformRotateDialog::~kpTransformRotateDialog () +{ + s_lastWidth = width (); + s_lastHeight = height (); +} + + +// private +void kpTransformRotateDialog::createDirectionGroupBox () +{ + auto *directionGroupBox = new QGroupBox (i18n ("Direction"), mainWidget ()); + addCustomWidget (directionGroupBox); + + QPixmap antiClockwisePixmap; + const QIcon rotateLeftIcon = QIcon::fromTheme(QStringLiteral("object-rotate-left")); + // Don't fall back to a generic "object-rotate" or "object" + if (rotateLeftIcon.isNull() || rotateLeftIcon.name() != QLatin1String("object-rotate-left")) { + antiClockwisePixmap = QPixmap(QStringLiteral(":/icons/image_rotate_anticlockwise")); + } else { + antiClockwisePixmap = rotateLeftIcon.pixmap(48); + } + + auto *antiClockwisePixmapLabel = new QLabel (directionGroupBox); + antiClockwisePixmapLabel->setPixmap (antiClockwisePixmap); + + QPixmap clockwisePixmap; + const QIcon rotateRightIcon = QIcon::fromTheme(QStringLiteral("object-rotate-right")); + if (rotateRightIcon.isNull() || rotateRightIcon.name() != QLatin1String("object-rotate-right")) { + clockwisePixmap = QPixmap(QStringLiteral(":/icons/image_rotate_clockwise")); + } else { + clockwisePixmap = rotateRightIcon.pixmap(48); + } + + auto *clockwisePixmapLabel = new QLabel (directionGroupBox); + clockwisePixmapLabel->setPixmap (clockwisePixmap); + + m_antiClockwiseRadioButton = new QRadioButton (i18n ("Cou&nterclockwise"), directionGroupBox); + m_clockwiseRadioButton = new QRadioButton (i18n ("C&lockwise"), directionGroupBox); + + + m_antiClockwiseRadioButton->setChecked (!s_lastIsClockwise); + m_clockwiseRadioButton->setChecked (s_lastIsClockwise); + + + auto *directionLayout = new QGridLayout (directionGroupBox ); + directionLayout->addWidget (antiClockwisePixmapLabel, 0, 0, Qt::AlignCenter); + directionLayout->addWidget (clockwisePixmapLabel, 0, 1, Qt::AlignCenter); + directionLayout->addWidget (m_antiClockwiseRadioButton, 1, 0, Qt::AlignCenter); + directionLayout->addWidget (m_clockwiseRadioButton, 1, 1, Qt::AlignCenter); + + + connect (m_antiClockwiseRadioButton, &QRadioButton::toggled, + this, &kpTransformRotateDialog::slotUpdate); + + connect (m_clockwiseRadioButton, &QRadioButton::toggled, + this, &kpTransformRotateDialog::slotUpdate); +} + +// private +void kpTransformRotateDialog::createAngleGroupBox () +{ + auto *angleGroupBox = new QGroupBox (i18n ("Angle"), mainWidget ()); + addCustomWidget (angleGroupBox); + + + m_angle90RadioButton = new QRadioButton (i18n ("90 °rees"), angleGroupBox); + m_angle180RadioButton = new QRadioButton (i18n ("180 d&egrees"), angleGroupBox); + m_angle270RadioButton = new QRadioButton (i18n ("270 de&grees"), angleGroupBox); + + m_angleCustomRadioButton = new QRadioButton (i18n ("C&ustom:"), angleGroupBox); + m_angleCustomInput = new QSpinBox; + m_angleCustomInput->setMinimum(-359); + m_angleCustomInput->setMaximum(+359); + m_angleCustomInput->setValue(s_lastAngleCustom); + auto *degreesLabel = new QLabel (i18n ("degrees"), angleGroupBox); + + + m_angleCustomRadioButton->setChecked (true); + + + auto *angleLayout = new QGridLayout (angleGroupBox ); + + angleLayout->addWidget (m_angle90RadioButton, 0, 0, 1, 3); + angleLayout->addWidget (m_angle180RadioButton, 1, 0, 1, 3); + angleLayout->addWidget (m_angle270RadioButton, 2, 0, 1, 3); + + angleLayout->addWidget (m_angleCustomRadioButton, 3, 0); + angleLayout->addWidget (m_angleCustomInput, 3, 1); + angleLayout->addWidget (degreesLabel, 3, 2); + + angleLayout->setColumnStretch (1, 2); // Stretch Custom Angle Input + + + + connect (m_angle90RadioButton, &QRadioButton::toggled, + this, &kpTransformRotateDialog::slotUpdate); + connect (m_angle180RadioButton, &QRadioButton::toggled, + this, &kpTransformRotateDialog::slotUpdate); + connect (m_angle270RadioButton, &QRadioButton::toggled, + this, &kpTransformRotateDialog::slotUpdate); + + connect (m_angleCustomRadioButton, &QRadioButton::toggled, + this, &kpTransformRotateDialog::slotAngleCustomRadioButtonToggled); + connect (m_angleCustomRadioButton, &QRadioButton::toggled, + this, &kpTransformRotateDialog::slotUpdate); + + connect (m_angleCustomInput, + static_cast(&QSpinBox::valueChanged), + this, &kpTransformRotateDialog::slotUpdate); +} + + +// public virtual [base kpTransformPreviewDialog] +bool kpTransformRotateDialog::isNoOp () const +{ + return (angle () == 0); +} + +// public +int kpTransformRotateDialog::angle () const +{ + int retAngle; + + + if (m_angle90RadioButton->isChecked ()) { + retAngle = 90; + } + else if (m_angle180RadioButton->isChecked ()) { + retAngle = 180; + } + else if (m_angle270RadioButton->isChecked ()) { + retAngle = 270; + } + else { // if (m_angleCustomRadioButton->isChecked ()) + retAngle = m_angleCustomInput->value (); + } + + + if (m_antiClockwiseRadioButton->isChecked ()) { + retAngle *= -1; + } + + + if (retAngle < 0) { + retAngle += ((0 - retAngle) / 360 + 1) * 360; + } + + if (retAngle >= 360) { + retAngle -= ((retAngle - 360) / 360 + 1) * 360; + } + + + return retAngle; +} + + +// private virtual [base kpTransformPreviewDialog] +QSize kpTransformRotateDialog::newDimensions () const +{ + QTransform matrix = kpPixmapFX::rotateMatrix (m_oldWidth, m_oldHeight, angle ()); + QRect rect = matrix.mapRect (QRect (0, 0, m_oldWidth, m_oldHeight)); + return rect.size (); +} + +// private virtual [base kpTransformPreviewDialog] +QImage kpTransformRotateDialog::transformPixmap (const QImage &image, + int targetWidth, int targetHeight) const +{ + return kpPixmapFX::rotate (image, angle (), + m_environ->backgroundColor (m_actOnSelection), + targetWidth, targetHeight); +} + + +// private slot +void kpTransformRotateDialog::slotAngleCustomRadioButtonToggled (bool isChecked) +{ + m_angleCustomInput->setEnabled (isChecked); + + if (isChecked) { + m_angleCustomInput->setFocus(); + } +} + +// private slot virtual [base kpTransformPreviewDialog] +void kpTransformRotateDialog::slotUpdate () +{ + s_lastIsClockwise = m_clockwiseRadioButton->isChecked (); + s_lastAngleCustom = m_angleCustomInput->value (); + + kpTransformPreviewDialog::slotUpdate (); +} + + +// private slot virtual [base QDialog] +void kpTransformRotateDialog::accept () +{ + KLocalizedString message; + QString caption, continueButtonText; + + if (document ()->selection ()) + { + if (!document ()->textSelection ()) + { + message = + ki18n ("

Rotating the selection to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to rotate the selection?

"); + + caption = i18nc ("@title:window", "Rotate Selection?"); + continueButtonText = i18n ("Rotat&e Selection"); + } + } + else + { + message = + ki18n ("

Rotating the image to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to rotate the image?

"); + + caption = i18nc ("@title:window", "Rotate Image?"); + continueButtonText = i18n ("Rotat&e Image"); + } + + + const int newWidth = newDimensions ().width (); + const int newHeight = newDimensions ().height (); + + if (kpTool::warnIfBigImageSize (m_oldWidth, + m_oldHeight, + newWidth, newHeight, + message.subs (newWidth).subs (newHeight).toString (), + caption, + continueButtonText, + this)) + { + QDialog::accept (); + } +} + + diff --git a/dialogs/imagelib/transforms/kpTransformRotateDialog.h b/dialogs/imagelib/transforms/kpTransformRotateDialog.h new file mode 100644 index 0000000..8e2cf3d --- /dev/null +++ b/dialogs/imagelib/transforms/kpTransformRotateDialog.h @@ -0,0 +1,92 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformRotateDialog_H +#define kpTransformRotateDialog_H + + +#include +#include + +#include "imagelib/kpColor.h" +#include "dialogs/imagelib/transforms/kpTransformPreviewDialog.h" + + +class QButtonGroup; +class QRadioButton; +class QSpinBox; + + +class kpTransformRotateDialog : public kpTransformPreviewDialog +{ +Q_OBJECT + +public: + kpTransformRotateDialog (bool actOnSelection, + kpTransformDialogEnvironment *_env, + QWidget *parent); + ~kpTransformRotateDialog () override; + +private: + static int s_lastWidth, s_lastHeight; + static bool s_lastIsClockwise; + static int s_lastAngleCustom; + + void createDirectionGroupBox (); + void createAngleGroupBox (); + +public: + bool isNoOp () const override; + int angle () const; // 0 <= angle < 360 (clockwise); + +private: + QSize newDimensions () const override; + QImage transformPixmap (const QImage &pixmap, + int targetWidth, int targetHeight) const override; + +private slots: + void slotAngleCustomRadioButtonToggled (bool isChecked); + void slotUpdate () override; + +private slots: + void accept () override; + +private: + QRadioButton *m_antiClockwiseRadioButton, + *m_clockwiseRadioButton; + + QButtonGroup *m_angleButtonGroup; + QRadioButton *m_angle90RadioButton, + *m_angle180RadioButton, + *m_angle270RadioButton, + *m_angleCustomRadioButton; + QSpinBox *m_angleCustomInput; +}; + + +#endif // kpTransformRotateDialog_H diff --git a/dialogs/imagelib/transforms/kpTransformSkewDialog.cpp b/dialogs/imagelib/transforms/kpTransformSkewDialog.cpp new file mode 100644 index 0000000..c9e77e7 --- /dev/null +++ b/dialogs/imagelib/transforms/kpTransformSkewDialog.cpp @@ -0,0 +1,297 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SKEW 0 +#define DEBUG_KP_TOOL_SKEW_DIALOG 0 + + +#include "dialogs/imagelib/transforms/kpTransformSkewDialog.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" +#include + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" +#include "environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h" + + +// private static +int kpTransformSkewDialog::s_lastWidth = -1, + kpTransformSkewDialog::s_lastHeight = -1; + +// private static +int kpTransformSkewDialog::s_lastHorizontalAngle = 0, + kpTransformSkewDialog::s_lastVerticalAngle = 0; + + +kpTransformSkewDialog::kpTransformSkewDialog (bool actOnSelection, + kpTransformDialogEnvironment *_env, QWidget *parent) + : kpTransformPreviewDialog (kpTransformPreviewDialog::AllFeatures, + false/*don't reserve top row*/, + actOnSelection ? i18nc ("@title:window", "Skew Selection") : i18nc ("@title:window", "Skew Image"), + i18n ("After skew:"), + actOnSelection, + _env, parent) +{ + // Too confusing - disable for now + s_lastHorizontalAngle = s_lastVerticalAngle = 0; + + + createAngleGroupBox (); + + + if (s_lastWidth > 0 && s_lastHeight > 0) { + resize (s_lastWidth, s_lastHeight); + } + + + slotUpdate (); + + + m_horizontalSkewInput->setFocus (); +} + +kpTransformSkewDialog::~kpTransformSkewDialog () +{ + s_lastWidth = width (); + s_lastHeight = height (); +} + + +// private +void kpTransformSkewDialog::createAngleGroupBox () +{ + auto *angleGroupBox = new QGroupBox (i18n ("Angle"), mainWidget ()); + addCustomWidget (angleGroupBox); + + + auto *horizontalSkewPixmapLabel = new QLabel (angleGroupBox); + horizontalSkewPixmapLabel->setPixmap (QStringLiteral(":/icons/image_skew_horizontal")); + + auto *horizontalSkewLabel = new QLabel (i18n ("&Horizontal:"), angleGroupBox); + m_horizontalSkewInput = new QSpinBox; + m_horizontalSkewInput->setValue(s_lastHorizontalAngle); + m_horizontalSkewInput->setMinimum(-89); + m_horizontalSkewInput->setMaximum(+89); + + auto *horizontalSkewDegreesLabel = new QLabel (i18n ("degrees"), angleGroupBox); + + + auto *verticalSkewPixmapLabel = new QLabel (angleGroupBox); + verticalSkewPixmapLabel->setPixmap (QStringLiteral(":/icons/image_skew_vertical")); + + auto *verticalSkewLabel = new QLabel (i18n ("&Vertical:"), angleGroupBox); + m_verticalSkewInput = new QSpinBox; + m_verticalSkewInput->setValue(s_lastVerticalAngle); + m_verticalSkewInput->setMinimum(-89); + m_verticalSkewInput->setMaximum(+89); + + auto *verticalSkewDegreesLabel = new QLabel (i18n ("degrees"), angleGroupBox); + + + horizontalSkewLabel->setBuddy (m_horizontalSkewInput); + verticalSkewLabel->setBuddy (m_verticalSkewInput); + + + auto *angleLayout = new QGridLayout (angleGroupBox); + + angleLayout->addWidget (horizontalSkewPixmapLabel, 0, 0); + angleLayout->addWidget (horizontalSkewLabel, 0, 1); + angleLayout->addWidget (m_horizontalSkewInput, 0, 2, Qt::AlignVCenter); + angleLayout->addWidget (horizontalSkewDegreesLabel, 0, 3); + + angleLayout->addWidget (verticalSkewPixmapLabel, 1, 0); + angleLayout->addWidget (verticalSkewLabel, 1, 1); + angleLayout->addWidget (m_verticalSkewInput, 1, 2, Qt::AlignVCenter); + angleLayout->addWidget (verticalSkewDegreesLabel, 1, 3); + + + connect (m_horizontalSkewInput, + static_cast(&QSpinBox::valueChanged), + this, &kpTransformSkewDialog::slotUpdate); + + connect (m_verticalSkewInput, + static_cast(&QSpinBox::valueChanged), + this, &kpTransformSkewDialog::slotUpdate); +} + + +// private virtual [base kpTransformPreviewDialog] +QSize kpTransformSkewDialog::newDimensions () const +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + auto skewMatrix = kpPixmapFX::skewMatrix (doc->image (), + horizontalAngleForPixmapFX (), + verticalAngleForPixmapFX ()); + auto skewRect = skewMatrix.mapRect (doc->rect (m_actOnSelection)); + + return {skewRect.width (), skewRect.height ()}; +} + +// private virtual [base kpTransformPreviewDialog] +QImage kpTransformSkewDialog::transformPixmap (const QImage &image, + int targetWidth, int targetHeight) const +{ + return kpPixmapFX::skew (image, + horizontalAngleForPixmapFX (), + verticalAngleForPixmapFX (), + m_environ->backgroundColor (m_actOnSelection), + targetWidth, + targetHeight); +} + + +// private +void kpTransformSkewDialog::updateLastAngles () +{ + s_lastHorizontalAngle = horizontalAngle (); + s_lastVerticalAngle = verticalAngle (); +} + +// private slot virtual [base kpTransformPreviewDialog] +void kpTransformSkewDialog::slotUpdate () +{ + updateLastAngles (); + kpTransformPreviewDialog::slotUpdate (); +} + + +// public +int kpTransformSkewDialog::horizontalAngle () const +{ + return m_horizontalSkewInput->value (); +} + +// public +int kpTransformSkewDialog::verticalAngle () const +{ + return m_verticalSkewInput->value (); +} + + +// public static +int kpTransformSkewDialog::horizontalAngleForPixmapFX (int hangle) +{ + return -hangle; +} + +// public static +int kpTransformSkewDialog::verticalAngleForPixmapFX (int vangle) +{ + return -vangle; +} + + +// public +int kpTransformSkewDialog::horizontalAngleForPixmapFX () const +{ + return kpTransformSkewDialog::horizontalAngleForPixmapFX (horizontalAngle ()); +} + +// public +int kpTransformSkewDialog::verticalAngleForPixmapFX () const +{ + return kpTransformSkewDialog::verticalAngleForPixmapFX (verticalAngle ()); +} + + +// public virtual [base kpTransformPreviewDialog] +bool kpTransformSkewDialog::isNoOp () const +{ + return (horizontalAngle () == 0) && (verticalAngle () == 0); +} + + +// private slot virtual [base QDialog] +void kpTransformSkewDialog::accept () +{ + KLocalizedString message; + QString caption, continueButtonText; + + if (document ()->selection ()) + { + if (!document ()->textSelection ()) + { + message = + ki18n ("

Skewing the selection to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to skew the selection?

"); + + caption = i18nc ("@title:window", "Skew Selection?"); + continueButtonText = i18n ("Sk&ew Selection"); + } + } + else + { + message = + ki18n ("

Skewing the image to %1x%2" + " may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to skew the image?

"); + + caption = i18nc ("@title:window", "Skew Image?"); + continueButtonText = i18n ("Sk&ew Image"); + } + + + const int newWidth = newDimensions ().width (); + const int newHeight = newDimensions ().height (); + + if (kpTool::warnIfBigImageSize (m_oldWidth, + m_oldHeight, + newWidth, newHeight, + message.subs (newWidth).subs (newHeight).toString (), + caption, + continueButtonText, + this)) + { + QDialog::accept (); + } +} + + diff --git a/dialogs/imagelib/transforms/kpTransformSkewDialog.h b/dialogs/imagelib/transforms/kpTransformSkewDialog.h new file mode 100644 index 0000000..042c0a9 --- /dev/null +++ b/dialogs/imagelib/transforms/kpTransformSkewDialog.h @@ -0,0 +1,83 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformSkewDialog_H +#define kpTransformSkewDialog_H + +#include "kpTransformPreviewDialog.h" +#include "imagelib/kpColor.h" + +class QSpinBox; + + +class kpTransformSkewDialog : public kpTransformPreviewDialog +{ +Q_OBJECT + +public: + kpTransformSkewDialog (bool actOnSelection, + kpTransformDialogEnvironment *_env, QWidget *parent); + ~kpTransformSkewDialog () override; + +private: + static int s_lastWidth, s_lastHeight; + static int s_lastHorizontalAngle, s_lastVerticalAngle; + + void createAngleGroupBox (); + + QSize newDimensions () const override; + QImage transformPixmap (const QImage &image, + int targetWidth, int targetHeight) const override; + + void updateLastAngles (); + +private slots: + void slotUpdate () override; + +public: + // These are the angles the users sees in the dialog and... + int horizontalAngle () const; + int verticalAngle () const; + + // ...these functions translate them for use in kpPixmapFX::skew(). + static int horizontalAngleForPixmapFX (int hangle); + static int verticalAngleForPixmapFX (int vangle); + + int horizontalAngleForPixmapFX () const; + int verticalAngleForPixmapFX () const; + + bool isNoOp () const override; + +private slots: + void accept () override; + +private: + QSpinBox *m_horizontalSkewInput, *m_verticalSkewInput; +}; + + +#endif // kpTransformSkewDialog_H diff --git a/dialogs/kpColorSimilarityDialog.cpp b/dialogs/kpColorSimilarityDialog.cpp new file mode 100644 index 0000000..7a044b0 --- /dev/null +++ b/dialogs/kpColorSimilarityDialog.cpp @@ -0,0 +1,141 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpColorSimilarityDialog.h" + +#include "widgets/colorSimilarity/kpColorSimilarityFrame.h" + +#include +#include "../widgets/imagelib/effects/kpNumInput.h" + +#include +#include +#include +#include +#include +#include +#include + +kpColorSimilarityDialog::kpColorSimilarityDialog (QWidget *parent) + : QDialog (parent) +{ + setWindowTitle (i18nc ("@title:window", "Color Similarity")); + auto *buttons = new QDialogButtonBox (QDialogButtonBox::Ok | + QDialogButtonBox::Cancel, this); + connect (buttons, &QDialogButtonBox::accepted, this, &kpColorSimilarityDialog::accept); + connect (buttons, &QDialogButtonBox::rejected, this, &kpColorSimilarityDialog::reject); + + auto *baseWidget = new QWidget (this); + + auto *dialogLayout = new QVBoxLayout (this); + dialogLayout->addWidget (baseWidget); + dialogLayout->addWidget (buttons); + + auto *cubeGroupBox = new QGroupBox (i18n ("Preview"), baseWidget); + + m_colorSimilarityFrame = new kpColorSimilarityFrame(cubeGroupBox); + m_colorSimilarityFrame->setMinimumSize (240, 180); + + auto *updatePushButton = new QPushButton (i18n ("&Update"), cubeGroupBox); + + + auto *cubeLayout = new QVBoxLayout (cubeGroupBox); + cubeLayout->addWidget (m_colorSimilarityFrame, 1/*stretch*/); + cubeLayout->addWidget (updatePushButton, 0/*stretch*/, Qt::AlignHCenter); + + + connect (updatePushButton, &QPushButton::clicked, + this, &kpColorSimilarityDialog::slotColorSimilarityValueChanged); + + + auto *inputGroupBox = new QGroupBox (i18n ("&RGB Color Cube Distance"), + baseWidget); + + m_colorSimilarityInput = new kpIntNumInput (inputGroupBox); + m_colorSimilarityInput->setRange (0, int (kpColorSimilarityHolder::MaxColorSimilarity * 100 + 0.1/*don't floor below target int*/), + 5/*step*/); + m_colorSimilarityInput->setSuffix (i18n ("%")); + m_colorSimilarityInput->setSpecialValueText (i18n ("Exact Match")); + + // TODO: We have a good handbook section on this, which we should + // somehow link to. + m_whatIsLabel = new QLabel ( + i18n ("" + "What is Color Similarity?"), + inputGroupBox); + m_whatIsLabel->setAlignment (Qt::AlignHCenter); + connect (m_whatIsLabel, &QLabel::linkActivated, + this, &kpColorSimilarityDialog::slotWhatIsLabelClicked); + + + auto *inputLayout = new QVBoxLayout (inputGroupBox); + + inputLayout->addWidget (m_colorSimilarityInput); + inputLayout->addWidget (m_whatIsLabel); + + + // COMPAT: This is not firing properly when the user is typing in a + // new value. + connect (m_colorSimilarityInput, &kpIntNumInput::valueChanged, + this, &kpColorSimilarityDialog::slotColorSimilarityValueChanged); + + + auto *baseLayout = new QVBoxLayout (baseWidget); + baseLayout->setContentsMargins(0, 0, 0, 0); + baseLayout->addWidget (cubeGroupBox, 1/*stretch*/); + baseLayout->addWidget (inputGroupBox); +} + +kpColorSimilarityDialog::~kpColorSimilarityDialog () = default; + + +// public +double kpColorSimilarityDialog::colorSimilarity () const +{ + return m_colorSimilarityFrame->colorSimilarity (); +} + +// public +void kpColorSimilarityDialog::setColorSimilarity (double similarity) +{ + m_colorSimilarityInput->setValue (qRound (similarity * 100)); +} + + +// private slot +void kpColorSimilarityDialog::slotColorSimilarityValueChanged () +{ + m_colorSimilarityFrame->setColorSimilarity (double (m_colorSimilarityInput->value ()) / 100); +} + + +// private slot +void kpColorSimilarityDialog::slotWhatIsLabelClicked () +{ + QWhatsThis::showText(QCursor::pos(), m_colorSimilarityFrame->whatsThis(), this); +} diff --git a/dialogs/kpColorSimilarityDialog.h b/dialogs/kpColorSimilarityDialog.h new file mode 100644 index 0000000..0d224da --- /dev/null +++ b/dialogs/kpColorSimilarityDialog.h @@ -0,0 +1,68 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_COLOR_SIMILARITY_DIALOG_H +#define KP_COLOR_SIMILARITY_DIALOG_H + + +#include + + +class QLabel; + +class kpIntNumInput; + +class kpColorSimilarityFrame; + + +// LOTODO: Why doesn't this dialog automatically enforce a minimum size +// based on layout magic, like Image -> Resize / Scale? +class kpColorSimilarityDialog : public QDialog +{ +Q_OBJECT + +public: + kpColorSimilarityDialog (QWidget *parent); + ~kpColorSimilarityDialog () override; + + double colorSimilarity () const; + void setColorSimilarity (double similarity); + +private slots: + void slotColorSimilarityValueChanged (); + + void slotWhatIsLabelClicked (); + +private: + kpColorSimilarityFrame *m_colorSimilarityFrame; + kpIntNumInput *m_colorSimilarityInput; + QLabel *m_whatIsLabel; +}; + + +#endif // KP_COLOR_SIMILARITY_DIALOG_H diff --git a/dialogs/kpDocumentSaveOptionsPreviewDialog.cpp b/dialogs/kpDocumentSaveOptionsPreviewDialog.cpp new file mode 100644 index 0000000..7af2cf3 --- /dev/null +++ b/dialogs/kpDocumentSaveOptionsPreviewDialog.cpp @@ -0,0 +1,232 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET 0 + + +#include "kpDocumentSaveOptionsPreviewDialog.h" + +#include +#include +#include +#include +#include + +#include +#include "kpLogCategories.h" +#include + +#include "commands/kpCommandSize.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "pixmapfx/kpPixmapFX.h" +#include "generic/widgets/kpResizeSignallingLabel.h" +#include "dialogs/imagelib/transforms/kpTransformPreviewDialog.h" + + +// protected static +const QSize kpDocumentSaveOptionsPreviewDialog::s_pixmapLabelMinimumSize (25, 25); + + +kpDocumentSaveOptionsPreviewDialog::kpDocumentSaveOptionsPreviewDialog ( + QWidget *parent ) + : kpSubWindow (parent), + m_filePixmap (nullptr), + m_fileSize (0) +{ + setWindowTitle (i18nc ("@title:window", "Save Preview")); + + auto *baseWidget = this;//new QWidget (this); + //setMainWidget (baseWidget); + + + auto *lay = new QGridLayout ( baseWidget ); + + m_filePixmapLabel = new kpResizeSignallingLabel (baseWidget); + m_fileSizeLabel = new QLabel (baseWidget); + + + m_filePixmapLabel->setMinimumSize (s_pixmapLabelMinimumSize); + + + lay->addWidget (m_filePixmapLabel, 0, 0); + lay->addWidget (m_fileSizeLabel, 1, 0, Qt::AlignHCenter); + + + lay->setRowStretch (0, 1); + + + connect (m_filePixmapLabel, &kpResizeSignallingLabel::resized, + this, &kpDocumentSaveOptionsPreviewDialog::updatePixmapPreview); +} + +kpDocumentSaveOptionsPreviewDialog::~kpDocumentSaveOptionsPreviewDialog () +{ + delete m_filePixmap; +} + + +// public +QSize kpDocumentSaveOptionsPreviewDialog::preferredMinimumSize () const +{ + const auto contentsWidth = 180; + const auto totalMarginsWidth = fontMetrics ().height (); + + return {contentsWidth + totalMarginsWidth, contentsWidth * 3 / 4 + totalMarginsWidth}; +} + + +// public slot +void kpDocumentSaveOptionsPreviewDialog::setFilePixmapAndSize (const QImage &pixmap, + qint64 fileSize) +{ + delete m_filePixmap; + m_filePixmap = new QImage (pixmap); + + updatePixmapPreview (); + + m_fileSize = fileSize; + + const kpCommandSize::SizeType pixmapSize = kpCommandSize::PixmapSize (pixmap); + // (int cast is safe as long as the file size is not more than 20 million + // -- i.e. INT_MAX / 100 -- times the pixmap size) + const int percent = pixmapSize ? + qMax (1, + static_cast (static_cast (fileSize * 100 / pixmapSize))) : + 0; +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogDialogs) << "kpDocumentSaveOptionsPreviewDialog::setFilePixmapAndSize()" + << " pixmapSize=" << pixmapSize + << " fileSize=" << fileSize + << " raw fileSize/pixmapSize%=" + << (pixmapSize ? (kpCommandSize::SizeType) fileSize * 100 / pixmapSize : 0); +#endif + + m_fileSizeLabel->setText (i18np ("1 byte (approx. %2%)", "%1 bytes (approx. %2%)", + m_fileSize, percent)); +} + +// public slot +void kpDocumentSaveOptionsPreviewDialog::updatePixmapPreview () +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogDialogs) << "kpDocumentSaveOptionsPreviewDialog::updatePreviewPixmap()" + << " filePixmapLabel.size=" << m_filePixmapLabel->size () + << " filePixmap.size=" << m_filePixmap->size (); +#endif + + if (m_filePixmap) + { + int maxNewWidth = qMin (m_filePixmap->width (), + m_filePixmapLabel->width ()), + maxNewHeight = qMin (m_filePixmap->height (), + m_filePixmapLabel->height ()); + + double keepsAspect = kpTransformPreviewDialog::aspectScale ( + maxNewWidth, maxNewHeight, + m_filePixmap->width (), m_filePixmap->height ()); + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogDialogs) << "\tmaxNewWidth=" << maxNewWidth + << " maxNewHeight=" << maxNewHeight + << " keepsAspect=" << keepsAspect; + #endif + + const int newWidth = kpTransformPreviewDialog::scaleDimension ( + m_filePixmap->width (), + keepsAspect, + 1, + maxNewWidth); + const int newHeight = kpTransformPreviewDialog::scaleDimension ( + m_filePixmap->height (), + keepsAspect, + 1, + maxNewHeight); + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogDialogs) << "\tnewWidth=" << newWidth + << " newHeight=" << newHeight; + #endif + + QImage transformedPixmap = + kpPixmapFX::scale (*m_filePixmap, + newWidth, newHeight); + + + QImage labelPixmap (m_filePixmapLabel->width (), + m_filePixmapLabel->height (), QImage::Format_ARGB32_Premultiplied); + labelPixmap.fill(QColor(Qt::transparent).rgba()); + kpPixmapFX::setPixmapAt (&labelPixmap, + (labelPixmap.width () - transformedPixmap.width ()) / 2, + (labelPixmap.height () - transformedPixmap.height ()) / 2, + transformedPixmap); + + + m_filePixmapLabel->setPixmap (QPixmap::fromImage(labelPixmap)); + } + else + { + m_filePixmapLabel->setPixmap (QPixmap ()); + } +} + + +// protected virtual [base QWidget] +void kpDocumentSaveOptionsPreviewDialog::closeEvent (QCloseEvent *e) +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogDialogs) << "kpDocumentSaveOptionsPreviewDialog::closeEvent()"; +#endif + + QWidget::closeEvent (e); + + emit finished (); +} + +// protected virtual [base QWidget] +void kpDocumentSaveOptionsPreviewDialog::moveEvent (QMoveEvent *e) +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogDialogs) << "kpDocumentSaveOptionsPreviewDialog::moveEvent()"; +#endif + + QWidget::moveEvent (e); + + emit moved (); +} + +// protected virtual [base QWidget] +void kpDocumentSaveOptionsPreviewDialog::resizeEvent (QResizeEvent *e) +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogDialogs) << "kpDocumentSaveOptionsPreviewDialog::resizeEvent()"; +#endif + + QWidget::resizeEvent (e); + + emit resized (); +} + + diff --git a/dialogs/kpDocumentSaveOptionsPreviewDialog.h b/dialogs/kpDocumentSaveOptionsPreviewDialog.h new file mode 100644 index 0000000..0f35327 --- /dev/null +++ b/dialogs/kpDocumentSaveOptionsPreviewDialog.h @@ -0,0 +1,82 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpDocumentSaveOptionsPreviewDialog_H +#define kpDocumentSaveOptionsPreviewDialog_H + +#include "generic/widgets/kpSubWindow.h" + +#include + + +class QCloseEvent; +class QImage; +class QLabel; +class QMoveEvent; +class QResizeEvent; + +class kpResizeSignallingLabel; + + +class kpDocumentSaveOptionsPreviewDialog : public kpSubWindow +{ +Q_OBJECT + +public: + kpDocumentSaveOptionsPreviewDialog (QWidget *parent); + ~kpDocumentSaveOptionsPreviewDialog () override; + + QSize preferredMinimumSize () const; + +protected: + static const QSize s_pixmapLabelMinimumSize; + +signals: + void moved (); + void resized (); + void finished (); + +public slots: + void setFilePixmapAndSize (const QImage &filePixmap, qint64 fileSize); + void updatePixmapPreview (); + +protected: + void closeEvent (QCloseEvent *e) override; + void moveEvent (QMoveEvent *e) override; + void resizeEvent (QResizeEvent *e) override; + +protected: + QImage *m_filePixmap; + qint64 m_fileSize; + + kpResizeSignallingLabel *m_filePixmapLabel; + QLabel *m_fileSizeLabel; +}; + + +#endif // kpDocumentSaveOptionsPreviewDialog_H diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..e104c08 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kolourpaint) diff --git a/doc/KolourPaint.png b/doc/KolourPaint.png new file mode 100644 index 0000000..fbfdffd Binary files /dev/null and b/doc/KolourPaint.png differ diff --git a/doc/brush_shapes.png b/doc/brush_shapes.png new file mode 100644 index 0000000..0fa3d2c Binary files /dev/null and b/doc/brush_shapes.png differ diff --git a/doc/color_box.png b/doc/color_box.png new file mode 100644 index 0000000..106d1f5 Binary files /dev/null and b/doc/color_box.png differ diff --git a/doc/eraser_shapes.png b/doc/eraser_shapes.png new file mode 100644 index 0000000..5f51145 Binary files /dev/null and b/doc/eraser_shapes.png differ diff --git a/doc/fcc_std_text.png b/doc/fcc_std_text.png new file mode 100644 index 0000000..d906043 Binary files /dev/null and b/doc/fcc_std_text.png differ diff --git a/doc/fcc_trans_text.png b/doc/fcc_trans_text.png new file mode 100644 index 0000000..725fc31 Binary files /dev/null and b/doc/fcc_trans_text.png differ diff --git a/doc/fill_color_similarity.png b/doc/fill_color_similarity.png new file mode 100644 index 0000000..8f43968 Binary files /dev/null and b/doc/fill_color_similarity.png differ diff --git a/doc/fill_style.png b/doc/fill_style.png new file mode 100644 index 0000000..2950938 Binary files /dev/null and b/doc/fill_style.png differ diff --git a/doc/image_balance.png b/doc/image_balance.png new file mode 100644 index 0000000..41657c8 Binary files /dev/null and b/doc/image_balance.png differ diff --git a/doc/image_emboss.png b/doc/image_emboss.png new file mode 100644 index 0000000..037a2ea Binary files /dev/null and b/doc/image_emboss.png differ diff --git a/doc/image_flatten.png b/doc/image_flatten.png new file mode 100644 index 0000000..4f29ad0 Binary files /dev/null and b/doc/image_flatten.png differ diff --git a/doc/image_invert.png b/doc/image_invert.png new file mode 100644 index 0000000..831b665 Binary files /dev/null and b/doc/image_invert.png differ diff --git a/doc/image_reduce_colors.png b/doc/image_reduce_colors.png new file mode 100644 index 0000000..4dec966 Binary files /dev/null and b/doc/image_reduce_colors.png differ diff --git a/doc/image_resize_scale.png b/doc/image_resize_scale.png new file mode 100644 index 0000000..9a42d43 Binary files /dev/null and b/doc/image_resize_scale.png differ diff --git a/doc/image_rotate.png b/doc/image_rotate.png new file mode 100644 index 0000000..9ffff52 Binary files /dev/null and b/doc/image_rotate.png differ diff --git a/doc/image_skew.png b/doc/image_skew.png new file mode 100644 index 0000000..7a8fce3 Binary files /dev/null and b/doc/image_skew.png differ diff --git a/doc/image_soften_sharpen.png b/doc/image_soften_sharpen.png new file mode 100644 index 0000000..8de84c0 Binary files /dev/null and b/doc/image_soften_sharpen.png differ diff --git a/doc/index.docbook b/doc/index.docbook new file mode 100644 index 0000000..818184c --- /dev/null +++ b/doc/index.docbook @@ -0,0 +1,1505 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +The &kolourpaint; Handbook + + + + +Thurston +Dang + +&Thurston.Dang.mail; + + + + +Clarence +Dang + + + + +&Lauri.Watts; + + + + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2018-03-23 +Applications 18.04 + + + +&kolourpaint; is a free, easy-to-use paint program by &kde;. + + + + +kolourpaint +kdegraphics + + + + + +Introduction +&kolourpaint; is a free, easy-to-use paint program by &kde;. It's +perfect for everyday tasks such as: + + + +Painting - drawing diagrams and finger painting + + +Manipulating Screenshots - acquiring and editing screenshots + + +Image Manipulation - editing photos and acquired images; applying +effects + + +Icon Editing - drawing clipart and logos with transparency + + + + + + + + + + + + + +Using &kolourpaint; + +Click on the following links to explore &kolourpaint;'s +capabilities: + + + +Tools + + +Working with Color + + +View Options + + +Image Effects + + + + + +Tools + +An additional option in the Settings menu allows to +define if the tools draw with anti-aliasing (default) or not. + + + +Acquiring Screenshots + +A screenshot is a snapshot of what is on your computer's screen. It can be useful +to explain some actions that should be done to obtain the result, or to show the issue that you have found. + +To make screenshot ready for editing in &kolourpaint; window you can use File +Acquire Screenshot item from &kolourpaint; main menu. + + + + + + + + + +Using the opened dialog you can change Screenshot Delay (in seconds), and choose +to Hide Main Window during screenshoting. When you are ready to take screenshot +just click OK. The screenshot taken will be placed directly into the &kolourpaint; +editing area. + + + + +Tool Reference + + +A quick way to select a tool in &kolourpaint; is to press the single key shortcut associated with it, +documented below and in the Tool Box tooltips. You can also hold +&Alt;&Shift; while pressing the key, which is necessary when you are +writing text (as the single key shortcuts will be disabled). For example, to select the brush, press +&Alt;&Shift;B or just B (when not writing text). + + + + + + + +Brush (B) + + + + + + + + +Color Eraser (O) + + + + + + + + + +Color Picker (C) + + + + + + + + + + + + +Connected Lines (N) + + + + + + + + + + + +Curve (V) + + + + + + + + + + + + +Ellipse (E) + + + + + + + + + + + + +Eraser (A) + + + + + + + + + + + + +Flood Fill (F) + + + + + + + + + + + + +Line (L) + + + + + + + + + + + + +Pen (P) + + + + + + + + + + + + +Polygon (G) + + + + + + + + + + + + +Rectangle (R) + + + + + + + + + + + + +Rounded Rectangle (U) + + + + + + + + + + + + +Selection (Elliptical) (I) + + + + + + + + + + + + +Selection (Free-Form) (M) + + + + + + + + + + + + +Selection (Rectangular) (S) + + + + + + + + + + + + +Spraycan (Y) + + + + + + + + + + + + +Text (T) + + + + + + + +Brush +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click or click and drag with the brush to draw. + + + + + + + + + + + + + + + + +Click on one of the shapes to select the brush shape. You can use a +circular, square, slash or backslash brush shape. + + + + + + +The &LMB; draws in the foreground color. The &RMB; draws in the +background color. + + + +Color Picker <inlinemediaobject> +<imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +To set the foreground color, left click on +a pixel. To set the background color, right click on a pixel. +&kolourpaint; will then return to the previously selected tool. + + + + +Connected Lines and Polygon +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click and drag to draw connected lines. The polygon tool is used in +the same way, however, the start and end points are automatically connected +to form a polygon. + +The &LMB; draws in the foreground color. The &RMB; draws in the +background color, and will also reverse the fill color for polygons. + +You can set the line width. For +polygons, you can also set the fill +style. + + + + +Curve <inlinemediaobject> +<imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click and drag to draw a line - this sets the start and end +points. You can set up to two control points by dragging. To finish the +curve without using both or any control points, click the other mouse +button. The curve tool draws a Cubic Bezier. + +The &LMB; draws in the foreground color. The &RMB; draws in the +background color. + +You can also set the line +width. + + + + +Ellipse <inlinemediaobject> +<imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click and drag to draw an ellipse. + +The &LMB; draws in the foreground color. The &RMB; draws in the +background color, and will reverse the fill color. + +You can also set the line width and fill +style. + +For additional functionality, use the modifier keys: + + + +Hold &Shift; and drag to draw a circle. + + +To draw an ellipse with a center point of your choice, hold &Ctrl;, +click on the center point, and drag until the ellipse is the correct size +and shape. + + +To draw a circle with a center point of your choice, hold &Ctrl; and +&Shift;, click on the center point, and drag until the circle is the correct +size. + + + + + + +Erasers + + +Eraser +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click and drag with the eraser to rub out mistakes. + + +Unlike other tools, the erasers draw in the background color. To draw +in the foreground color, use the &RMB;. + + +The eraser only has square +shapes. To draw with other shapes such as circles use the Brush and the &RMB;. + + +Double-click on the Eraser icon to clear the entire image. This is +equivalent to using the Clear option on +the Image menu. + + + + + +Color Eraser +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click and drag to replace pixels of the foreground color with the +background color. To replace all pixels similar (but not necessarily exactly +equal) to the foreground color, such as in dithered images and photos, use a +Color Similarity setting other than +Exact. + + +Unlike other tools, the erasers draw in the background color. To +replace pixels of the background color with the foreground color, use the +&RMB;. + + +You can configure the eraser +size. + + +Double-click on the Color Eraser icon to apply it to the entire image. + + + + + + +Flood Fill +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click to fill a region. To fill a dithered region, use a Color Similarity setting other than Exact. + +The &LMB; fills in the foreground color. The &RMB; fills in the +background color. + + + + +Line +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click and drag to draw a line. + +The &LMB; draws in the foreground color. The &RMB; draws in the +background color. + +You can also set the line +width. + + + + + + + + + + + + + + + + + + + + + +Hold &Ctrl; to draw lines angled at the nearest multiple of 30 degrees +- these are the lines in the red diagram. + + +Hold &Shift; to draw lines angled at the nearest multiple of 45 +degrees - these are the lines in the blue diagram. + + +Hold &Ctrl; and &Shift; to draw lines angled at the nearest multiple +of 30 or 45 degrees - these are the lines in the green diagram. + + + + + + +Pen +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click to draw a dot or click and drag to draw a freehand line. + +The &LMB; draws in the foreground color. The &RMB; draws in the +background color. + + + + +Rectangles +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click and drag to draw a rectangle. The Rounded Rectangle is a Rectangle with rounded +corners. + +The &LMB; draws in the foreground color. The &RMB; draws in the background color, +and will reverse the fill color. + +You can also set the line width and fill +style. + + For additional functionality, use the modifier keys: + + + +Hold &Shift; and drag to draw a square. + + +To draw a rectangle with a center point of your choice, hold &Ctrl;, +click on the center point, and drag until the rectangle is the correct size +and shape. + + +To draw a square with a center point of your choice, hold &Ctrl; and &Shift;, +click on the center point, and drag until the square is the correct size. + + + + + + +Selections +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Use the selection tools to draw out the boundary of a +selection. + +To move the selection, click and drag on it. The main view will scroll as required to allow you to move the selection to part of the image that is not currently displayed. + + +You can free-form Resize the entire image or +Smooth Scale the selection using the corresponding handles. +Hold &Shift; while free-form scaling the selection to maintain aspect ratio. +The &RMB; invokes a context menu with common Edit commands and Image Effects. + + + +You can use the cursor keys while drawing out the boundary of the +selection or while moving it. + + + +If you hold &Ctrl; before moving the selection, then you will move a +copy of it. The selection will be smeared when moving it while &Shift; is held. + + + + + + + + + + + + + + +There are two selection modes: Opaque (default) and Transparent. If +you use the Transparent selection mode, all pixels of the background color +will be transparent (background subtraction). This allows you to paste a +selection without the background. To perform background subtraction on a +dithered image, use a Color Similarity +setting other than Exact. + + + + + + +You can apply Image Effects to a selection - see the Image Effects section for more +information. + +It is possible to save selection to file using the Copy to File... item from the selection context menu or EditCopy to File... item from the main menu. + + + + +Spraycan +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Click and drag to spray graffiti. Hold down the mouse button for a +more concentrated spray. + + + + + + + + + + + + + +Click on one of the shapes to select the spray size. You can select +from spray sizes of 9x9, 17x17 and 29x29. + + + + + + +The &LMB; draws in the foreground color. The &RMB; draws in the +background color. + + + + +Text +<inlinemediaobject> +<imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + + +Click and drag an area in which to write text. As soon as the border will be shown you can start writing the text. Click and drag +on the border to move it. You can resize the text box by dragging on the +handles or by using the Resize dialog. + + + +If you have deselected a text box you can use Undo to edit the text +again. + + + +Using the Transparent Color + + + + + + + + +The left picture shows the example image. The right picture shows the addition of text +with opaque foreground and background colors. + + + + + + + + + + +The left picture shows the addition of text with opaque foreground +colors and a transparent background color. The right picture shows the +addition of text with a transparent foreground color and opaque background +color. + + + + +Common Tool Options + + + + + + + + + + + + + +Click on one of the squares to select the eraser size. You can select +from squares of side length 2, 3, 5, 9, 17 and 29 pixels. + +The eraser size setting affects the Erasers. + + + + + + + + + + + +Click on one of the lines to select the line width. You can select +from line widths of 1, 2, 3, 5 and 8 pixel(s). + +The line width setting affects the Connected Lines, Curve, Ellipse, Line, Polygon, Rectangle and Rounded Rectangle tools. + + + + + + + + + + + +Click on one of the rectangles to select the fill style. You can +select from No Fill, Fill with Background Color and Fill with Foreground +Color. The fill style setting affects the Ellipse, Polygon, Rectangle and Rounded Rectangle tools. + + + + + + + + + + + +Working with Color + + +The Color Box + + + + + + + +Color Box + + + + +The Color Box has 3 main sections: the Color Tablet, the Color Palette +and the Color Similarity Selector. + +The Color Tablet shows the current foreground color as a square on top +of another square representing the current background color. When drawing +with the &LMB;, the foreground color is used, and when drawing with the +&RMB; the background color is used (except for the Erasers). You can click on the double-ended +arrow to swap the foreground and background colors. + +The Color Palette shows a selection of colors for you to choose +from. The translucent pyramid represents the transparent color. Left-click +on a color to set the foreground color and right-click on a color to set the +background color. You can also drag and drop any opaque color into the Color +Tablet squares. To edit a color in the Color Tablet or Palette, double-click +on it. The Color Picker tool allows +you to select a color from the image. + +Color Similarity allows you to work more effectively with dithered +images and photos, in a comparable manner to the Magic Wand feature of other paint programs. It applies to transparent selections, as well as the +Flood Fill, Color Eraser and Autocrop / Remove Internal Border tools. Double-click on the Color +Similarity Selector to choose how similar colors must be to be considered +identical. When using selections in Transparent mode, any color in the +selection that is similar to the background color will also be made +transparent. + + + + + + + + + + +The left picture shows the example image. The right pictures demonstrate the use of a flood fill, with Color Similarity settings of 5%, 15% and 30%. In this example, with a Color Similarity setting of Exact, a flood fill at (80, 100) would only fill one pixel, as the surrounding pixels are similar but not identical. As Color Similarity is increased, more pixels that are similar in color are considered identical, hence the fill extends further. + + + + + + +View Options + + +View Options Reference + +Zoom incorporating the Grid +Thumbnail + + + + +Zoom incorporating the Grid +Increase the zoom level to edit images with more precision, or reduce it to see more of the image. + + + +At zoom levels that aren't multiples of 100%, parts of the image may appear to move when the user interacts with it. Other minor redraw glitches may also occur at such zoom levels. + + + +At zoom levels of 400% or greater that are also multiples of 100%, you can Show Grid to more accurately edit individual pixels. + + + + + + + + + + + + + + + +The first picture shows the Text tool icon, while the latter shows it at 600% zoom with the grid on. + + + +Another way of zooming when not drawing is to scroll the wheel while holding &Ctrl;. + + + + + + +Thumbnail + + + + + + + + +If Zoomed Thumbnail Mode is selected, the entire image is displayed, scaled as required to fit the thumbnail window (top-right picture). + + +Otherwise, the thumbnail displays as much of the image as possible, starting from the top-left of the main view (bottom-right picture). + + + + + + +Image Effects + + +Image Effects Reference +Autocrop / Remove Internal Border +Balance +Clear +Emboss +Flatten +Flip (upside down) +Invert +Reduce Colors +Reduce to Grayscale +Reduce to Monochrome (Dithered) +Mirror (horizontally) +Resize / Scale +Rotate +Set as Image (Crop) +Skew +Soften & Sharpen +More Effects +Notes + + + +Autocrop / Remove Internal Border + +This automatically removes the border of an image or selection. Use +Autocrop if you have a figure that does not fill the entire image or selection and you +wish to remove the excess whitespace. To use this feature with a dithered +image border, you will also need to use Color +Similarity. + + + + +Balance + + +This feature is accessible from the More Effects dialog. + + + + + + + + + +This allows you to set the brightness, contrast and gamma of the image or selection. + + + + +The more common measure of gamma (a decimal from 0.10 to 10.00) is located between the +Gamma spinbox and the Reset button. + + + + + +Clear + +This fills the entire image or selection with the background +color. + + +Double-click on the Eraser +icon to clear the entire image. + + + + + +Emboss + + +This feature is accessible from the More Effects dialog. + + + + + + + + + + +Check Enable to apply the Emboss effect. This emphasises the edges and gives the +image or selection an "engraved look". + + + + +Flatten + + +This feature is accessible from the More Effects dialog. + + + + + + + + + + +This recolors the image with varying shades of the two selected colors. + + + + +Flip (upside down) + +This flips the entire image or selection vertically. + + + + +Invert + + +This feature is accessible from the More Effects dialog. + + + + + + + + + +This allows you to invert one or more RGB channels in the image or selection. Select All to change a photo into a negative and vice versa. This generally looks quite funny. + + +To quickly invert all channels, you do not need to use this dialog. You can instead +access the Invert Colors item in the Image or +Selection menu. The Selection item is only displayed +in the menubar if you use one of the selection tools. Additionally you can reach this action +from the context menu opened with a &RMB; click in the image area. + + + + + + +Mirror (horizontally) + +This mirrors the entire image or selection horizontally. + + + + +Reduce Colors + + +This feature is accessible from the More Effects dialog. + + + + + + + + + + +This reduces the number of colors used by the image or selection, with or without dithering. + + + +Dithering generally provides better quality results, however, you may wish to disable it for artistic effects; +⪚ using Monochrome instead of +Monochrome (Dithered) gives a silhouette effect. + + + +Another important distinction is that while Monochrome (Dithered) will always reduce the entire image or selection to black and white, Monochrome will do this only if the image or selection contains more than 2 colors. + + + +For a quick, dithered monochrome image or selection, use the Reduce to Monochrome (Dithered) item of the Image or Selection menu. The Selection item is only displayed +in the menubar if you use one of the selection tools. Additionally you can reach this action +from the context menu opened with a &RMB; click in the image area. + + + + + +Changing the number of colors here has no effect on the color depth of the file format. If you want to +change the color depth, you should select it in the file saving dialogs. Note that, confusingly, changing +the color depth also changes the number of colors. + + + + + +Reduce to Grayscale + + This reduces the entire image or selection to grayscale. + + + + +Reduce to Monochrome (Dithered) + +This reduces the entire image or selection to black and white. + + + +If you do not want the image or selection to be dithered, use the +Reduce Colors dialog. + + + + + +Resize / Scale + + + + + + + + + +Resizing the image changes the dimensions of the image without +applying a transformation to the existing contents. Scaling the image will +stretch the existing contents to the new dimensions. Smooth Scale +generally provides better quality results than Scaling, by blending neighbouring colors. + +You can express the new dimensions in pixels, or as a percentage of +the original size. If you select Keep aspect ratio, the +width and height will be scaled by the same percentage. + + + +You can free-form Resize the entire image or Smooth Scale the selection using the corresponding handles. + + + + +Only scaling is supported for selections, and only resizing is +supported for text boxes. See Notes for +additional details about applying these effects. + + + + +Rotate + + + + + + + + + +This rotates the image. You can specify the angle and direction of +rotation. + + +You can reverse the direction of rotation by specifying a negative +custom angle. + + + +See Notes for details about +applying this effect to a selection. + + + + + +Set as Image (Crop) + +This will set the selection as the image. + + +This is only available when you have an active selection. + + + + +Skew + + + + + + + + + +This skews the entire image or selection horizontally and/or +vertically. + + +See Notes for details about +applying this effect to a selection. + + + + +Soften & Sharpen + + +This feature is accessible from the More Effects dialog. + + + + + + + + + + +Use this effect to soften or sharpen the image. + + + + + +More Effects + + +This dialog contains the Balance, +Emboss, Flatten, +Invert, Reduce Colors +and Soften & Sharpen features. + + + + +Notes + +Resizing / Scaling, Rotating and Skewing may change the dimensions of the +image. You can view the new dimensions in the dialog. + +If you apply these effects to an image, the image will be resized if +necessary. However, if you apply these effects to a selection, the image +will not be resized, even if the transformed selection does not fit. + + + + + + + + + + +The left image has been rotated 30 degrees clockwise to form the right image. &kolourpaint; has +automatically enlarged the image to accommodate the larger contents. + + + + + + + + + + + +The left selection has been rotated 30 degrees clockwise to form the right +selection. The image size has remained the same, hence parts of the selection will not be visible +without Resizing the image. + + + + + + +Credits and License + +Carl Tucker + +It might not be concise documentation; it might not be complete documentation; but it is +honest documentation. + + + + +&kolourpaint; + +Program Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + + +&kolourpaint;-specific icons Copyright © 2004, 2005 +Kristof Borrey borrey@kde.org, +Nuno Pinheiro nf.pinheiro@gmail.com, +&Danny.Allen; dannya40uk@yahoo.co.uk + + +Documentation and additional documentation artwork Copyright © 2004, 2005 +&Thurston.Dang; &Thurston.Dang.mail; + +Portions reproduced with permission from . + + + +&underFDL; + +This program is licensed as follows: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; + + + diff --git a/doc/line_width.png b/doc/line_width.png new file mode 100644 index 0000000..3f54ba6 Binary files /dev/null and b/doc/line_width.png differ diff --git a/doc/lines_30_45_deg.png b/doc/lines_30_45_deg.png new file mode 100644 index 0000000..6e245a1 Binary files /dev/null and b/doc/lines_30_45_deg.png differ diff --git a/doc/lines_30_deg.png b/doc/lines_30_deg.png new file mode 100644 index 0000000..5b711ef Binary files /dev/null and b/doc/lines_30_deg.png differ diff --git a/doc/lines_45_deg.png b/doc/lines_45_deg.png new file mode 100644 index 0000000..04efa31 Binary files /dev/null and b/doc/lines_45_deg.png differ diff --git a/doc/rotate_image_30.png b/doc/rotate_image_30.png new file mode 100644 index 0000000..0b04706 Binary files /dev/null and b/doc/rotate_image_30.png differ diff --git a/doc/rotate_selection_30.png b/doc/rotate_selection_30.png new file mode 100644 index 0000000..7df985b Binary files /dev/null and b/doc/rotate_selection_30.png differ diff --git a/doc/screenshot_acquiring.png b/doc/screenshot_acquiring.png new file mode 100644 index 0000000..f5573d0 Binary files /dev/null and b/doc/screenshot_acquiring.png differ diff --git a/doc/selections_opaque_transparent.png b/doc/selections_opaque_transparent.png new file mode 100644 index 0000000..aa1a7e6 Binary files /dev/null and b/doc/selections_opaque_transparent.png differ diff --git a/doc/spraycan_patterns.png b/doc/spraycan_patterns.png new file mode 100644 index 0000000..4d177d2 Binary files /dev/null and b/doc/spraycan_patterns.png differ diff --git a/doc/text_zoom_grid.png b/doc/text_zoom_grid.png new file mode 100644 index 0000000..246e269 Binary files /dev/null and b/doc/text_zoom_grid.png differ diff --git a/doc/tool_brush.png b/doc/tool_brush.png new file mode 100644 index 0000000..7843292 Binary files /dev/null and b/doc/tool_brush.png differ diff --git a/doc/tool_color_picker.png b/doc/tool_color_picker.png new file mode 100644 index 0000000..4e71c1c Binary files /dev/null and b/doc/tool_color_picker.png differ diff --git a/doc/tool_color_washer.png b/doc/tool_color_washer.png new file mode 100644 index 0000000..8cd7dbd Binary files /dev/null and b/doc/tool_color_washer.png differ diff --git a/doc/tool_curve.png b/doc/tool_curve.png new file mode 100644 index 0000000..c4b5729 Binary files /dev/null and b/doc/tool_curve.png differ diff --git a/doc/tool_ellipse.png b/doc/tool_ellipse.png new file mode 100644 index 0000000..10a2045 Binary files /dev/null and b/doc/tool_ellipse.png differ diff --git a/doc/tool_elliptical_selection.png b/doc/tool_elliptical_selection.png new file mode 100644 index 0000000..0491e16 Binary files /dev/null and b/doc/tool_elliptical_selection.png differ diff --git a/doc/tool_eraser.png b/doc/tool_eraser.png new file mode 100644 index 0000000..8efa08d Binary files /dev/null and b/doc/tool_eraser.png differ diff --git a/doc/tool_flood_fill.png b/doc/tool_flood_fill.png new file mode 100644 index 0000000..bacf06f Binary files /dev/null and b/doc/tool_flood_fill.png differ diff --git a/doc/tool_free_form_selection.png b/doc/tool_free_form_selection.png new file mode 100644 index 0000000..567305c Binary files /dev/null and b/doc/tool_free_form_selection.png differ diff --git a/doc/tool_line.png b/doc/tool_line.png new file mode 100644 index 0000000..cae1897 Binary files /dev/null and b/doc/tool_line.png differ diff --git a/doc/tool_pen.png b/doc/tool_pen.png new file mode 100644 index 0000000..d4bf2b2 Binary files /dev/null and b/doc/tool_pen.png differ diff --git a/doc/tool_polygon.png b/doc/tool_polygon.png new file mode 100644 index 0000000..96cb348 Binary files /dev/null and b/doc/tool_polygon.png differ diff --git a/doc/tool_polyline.png b/doc/tool_polyline.png new file mode 100644 index 0000000..d56bfa5 Binary files /dev/null and b/doc/tool_polyline.png differ diff --git a/doc/tool_polystar.png b/doc/tool_polystar.png new file mode 100644 index 0000000..113c6e7 Binary files /dev/null and b/doc/tool_polystar.png differ diff --git a/doc/tool_rect_selection.png b/doc/tool_rect_selection.png new file mode 100644 index 0000000..94fcbea Binary files /dev/null and b/doc/tool_rect_selection.png differ diff --git a/doc/tool_rectangle.png b/doc/tool_rectangle.png new file mode 100644 index 0000000..5ebe1ff Binary files /dev/null and b/doc/tool_rectangle.png differ diff --git a/doc/tool_rectangles.png b/doc/tool_rectangles.png new file mode 100644 index 0000000..10ef9e1 Binary files /dev/null and b/doc/tool_rectangles.png differ diff --git a/doc/tool_rounded_rectangle.png b/doc/tool_rounded_rectangle.png new file mode 100644 index 0000000..ae37b1e Binary files /dev/null and b/doc/tool_rounded_rectangle.png differ diff --git a/doc/tool_selections.png b/doc/tool_selections.png new file mode 100644 index 0000000..c5fc040 Binary files /dev/null and b/doc/tool_selections.png differ diff --git a/doc/tool_spraycan.png b/doc/tool_spraycan.png new file mode 100644 index 0000000..8086cca Binary files /dev/null and b/doc/tool_spraycan.png differ diff --git a/doc/tool_text.png b/doc/tool_text.png new file mode 100644 index 0000000..95ffa2a Binary files /dev/null and b/doc/tool_text.png differ diff --git a/doc/view_thumbnails.png b/doc/view_thumbnails.png new file mode 100644 index 0000000..214d0f8 Binary files /dev/null and b/doc/view_thumbnails.png differ diff --git a/document/kpDocument.cpp b/document/kpDocument.cpp new file mode 100644 index 0000000..dd3db8d --- /dev/null +++ b/document/kpDocument.cpp @@ -0,0 +1,457 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_DOCUMENT 0 + + +#include "kpDocument.h" +#include "kpDocumentPrivate.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "imagelib/kpColor.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "kpDefs.h" +#include "environments/document/kpDocumentEnvironment.h" +#include "document/kpDocumentSaveOptions.h" +#include "imagelib/kpDocumentMetaInfo.h" +#include "imagelib/effects/kpEffectReduceColors.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "lgpl/generic/kpUrlFormatter.h" + + +#include "kpLogCategories.h" +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------- + +kpDocument::kpDocument (int w, int h, + kpDocumentEnvironment *environ) + : QObject (), + m_constructorWidth (w), m_constructorHeight (h), + m_isFromExistingURL (false), + m_savedAtLeastOnceBefore (false), + m_saveOptions (new kpDocumentSaveOptions ()), + m_metaInfo (new kpDocumentMetaInfo ()), + m_modified (false), + m_selection (nullptr), + m_oldWidth (-1), m_oldHeight (-1), + d (new kpDocumentPrivate ()) +{ +#if DEBUG_KP_DOCUMENT && 0 + qCDebug(kpLogDocument) << "kpDocument::kpDocument (" << w << "," << h << ")"; +#endif + + m_image = new kpImage(w, h, QImage::Format_ARGB32_Premultiplied); + m_image->fill(QColor(Qt::white).rgb()); + + d->environ = environ; +} + +//--------------------------------------------------------------------- + +kpDocument::~kpDocument () +{ + delete d; + + delete m_image; + + delete m_saveOptions; + delete m_metaInfo; + + delete m_selection; +} + +//--------------------------------------------------------------------- + +// public +kpDocumentEnvironment *kpDocument::environ () const +{ + return d->environ; +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::setEnviron (kpDocumentEnvironment *environ) +{ + d->environ = environ; +} + +//--------------------------------------------------------------------- + +// public +bool kpDocument::savedAtLeastOnceBefore () const +{ + return m_savedAtLeastOnceBefore; +} + +//--------------------------------------------------------------------- + +// public +QUrl kpDocument::url () const +{ + return m_url; +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::setURL (const QUrl &url, bool isFromExistingURL) +{ + m_url = url; + m_isFromExistingURL = isFromExistingURL; +} + +//--------------------------------------------------------------------- + +// public +bool kpDocument::isFromExistingURL () const +{ + return m_isFromExistingURL; +} + +//--------------------------------------------------------------------- + +// public +bool kpDocument::urlExists (const QUrl &url) const +{ + if (url.isEmpty()) { + return false; + } + KIO::StatJob *job = KIO::statDetails(url, KIO::StatJob::SourceSide, KIO::StatNoDetails); + KJobWidgets::setWindow (job, d->environ->dialogParent ()); + return job->exec(); +} + +//--------------------------------------------------------------------- + +// public +QString kpDocument::prettyUrl () const +{ + return kpUrlFormatter::PrettyUrl (m_url); +} + +//--------------------------------------------------------------------- + +// public +QString kpDocument::prettyFilename () const +{ + return kpUrlFormatter::PrettyFilename (m_url); +} + +//--------------------------------------------------------------------- + +// public +const kpDocumentSaveOptions *kpDocument::saveOptions () const +{ + return m_saveOptions; +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::setSaveOptions (const kpDocumentSaveOptions &saveOptions) +{ + *m_saveOptions = saveOptions; +} + +//--------------------------------------------------------------------- + +// public +const kpDocumentMetaInfo *kpDocument::metaInfo () const +{ + return m_metaInfo; +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::setMetaInfo (const kpDocumentMetaInfo &metaInfo) +{ + *m_metaInfo = metaInfo; +} + +//--------------------------------------------------------------------- + +/* + * Properties + */ + +void kpDocument::setModified (bool yes) +{ + if (yes == m_modified) { + return; + } + + m_modified = yes; + + if (yes) { + emit documentModified (); + } +} + +//--------------------------------------------------------------------- + +bool kpDocument::isModified () const +{ + return m_modified; +} + +//--------------------------------------------------------------------- + +bool kpDocument::isEmpty () const +{ + return url ().isEmpty () && !isModified (); +} + +//--------------------------------------------------------------------- + +int kpDocument::constructorWidth () const +{ + return m_constructorWidth; +} + +//--------------------------------------------------------------------- + +int kpDocument::width (bool ofSelection) const +{ + return (ofSelection && m_selection) ? m_selection->width() : m_image->width(); +} + +//--------------------------------------------------------------------- + +int kpDocument::oldWidth () const +{ + return m_oldWidth; +} + +//--------------------------------------------------------------------- + +void kpDocument::setWidth (int w, const kpColor &backgroundColor) +{ + resize (w, height (), backgroundColor); +} + +//--------------------------------------------------------------------- + +int kpDocument::constructorHeight () const +{ + return m_constructorHeight; +} + +//--------------------------------------------------------------------- + +int kpDocument::height (bool ofSelection) const +{ + return (ofSelection && m_selection) ? m_selection->height() : m_image->height(); +} + +//--------------------------------------------------------------------- + +int kpDocument::oldHeight () const +{ + return m_oldHeight; +} + +//--------------------------------------------------------------------- + +void kpDocument::setHeight (int h, const kpColor &backgroundColor) +{ + resize (width (), h, backgroundColor); +} + +//--------------------------------------------------------------------- + +QRect kpDocument::rect (bool ofSelection) const +{ + return (ofSelection && m_selection) ? m_selection->boundingRect() : m_image->rect(); +} + +//--------------------------------------------------------------------- + +// public +kpImage kpDocument::getImageAt (const QRect &rect) const +{ + return kpPixmapFX::getPixmapAt (*m_image, rect); +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::setImageAt (const kpImage &image, const QPoint &at) +{ +#if DEBUG_KP_DOCUMENT && 0 + qCDebug(kpLogDocument) << "kpDocument::setImageAt (image (w=" + << image.width () + << ",h=" << image.height () + << "), x=" << at.x () + << ",y=" << at.y (); +#endif + + kpPixmapFX::setPixmapAt (m_image, at, image); + slotContentsChanged (QRect (at.x (), at.y (), image.width (), image.height ())); +} + +//--------------------------------------------------------------------- + +// public +kpImage kpDocument::image (bool ofSelection) const +{ + kpImage ret; + + if (ofSelection) + { + kpAbstractImageSelection *imageSel = imageSelection (); + Q_ASSERT (imageSel); + + ret = imageSel->baseImage (); + } + else { + ret = *m_image; + } + + return ret; +} + +//--------------------------------------------------------------------- + +// public +kpImage *kpDocument::imagePointer () const +{ + return m_image; +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::setImage (const kpImage &image) +{ + m_oldWidth = width (); + m_oldHeight = height (); + + *m_image = image; + + if (m_oldWidth == width () && m_oldHeight == height ()) { + slotContentsChanged (image.rect ()); + } + else { + slotSizeChanged (QSize (width (), height ())); + } +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::setImage (bool ofSelection, const kpImage &image) +{ + if (ofSelection) + { + kpAbstractImageSelection *imageSel = imageSelection (); + + // Have to have an image selection in order to set its pixmap. + Q_ASSERT (imageSel); + + imageSel->setBaseImage (image); + } + else { + setImage (image); + } +} + +//--------------------------------------------------------------------- + +void kpDocument::fill (const kpColor &color) +{ +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::fill ()"; +#endif + + m_image->fill(color.toQRgb()); + slotContentsChanged (m_image->rect ()); +} + +//--------------------------------------------------------------------- + +void kpDocument::resize (int w, int h, const kpColor &backgroundColor) +{ +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::resize (" << w << "," << h << ")"; +#endif + + m_oldWidth = width (); + m_oldHeight = height (); + +#if DEBUG_KP_DOCUMENT && 1 + qCDebug(kpLogDocument) << "\toldWidth=" << m_oldWidth + << " oldHeight=" << m_oldHeight; +#endif + + if (w == m_oldWidth && h == m_oldHeight) { + return; + } + + kpPixmapFX::resize (m_image, w, h, backgroundColor); + + slotSizeChanged (QSize (width (), height ())); +} + +//--------------------------------------------------------------------- + +void kpDocument::slotContentsChanged (const QRect &rect) +{ + setModified (); + emit contentsChanged (rect); +} + +//--------------------------------------------------------------------- + +void kpDocument::slotSizeChanged (const QSize &newSize) +{ + setModified (); + emit sizeChanged (newSize.width(), newSize.height()); + emit sizeChanged (newSize); +} + +//--------------------------------------------------------------------- + + + diff --git a/document/kpDocument.h b/document/kpDocument.h new file mode 100644 index 0000000..543124d --- /dev/null +++ b/document/kpDocument.h @@ -0,0 +1,360 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_DOCUMENT_H +#define KP_DOCUMENT_H + + +#include +#include +#include +#include + +#include "imagelib/kpImage.h" +#include "pixmapfx/kpPixmapFX.h" +#undef environ + +class QImage; +class QIODevice; +class QPoint; +class QRect; +class QSize; + +class kpColor; +class kpDocumentEnvironment; +class kpDocumentSaveOptions; +class kpDocumentMetaInfo; +class kpAbstractImageSelection; +class kpAbstractSelection; +class kpTextSelection; + + +// REFACTOR: rearrange method order to make sense and reflect kpDocument_*.cpp split. +class kpDocument : public QObject +{ +Q_OBJECT + +public: + // REFACTOR: Hide constructor and have 2 factory methods: + // + // Method 1. Creates a blank document with dimensions x. + // + // Method 2. Calls open(). and (aka constructorWidth() + // and constructorHeight()) need not be specified. + // + // ? + kpDocument (int w, int h, kpDocumentEnvironment *environ); + ~kpDocument () override; + + kpDocumentEnvironment *environ () const; + void setEnviron (kpDocumentEnvironment *environ); + + + // + // File I/O - Open + // + + + static QImage getPixmapFromFile (const QUrl &url, bool suppressDoesntExistDialog, + QWidget *parent, + kpDocumentSaveOptions *saveOptions = nullptr, + kpDocumentMetaInfo *metaInfo = nullptr); + // REFACTOR: fix: open*() should only be called once. + // Create a new kpDocument() if you want to open again. + void openNew (const QUrl &url); + bool open (const QUrl &url, bool newDocSameNameIfNotExist = false); + + static void getDataFromImage(const QImage &image, + kpDocumentSaveOptions &saveOptions, + kpDocumentMetaInfo &metaInfo); + + // + // File I/O - Save + // + + static bool lossyPromptContinue (const QImage &pixmap, + const kpDocumentSaveOptions &saveOptions, + QWidget *parent); + static bool savePixmapToDevice (const QImage &pixmap, + QIODevice *device, + const kpDocumentSaveOptions &saveOptions, + const kpDocumentMetaInfo &metaInfo, + bool lossyPrompt, + QWidget *parent, + bool *userCancelled = nullptr); + static bool savePixmapToFile (const QImage &pixmap, + const QUrl &url, + const kpDocumentSaveOptions &saveOptions, + const kpDocumentMetaInfo &metaInfo, + bool lossyPrompt, + QWidget *parent); + bool save (bool lossyPrompt = false); + bool saveAs (const QUrl &url, + const kpDocumentSaveOptions &saveOptions, + bool lossyPrompt = true); + + + // Returns whether save() or saveAs() have ever been called and returned true + bool savedAtLeastOnceBefore () const; + + QUrl url () const; + void setURL (const QUrl &url, bool isFromExistingURL); + + // Returns whether the document's image was successfully opened from + // or saved to the URL returned by url(). This is not true for a + // new kpDocument and in the case of open() being passed + // "newDocSameNameIfNotExist = true" when the URL doesn't exist. + // + // If this returns true and the kpDocument hasn't been modified, + // this gives a pretty good indication that the image stored at url() + // is equal to image() (unless the something has happened to that url + // outside of KolourPaint). + // + // e.g. If the user types "kolourpaint doesnotexist.png" to start + // KolourPaint, this method will return false. + bool isFromExistingURL () const; + + // Checks whether @p url still exists + bool urlExists (const QUrl &url) const; + + // (will convert: empty Url --> "Untitled") + QString prettyUrl () const; + + // (will convert: empty Url --> "Untitled") + QString prettyFilename () const; + + // (guaranteed to return valid pointer) + + const kpDocumentSaveOptions *saveOptions () const; + void setSaveOptions (const kpDocumentSaveOptions &saveOptions); + + const kpDocumentMetaInfo *metaInfo () const; + void setMetaInfo (const kpDocumentMetaInfo &metaInfo); + + + /* + * Properties (modified, width, height, color depth...) + */ + + void setModified (bool yes = true); + bool isModified () const; + bool isEmpty () const; + + // REFACTOR: Rename to originalWidth()? + int constructorWidth () const; // as passed to the constructor + int width (bool ofSelection = false) const; + int oldWidth () const; // only valid in a slot connected to sizeChanged() + void setWidth (int w, const kpColor &backgroundColor); + + // REFACTOR: Rename to originalHeight()? + int constructorHeight () const; // as passed to the constructor + int height (bool ofSelection = false) const; + int oldHeight () const; // only valid in a slot connected to sizeChanged() + void setHeight (int h, const kpColor &backgroundColor); + + QRect rect (bool ofSelection = false) const; + + + // + // Image access + // + + // Returns a copy of part of the document's image (not including the + // selection). + kpImage getImageAt (const QRect &rect) const; + + void setImageAt (const kpImage &image, const QPoint &at); + + // "image(false)" returns a copy of the document's image, ignoring any + // floating selection. + // + // "image(true)" returns a copy of a floating image selection's base + // image (i.e. before selection transparency is applied), which may be + // null if the image selection is a just a border. + // + // ASSUMPTION: For == true only, an image selection exists. + kpImage image (bool ofSelection = false) const; + kpImage *imagePointer () const; + + void setImage (const kpImage &image); + // ASSUMPTION: If setting the selection's image, the selection must be + // an image selection. + void setImage (bool ofSelection, const kpImage &image); + + + // + // Selections + // + +public: + kpAbstractSelection *selection () const; + kpAbstractImageSelection *imageSelection () const; + kpTextSelection *textSelection () const; + + // Sets the document's selection to the given one and changes to the + // matching selection tool. Tool changes occur in the following situations: + // + // 1. Setting a when a selection tool is not active. + // + // 2. Setting an image when the text tool is active. + // ASSUMPTION: There is no text selection active when calling this + // method (push it onto the document before calling this, + // to avoid this problem). + // + // 3. Setting a text when an image selection tool is active. + // ASSUMPTION: There is no image selection active when calling this + // method (push it onto the document before calling this, + // to avoid this problem). + // + // The justification for the above assumptions are to reduce the complexity + // of this method's implementation -- changing from an image selection tool + // to a text selection tool, or vice-versa, calls the end() method of the + // current tool, which pushes any active selection onto the document. Since + // this method sets the selection, losing the old selection in the middle of + // the method would be tricky to work around. + // + // WARNING: Before calling this, you must ensure that the UI (kpMainWindow) + // has the 's selection transparency or + // for a text selection, its text style, selected. + // TODO: Why can't we change it for them, if we change tool automatically for them already? + void setSelection (const kpAbstractSelection &selection); + + // Returns the base image of the current image selection. If this is + // null (because the selection is still a border), it extracts the + // pixels of the document marked out by the border of the selection. + // + // ASSUMPTION: There is an imageSelection(). + // + // TODO: this always returns base image - need ver that applies selection + // transparency. + kpImage getSelectedBaseImage () const; + + // Sets the base image of the current image selection to the pixels + // of the document marked out by the border of the selection. + // + // ASSUMPTION: There is an imageSelection() that is just a border + // (no base image). + void imageSelectionPullFromDocument (const kpColor &backgroundColor); + + // Deletes the current selection, if there is a selection(), else NOP + void selectionDelete (); + + // Stamps a copy of the selection onto the document. + // + // For image selections, set to true, means that + // the transparent image of the selection is used. If set to false, + // the base image of the selection is used. This argument is ignored + // for non-image selections. + // + // ASSUMPTION: There is a selection() with content, else NOP + void selectionCopyOntoDocument (bool applySelTransparency = true); + + // Same as selectionCopyOntoDocument() but deletes the selection + // afterwards. + void selectionPushOntoDocument (bool applySelTransparency = true); + + // + // Same as image() but returns a _copy_ of the document image + // + any (even non-image) selection pasted on top. + // + // Even if the selection has no content, it is still pasted: + // + // 1. For an image selection, this makes no difference. + // + // 2. For a text selection: + // + // a) with an opaque background: the background rectangle is + // included -- this is necessary since the rectangle is visually + // there after all, and the intention of this method is to report + // everything. + // + // b) with a transparent background: this makes no difference. + // + kpImage imageWithSelection () const; + + + /* + * Transformations + * (convenience only - you could achieve the same effect (and more) with + * kpPixmapFX: these functions do not affect the selection) + */ + + void fill (const kpColor &color); + void resize (int w, int h, const kpColor &backgroundColor); + + +public slots: + // these will emit signals! + void slotContentsChanged (const QRect &rect); + void slotSizeChanged (const QSize &newSize); + +signals: + void documentOpened (); + void documentSaved (); + + // Emitted whenever the isModified() flag changes from false to true. + // This is the _only_ signal that may be emitted in addition to the others. + void documentModified (); + + void contentsChanged (const QRect &rect); + void sizeChanged (int newWidth, int newHeight); // see oldWidth(), oldHeight() + void sizeChanged (const QSize &newSize); + + void selectionEnabled (bool on); + + // Emitted when setSelection() is given a selection such that we change + // from a non-text-selection tool to the text selection tool or vice-versa. + // reports whether the new selection is text (and therefore, + // whether we've switched to the text tool). + void selectionIsTextChanged (bool isText); + +private: + int m_constructorWidth, m_constructorHeight; + kpImage *m_image; + + QUrl m_url; + bool m_isFromExistingURL; + bool m_savedAtLeastOnceBefore; + + kpDocumentSaveOptions *m_saveOptions; + kpDocumentMetaInfo *m_metaInfo; + + bool m_modified; + + kpAbstractSelection *m_selection; + + int m_oldWidth, m_oldHeight; + + // There is no need to maintain binary compatibility at this stage. + // The d-pointer is just so that you can experiment without recompiling + // the kitchen sink. + struct kpDocumentPrivate *d; +}; + + +#endif // KP_DOCUMENT_H diff --git a/document/kpDocumentPrivate.h b/document/kpDocumentPrivate.h new file mode 100644 index 0000000..9d42eb4 --- /dev/null +++ b/document/kpDocumentPrivate.h @@ -0,0 +1,47 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpDocumentPrivate_H +#define kpDocumentPrivate_H + + +class kpDocumentEnvironment; + + +struct kpDocumentPrivate +{ + kpDocumentPrivate () + : environ(nullptr) + { + } + + kpDocumentEnvironment *environ; +}; + + +#endif // kpDocumentPrivate_H diff --git a/document/kpDocumentSaveOptions.cpp b/document/kpDocumentSaveOptions.cpp new file mode 100644 index 0000000..808b851 --- /dev/null +++ b/document/kpDocumentSaveOptions.cpp @@ -0,0 +1,532 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_DOCUMENT_SAVE_OPTIONS 0 + + +#include "kpDocumentSaveOptions.h" + +#include "kpDefs.h" +#include "pixmapfx/kpPixmapFX.h" + +#include +#include "kpLogCategories.h" +#include + +#include +#include +#include + +//--------------------------------------------------------------------- + +class kpDocumentSaveOptionsPrivate +{ +public: + QString m_mimeType; + int m_colorDepth{}; + bool m_dither{}; + int m_quality{}; +}; + +//--------------------------------------------------------------------- + +kpDocumentSaveOptions::kpDocumentSaveOptions () + : d (new kpDocumentSaveOptionsPrivate ()) +{ + d->m_mimeType = invalidMimeType (); + d->m_colorDepth = invalidColorDepth (); + d->m_dither = initialDither (); + d->m_quality = invalidQuality (); +} + +//--------------------------------------------------------------------- + +kpDocumentSaveOptions::kpDocumentSaveOptions (const kpDocumentSaveOptions &rhs) + : d (new kpDocumentSaveOptionsPrivate ()) +{ + d->m_mimeType = rhs.mimeType (); + d->m_colorDepth = rhs.colorDepth (); + d->m_dither = rhs.dither (); + d->m_quality = rhs.quality (); +} + +//--------------------------------------------------------------------- + +kpDocumentSaveOptions::kpDocumentSaveOptions (const QString &mimeType, int colorDepth, bool dither, int quality) + : d (new kpDocumentSaveOptionsPrivate ()) +{ + d->m_mimeType = mimeType; + d->m_colorDepth = colorDepth; + d->m_dither = dither; + d->m_quality = quality; +} + +//--------------------------------------------------------------------- + +kpDocumentSaveOptions::~kpDocumentSaveOptions () +{ + delete d; +} + +//--------------------------------------------------------------------- + + +// public +bool kpDocumentSaveOptions::operator== (const kpDocumentSaveOptions &rhs) const +{ + return (mimeType () == rhs.mimeType () && + colorDepth () == rhs.colorDepth () && + dither () == rhs.dither () && + quality () == rhs.quality ()); +} + +//--------------------------------------------------------------------- + +// public +bool kpDocumentSaveOptions::operator!= (const kpDocumentSaveOptions &rhs) const +{ + return !(*this == rhs); +} + +//--------------------------------------------------------------------- + + +// public +kpDocumentSaveOptions &kpDocumentSaveOptions::operator= (const kpDocumentSaveOptions &rhs) +{ + setMimeType (rhs.mimeType ()); + setColorDepth (rhs.colorDepth ()); + setDither (rhs.dither ()); + setQuality (rhs.quality ()); + + return *this; +} + +//--------------------------------------------------------------------- + + +// public +void kpDocumentSaveOptions::printDebug (const QString &prefix) const +{ + const QString usedPrefix = !prefix.isEmpty () ? + prefix + QLatin1String (": ") : + QString(); + + qCDebug(kpLogDocument) << usedPrefix + << "mimeType=" << mimeType () + << " colorDepth=" << colorDepth () + << " dither=" << dither () + << " quality=" << quality (); +} + +//--------------------------------------------------------------------- + + +// public +QString kpDocumentSaveOptions::mimeType () const +{ + return d->m_mimeType; +} + +//--------------------------------------------------------------------- + +// public +void kpDocumentSaveOptions::setMimeType (const QString &mimeType) +{ + Q_ASSERT(mimeType.isEmpty () || mimeType.contains ('/')); + d->m_mimeType = mimeType; +} + +//--------------------------------------------------------------------- + + +// public static +QString kpDocumentSaveOptions::invalidMimeType () +{ + return {}; +} + +//--------------------------------------------------------------------- + +// public static +bool kpDocumentSaveOptions::mimeTypeIsInvalid (const QString &mimeType) +{ + return (mimeType == invalidMimeType ()); +} + +//--------------------------------------------------------------------- + +// public +bool kpDocumentSaveOptions::mimeTypeIsInvalid () const +{ + return mimeTypeIsInvalid (mimeType ()); +} + +//--------------------------------------------------------------------- + + +// public +int kpDocumentSaveOptions::colorDepth () const +{ + return d->m_colorDepth; +} + +// public +void kpDocumentSaveOptions::setColorDepth (int depth) +{ + d->m_colorDepth = depth; +} + + +// public static +int kpDocumentSaveOptions::invalidColorDepth () +{ + return -1; +} + +// public static +bool kpDocumentSaveOptions::colorDepthIsInvalid (int colorDepth) +{ + return (colorDepth != 1 && colorDepth != 8 && colorDepth != 32); +} + +// public +bool kpDocumentSaveOptions::colorDepthIsInvalid () const +{ + return colorDepthIsInvalid (colorDepth ()); +} + + +// public +bool kpDocumentSaveOptions::dither () const +{ + return d->m_dither; +} + +// public +void kpDocumentSaveOptions::setDither (bool dither) +{ + d->m_dither = dither; +} + + +// public static +int kpDocumentSaveOptions::initialDither () +{ + return false; // to avoid accidental double dithering +} + + +// public +int kpDocumentSaveOptions::quality () const +{ + return d->m_quality; +} + +// public +void kpDocumentSaveOptions::setQuality (int quality) +{ + d->m_quality = quality; +} + + +// public static +int kpDocumentSaveOptions::invalidQuality () +{ + return -2; +} + +// public static +bool kpDocumentSaveOptions::qualityIsInvalid (int quality) +{ + return (quality < -1 || quality > 100); +} + +// public +bool kpDocumentSaveOptions::qualityIsInvalid () const +{ + return qualityIsInvalid (quality ()); +} + + +// public static +QString kpDocumentSaveOptions::defaultMimeType (const KConfigGroup &config) +{ + return config.readEntry (kpSettingForcedMimeType, + QStringLiteral ("image/png")); +} + +// public static +void kpDocumentSaveOptions::saveDefaultMimeType (KConfigGroup &config, + const QString &mimeType) +{ + config.writeEntry (kpSettingForcedMimeType, mimeType); +} + + +// public static +int kpDocumentSaveOptions::defaultColorDepth (const KConfigGroup &config) +{ + int colorDepth = + config.readEntry (kpSettingForcedColorDepth, -1); + + if (colorDepthIsInvalid (colorDepth)) + { + // (not screen depth, in case of transparency) + colorDepth = 32; + } + + return colorDepth; +} + +//--------------------------------------------------------------------- + +// public static +void kpDocumentSaveOptions::saveDefaultColorDepth (KConfigGroup &config, int colorDepth) +{ + config.writeEntry (kpSettingForcedColorDepth, colorDepth); +} + +//--------------------------------------------------------------------- + + +// public static +int kpDocumentSaveOptions::defaultDither (const KConfigGroup &config) +{ + return config.readEntry (kpSettingForcedDither, initialDither ()); +} + +//--------------------------------------------------------------------- + +// public static +void kpDocumentSaveOptions::saveDefaultDither (KConfigGroup &config, bool dither) +{ + config.writeEntry (kpSettingForcedDither, dither); +} + +//--------------------------------------------------------------------- + + +// public static +int kpDocumentSaveOptions::defaultQuality (const KConfigGroup &config) +{ + int val = config.readEntry (kpSettingForcedQuality, -1); + + return qualityIsInvalid (val) ? -1 : val; +} + +//--------------------------------------------------------------------- + +// public static +void kpDocumentSaveOptions::saveDefaultQuality (KConfigGroup &config, int quality) +{ + config.writeEntry (kpSettingForcedQuality, quality); +} + +//--------------------------------------------------------------------- + + +// public static +kpDocumentSaveOptions kpDocumentSaveOptions::defaultDocumentSaveOptions (const KConfigGroup &config) +{ + kpDocumentSaveOptions saveOptions; + saveOptions.setMimeType (defaultMimeType (config)); + saveOptions.setColorDepth (defaultColorDepth (config)); + saveOptions.setDither (defaultDither (config)); + saveOptions.setQuality (defaultQuality (config)); + +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS + saveOptions.printDebug ("kpDocumentSaveOptions::defaultDocumentSaveOptions()"); +#endif + + return saveOptions; +} + +//--------------------------------------------------------------------- + +// public static +bool kpDocumentSaveOptions::saveDefaultDifferences (KConfigGroup &config, + const kpDocumentSaveOptions &oldDocInfo, + const kpDocumentSaveOptions &newDocInfo) +{ + bool savedSomething = false; + +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS + qCDebug(kpLogDocument) << "kpDocumentSaveOptions::saveDefaultDifferences()"; + oldDocInfo.printDebug ("\told"); + newDocInfo.printDebug ("\tnew"); +#endif + + if (newDocInfo.mimeType () != oldDocInfo.mimeType ()) + { + saveDefaultMimeType (config, newDocInfo.mimeType ()); + savedSomething = true; + } + + if (newDocInfo.colorDepth () != oldDocInfo.colorDepth ()) + { + saveDefaultColorDepth (config, newDocInfo.colorDepth ()); + savedSomething = true; + } + + if (newDocInfo.dither () != oldDocInfo.dither ()) + { + saveDefaultDither (config, newDocInfo.dither ()); + savedSomething = true; + } + + if (newDocInfo.quality () != oldDocInfo.quality ()) + { + saveDefaultQuality (config, newDocInfo.quality ()); + savedSomething = true; + } + + return savedSomething; +} + +//--------------------------------------------------------------------- +// Currently, Depth and Quality settings are mutually exclusive with +// Depth overriding Quality. I've currently favoured Quality with the +// below mimetypes (i.e. all lossy mimetypes are only given Quality settings, +// no Depth settings). +// +// To test whether depth is configurable, write an image in the new +// mimetype with all depths and read each one back. See what +// kpDocument thinks the depth is when it gets QImage to read it. + + +// public static +int kpDocumentSaveOptions::mimeTypeMaximumColorDepth(const QString &mimeType) +{ + // SYNC: update mime info here + + if ( mimeType == QStringLiteral("image/x-eps") ) + return 32; // Grayscale actually (unenforced since depth not set to configurable) + + if ( mimeType == QStringLiteral("image/x-portable-bitmap") ) + return 1; + + if ( mimeType == QStringLiteral("image/x-portable-graymap") ) + return 8; // Grayscale actually (unenforced since depth not set to configurable) + + if ( mimeType == QStringLiteral("image/x-xbitmap") ) + return 1; + + return 32; +} + +//--------------------------------------------------------------------- + +// public +int kpDocumentSaveOptions::mimeTypeMaximumColorDepth () const +{ + return mimeTypeMaximumColorDepth (mimeType ()); +} + +//--------------------------------------------------------------------- + +// public static +bool kpDocumentSaveOptions::mimeTypeHasConfigurableColorDepth (const QString &mimeType) +{ + QStringList defaultMimeTypes; + + // SYNC: update mime info here + defaultMimeTypes << QStringLiteral ("image/png"); + defaultMimeTypes << QStringLiteral ("image/bmp"); + defaultMimeTypes << QStringLiteral ("image/x-pcx"); + + // TODO: Only 1, 24 not 8; Qt only sees 32 but "file" cmd realizes + // it's either 1 or 24. + defaultMimeTypes << QStringLiteral ("image/x-rgb"); + + // TODO: Only 8 and 24 - no 1. + defaultMimeTypes << QStringLiteral ("image/x-xpixmap"); + + return defaultMimeTypes.contains(mimeType); +} + +//--------------------------------------------------------------------- + +// public +bool kpDocumentSaveOptions::mimeTypeHasConfigurableColorDepth () const +{ + return mimeTypeHasConfigurableColorDepth (mimeType ()); +} + +//--------------------------------------------------------------------- + +// public static +bool kpDocumentSaveOptions::mimeTypeHasConfigurableQuality (const QString &mimeType) +{ + QStringList defaultMimeTypes; + + // SYNC: update mime info here + defaultMimeTypes << QStringLiteral ("image/jp2"); + defaultMimeTypes << QStringLiteral ("image/jpeg"); + defaultMimeTypes << QStringLiteral ("image/webp"); + + return defaultMimeTypes.contains(mimeType); +} + +//--------------------------------------------------------------------- + +// public +bool kpDocumentSaveOptions::mimeTypeHasConfigurableQuality () const +{ + return mimeTypeHasConfigurableQuality (mimeType ()); +} + +//--------------------------------------------------------------------- + +// public +int kpDocumentSaveOptions::isLossyForSaving (const QImage &image) const +{ + int ret = 0; + + if (mimeTypeMaximumColorDepth () < image.depth ()) + { + ret |= MimeTypeMaximumColorDepthLow; + } + + if (mimeTypeHasConfigurableColorDepth () && + !colorDepthIsInvalid () /*REFACTOR: guarantee it is valid*/ && + ((colorDepth () < image.depth ()) || + (colorDepth () < 32 && image.hasAlphaChannel()))) + { + ret |= ColorDepthLow; + } + + if (mimeTypeHasConfigurableQuality () && + !qualityIsInvalid ()) + { + ret |= Quality; + } + + return ret; +} + +//--------------------------------------------------------------------- diff --git a/document/kpDocumentSaveOptions.h b/document/kpDocumentSaveOptions.h new file mode 100644 index 0000000..a28e14a --- /dev/null +++ b/document/kpDocumentSaveOptions.h @@ -0,0 +1,150 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_DOCUMENT_SAVE_OPTIONS_H +#define KP_DOCUMENT_SAVE_OPTIONS_H + + +class QImage; +class QString; + +class KConfigGroup; + + +class kpDocumentSaveOptions +{ +public: + kpDocumentSaveOptions (); + kpDocumentSaveOptions (const kpDocumentSaveOptions &rhs); + kpDocumentSaveOptions (const QString &mimeType, int colorDepth, bool dither, int quality); + virtual ~kpDocumentSaveOptions (); + + bool operator== (const kpDocumentSaveOptions &rhs) const; + bool operator!= (const kpDocumentSaveOptions &rhs) const; + + kpDocumentSaveOptions &operator= (const kpDocumentSaveOptions &rhs); + + + void printDebug (const QString &prefix) const; + + + QString mimeType () const; + void setMimeType (const QString &mimeType); + + static QString invalidMimeType (); + static bool mimeTypeIsInvalid (const QString &mimeType); + bool mimeTypeIsInvalid () const; + + + int colorDepth () const; + void setColorDepth (int depth); + + static int invalidColorDepth (); + static bool colorDepthIsInvalid (int colorDepth); + bool colorDepthIsInvalid () const; + + + bool dither () const; + void setDither (bool dither); + + static int initialDither (); + + + int quality () const; + void setQuality (int quality); + + static int invalidQuality (); + static bool qualityIsInvalid (int quality); + bool qualityIsInvalid () const; + + + // (All assume that 's group has been set) + // (None of them call KConfigBase::reparseConfig() nor KConfigBase::sync()) + + static QString defaultMimeType (const KConfigGroup &config); + static void saveDefaultMimeType (KConfigGroup &config, const QString &mimeType); + + static int defaultColorDepth (const KConfigGroup &config); + static void saveDefaultColorDepth (KConfigGroup &config, int colorDepth); + + static int defaultDither (const KConfigGroup &config); + static void saveDefaultDither (KConfigGroup &config, bool dither); + + static int defaultQuality (const KConfigGroup &config); + static void saveDefaultQuality (KConfigGroup &config, int quality); + + + static kpDocumentSaveOptions defaultDocumentSaveOptions (const KConfigGroup &config); + // (returns true if it encountered a difference (and saved it to )) + static bool saveDefaultDifferences (KConfigGroup &config, + const kpDocumentSaveOptions &oldDocInfo, + const kpDocumentSaveOptions &newDocInfo); + + +public: + // (purely for informational purposes - not enforced by this class) + static int mimeTypeMaximumColorDepth (const QString &mimeType); + int mimeTypeMaximumColorDepth () const; + + + static bool mimeTypeHasConfigurableColorDepth (const QString &mimeType); + bool mimeTypeHasConfigurableColorDepth () const; + + static bool mimeTypeHasConfigurableQuality (const QString &mimeType); + bool mimeTypeHasConfigurableQuality () const; + + + // TODO: checking for mask loss due to format e.g. BMP + enum LossyType + { + LossLess = 0, + + // mimeTypeMaximumColorDepth() < .depth() + MimeTypeMaximumColorDepthLow = 1, + // i.e. colorDepth() < .depth() || + // colorDepth() < 32 && .mask() + ColorDepthLow = 2, + // i.e. mimeTypeHasConfigurableQuality() + Quality = 4 + }; + + // Returns whether saving with these options will result in + // loss of information. Returned value is the bitwise OR of + // LossType enum possiblities. + int isLossyForSaving (const QImage &image) const; + + +private: + // There is no need to maintain binary compatibility at this stage. + // The d-pointer is just so that you can experiment without recompiling + // the kitchen sink. + class kpDocumentSaveOptionsPrivate *d; +}; + + +#endif // KP_DOCUMENT_SAVE_OPTIONS_H diff --git a/document/kpDocument_Open.cpp b/document/kpDocument_Open.cpp new file mode 100644 index 0000000..44af1e3 --- /dev/null +++ b/document/kpDocument_Open.cpp @@ -0,0 +1,254 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_DOCUMENT 0 + + +#include "kpDocument.h" +#include "kpDocumentPrivate.h" + +#include "imagelib/kpColor.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "kpDefs.h" +#include "environments/document/kpDocumentEnvironment.h" +#include "document/kpDocumentSaveOptions.h" +#include "imagelib/kpDocumentMetaInfo.h" +#include "imagelib/effects/kpEffectReduceColors.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" +#include "lgpl/generic/kpUrlFormatter.h" +#include "views/manager/kpViewManager.h" + + +#include +#include +#include +#include +#include + +#include +#include "kpLogCategories.h" +#include +#include +#include + +//--------------------------------------------------------------------- + +void kpDocument::getDataFromImage(const QImage &image, + kpDocumentSaveOptions &saveOptions, + kpDocumentMetaInfo &metaInfo) +{ + saveOptions.setColorDepth(image.depth()); + saveOptions.setDither(false); // avoid double dithering when saving + + metaInfo.setDotsPerMeterX(image.dotsPerMeterX()); + metaInfo.setDotsPerMeterY(image.dotsPerMeterY()); + metaInfo.setOffset(image.offset()); + + QStringList keys = image.textKeys(); + for (int i = 0; i < keys.count(); i++) { + metaInfo.setText(keys[i], image.text(keys[i])); + } +} + +//--------------------------------------------------------------------- + +// public static +QImage kpDocument::getPixmapFromFile(const QUrl &url, bool suppressDoesntExistDialog, + QWidget *parent, + kpDocumentSaveOptions *saveOptions, + kpDocumentMetaInfo *metaInfo) +{ +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::getPixmapFromFile(" << url << "," << parent << ")"; +#endif + + if (saveOptions) { + *saveOptions = kpDocumentSaveOptions (); + } + + if (metaInfo) { + *metaInfo = kpDocumentMetaInfo (); + } + + if (url.isEmpty ()) { + return {}; + } + + KIO::StoredTransferJob *job = KIO::storedGet (url); + KJobWidgets::setWindow(job, parent); + + if (!job->exec()) + { + if (!suppressDoesntExistDialog) + { + // TODO: Use "Cannot" instead of "Could not" in all dialogs in KolourPaint. + // Or at least choose one consistently. + // + // TODO: Have captions for all dialogs in KolourPaint. + KMessageBox::sorry (parent, + i18n ("Could not open \"%1\".", + kpUrlFormatter::PrettyFilename (url))); + } + + return {}; + } + QByteArray data = job->data(); + + QMimeDatabase db; + QMimeType mimeType = db.mimeTypeForFileNameAndData(url.fileName(), data); + + if (saveOptions) { + saveOptions->setMimeType(mimeType.name()); + } + +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\tmimetype=" << mimeType.name(); + qCDebug(kpLogDocument) << "\tsrc=" << url.path (); +#endif + + QBuffer buffer(&data); + buffer.open(QIODevice::ReadOnly); + QImageReader reader(&buffer); + reader.setAutoTransform(true); + reader.setDecideFormatFromContent(true); + + // Do *NOT* convert to + // QImage image = reader.read(); + // this variant is more lenient on errors and we may get something that we would not otherwise + // e.g. image from https://bugs.kde.org/show_bug.cgi?id=441554 + QImage image; + reader.read(&image); + + if (image.isNull ()) + { + KMessageBox::sorry (parent, + i18n ("Could not open \"%1\" - unsupported image format.\n" + "The file may be corrupt.", + kpUrlFormatter::PrettyFilename (url))); + return {}; + } + +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\tpixmap: depth=" << image.depth () + << " hasAlphaChannel=" << image.hasAlphaChannel (); +#endif + + if ( saveOptions && metaInfo ) { + getDataFromImage(image, *saveOptions, *metaInfo); + } + + // make sure we always have Format_ARGB32_Premultiplied as this is the fastest to draw on + // and Qt can not draw onto Format_Indexed8 (Qt-4.7) + if ( image.format() != QImage::Format_ARGB32_Premultiplied ) { + image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); + } + + return image; +} + +//--------------------------------------------------------------------- + +void kpDocument::openNew (const QUrl &url) +{ +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::openNew (" << url << ")"; +#endif + + m_image->fill(QColor(Qt::white).rgb()); + + setURL (url, false/*not from url*/); + + *m_saveOptions = kpDocumentSaveOptions (); + + if ( !url.isEmpty() ) + { + // guess the mimetype from url's filename extension. + // + // That way "kolourpaint doesnotexist.bmp" automatically + // selects the BMP file format when the save dialog comes up for + // the first time. + + QMimeDatabase mimeDb; + m_saveOptions->setMimeType(mimeDb.mimeTypeForUrl(url).name()); + } + + *m_metaInfo = kpDocumentMetaInfo (); + m_modified = false; + + emit documentOpened (); +} + +//--------------------------------------------------------------------- + +bool kpDocument::open (const QUrl &url, bool newDocSameNameIfNotExist) +{ +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::open (" << url << ")"; +#endif + + kpDocumentSaveOptions newSaveOptions; + kpDocumentMetaInfo newMetaInfo; + QImage newPixmap = kpDocument::getPixmapFromFile (url, + newDocSameNameIfNotExist/*suppress "doesn't exist" dialog*/, + d->environ->dialogParent (), + &newSaveOptions, + &newMetaInfo); + + if (!newPixmap.isNull ()) + { + delete m_image; + m_image = new kpImage (newPixmap); + + setURL (url, true/*is from url*/); + *m_saveOptions = newSaveOptions; + *m_metaInfo = newMetaInfo; + m_modified = false; + + emit documentOpened (); + return true; + } + + if (newDocSameNameIfNotExist) + { + if (urlExists (url)) // not just a permission error? + { + openNew (url); + } + else + { + openNew (QUrl ()); + } + + return true; + } + + return false; + +} + +//--------------------------------------------------------------------- diff --git a/document/kpDocument_Save.cpp b/document/kpDocument_Save.cpp new file mode 100644 index 0000000..40d965e --- /dev/null +++ b/document/kpDocument_Save.cpp @@ -0,0 +1,472 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_DOCUMENT 0 + + +#include "kpDocument.h" +#include "kpDocumentPrivate.h" + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" +#include +#include +#include +#include + +#include "imagelib/kpColor.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "kpDefs.h" +#include "environments/document/kpDocumentEnvironment.h" +#include "document/kpDocumentSaveOptions.h" +#include "imagelib/kpDocumentMetaInfo.h" +#include "imagelib/effects/kpEffectReduceColors.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "lgpl/generic/kpUrlFormatter.h" +#include "views/manager/kpViewManager.h" + + +bool kpDocument::save (bool lossyPrompt) +{ +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::save(" + << ",lossyPrompt=" << lossyPrompt + << ") url=" << m_url + << " savedAtLeastOnceBefore=" << savedAtLeastOnceBefore (); +#endif + + // TODO: check feels weak + if (m_url.isEmpty () || m_saveOptions->mimeType ().isEmpty ()) + { + KMessageBox::detailedError (d->environ->dialogParent (), + i18n ("Could not save image - insufficient information."), + i18n ("URL: %1\n" + "Mimetype: %2", + prettyUrl (), + m_saveOptions->mimeType ().isEmpty () ? + i18n ("") : + m_saveOptions->mimeType ()), + i18nc ("@title:window", "Internal Error")); + return false; + } + + return saveAs (m_url, *m_saveOptions, + lossyPrompt); +} + +//--------------------------------------------------------------------- + +// public static +bool kpDocument::lossyPromptContinue (const QImage &pixmap, + const kpDocumentSaveOptions &saveOptions, + QWidget *parent) +{ +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::lossyPromptContinue()"; +#endif + +#define QUIT_IF_CANCEL(messageBoxCommand) \ +{ \ + if (messageBoxCommand != KMessageBox::Continue) \ + { \ + return false; \ + } \ +} + + const int lossyType = saveOptions.isLossyForSaving (pixmap); + if (lossyType & (kpDocumentSaveOptions::MimeTypeMaximumColorDepthLow | + kpDocumentSaveOptions::Quality)) + { + QMimeDatabase db; + + QUIT_IF_CANCEL ( + KMessageBox::warningContinueCancel (parent, + i18n ("

The %1 format may not be able" + " to preserve all of the image's color information.

" + + "

Are you sure you want to save in this format?

", + db.mimeTypeForName(saveOptions.mimeType()).comment()), + // TODO: caption misleading for lossless formats that have + // low maximum colour depth + i18nc ("@title:window", "Lossy File Format"), + KStandardGuiItem::save (), + KStandardGuiItem::cancel(), + QLatin1String ("SaveInLossyMimeTypeDontAskAgain"))); + } + else if (lossyType & kpDocumentSaveOptions::ColorDepthLow) + { + QUIT_IF_CANCEL ( + KMessageBox::warningContinueCancel (parent, + i18n ("

Saving the image at the low color depth of %1-bit" + " may result in the loss of color information." + + // TODO: It looks like 8-bit QImage's now support alpha. + // Update kpDocumentSaveOptions::isLossyForSaving() + // and change "might" to "will". + " Any transparency might also be removed.

" + + "

Are you sure you want to save at this color depth?

", + saveOptions.colorDepth ()), + i18nc ("@title:window", "Low Color Depth"), + KStandardGuiItem::save (), + KStandardGuiItem::cancel(), + QLatin1String ("SaveAtLowColorDepthDontAskAgain"))); + } +#undef QUIT_IF_CANCEL + + return true; +} + +//--------------------------------------------------------------------- + +// public static +bool kpDocument::savePixmapToDevice (const QImage &image, + QIODevice *device, + const kpDocumentSaveOptions &saveOptions, + const kpDocumentMetaInfo &metaInfo, + bool lossyPrompt, + QWidget *parent, + bool *userCancelled) +{ + if (userCancelled) + *userCancelled = false; + + QString type = QMimeDatabase().mimeTypeForName (saveOptions.mimeType ()).preferredSuffix (); +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\tmimeType=" << saveOptions.mimeType () + << " type=" << type; +#endif + if (type.isEmpty ()) + return false; + + if (lossyPrompt && !lossyPromptContinue (image, saveOptions, parent)) + { + if (userCancelled) + *userCancelled = true; + + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\treturning false because of lossyPrompt"; + #endif + return false; + } + + + // TODO: fix dup with kpDocumentSaveOptions::isLossyForSaving() + const bool useSaveOptionsColorDepth = + (saveOptions.mimeTypeHasConfigurableColorDepth () && + !saveOptions.colorDepthIsInvalid ()); + + const bool useSaveOptionsQuality = + (saveOptions.mimeTypeHasConfigurableQuality () && + !saveOptions.qualityIsInvalid ()); + + + // + // Reduce colors if required + // + +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\tuseSaveOptionsColorDepth=" << useSaveOptionsColorDepth + << "current image depth=" << image.depth () + << "save options depth=" << saveOptions.colorDepth (); +#endif + QImage imageToSave(image); + + if (useSaveOptionsColorDepth && + imageToSave.depth () != saveOptions.colorDepth ()) + { + // TODO: I think this erases the mask! + // + // I suspect this doesn't matter since this is only called to + // reduce color depth and QImage's with depth < 32 don't + // support masks anyway. + // + // Later: I think the mask is preserved for 8-bit since Qt4 + // seems to support it for QImage. + imageToSave = kpEffectReduceColors::convertImageDepth (imageToSave, + saveOptions.colorDepth (), + saveOptions.dither ()); + } + + + // + // Write Meta Info + // + + imageToSave.setDotsPerMeterX (metaInfo.dotsPerMeterX ()); + imageToSave.setDotsPerMeterY (metaInfo.dotsPerMeterY ()); + imageToSave.setOffset (metaInfo.offset ()); + + foreach (const QString &key, metaInfo.textKeys()) + imageToSave.setText(key, metaInfo.text(key)); + + // + // Save at required quality + // + + int quality = -1; // default + + if (useSaveOptionsQuality) + quality = saveOptions.quality(); + +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\tsaving"; +#endif + if (!imageToSave.save (device, type.toLatin1 (), quality)) + { + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\tQImage::save() returned false"; + #endif + return false; + } + + +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\tsave OK"; +#endif + return true; +} + +//--------------------------------------------------------------------- + +static void CouldNotCreateTemporaryFileDialog (QWidget *parent) +{ + KMessageBox::error (parent, + i18n ("Could not save image - unable to create temporary file.")); +} + +//--------------------------------------------------------------------- + +static void CouldNotSaveDialog (const QUrl &url, const QString &error, QWidget *parent) +{ + KMessageBox::error (parent, + i18n ("Could not save as \"%1\": %2", + kpUrlFormatter::PrettyFilename (url), + error)); +} + +//--------------------------------------------------------------------- + +// public static +bool kpDocument::savePixmapToFile (const QImage &pixmap, + const QUrl &url, + const kpDocumentSaveOptions &saveOptions, + const kpDocumentMetaInfo &metaInfo, + bool lossyPrompt, + QWidget *parent) +{ + // TODO: Use KIO::NetAccess:mostLocalURL() for accessing home:/ (and other + // such local URLs) for efficiency and because only local writes + // are atomic. +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::savePixmapToFile (" + << url + << ",lossyPrompt=" << lossyPrompt + << ")"; + saveOptions.printDebug (QLatin1String ("\tsaveOptions")); + metaInfo.printDebug (QLatin1String ("\tmetaInfo")); +#endif + + if (lossyPrompt && !lossyPromptContinue (pixmap, saveOptions, parent)) + { + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\treturning false because of lossyPrompt"; + #endif + return false; + } + + + // Local file? + if (url.isLocalFile ()) + { + const QString filename = url.toLocalFile (); + + // sync: All failure exit paths _must_ call QSaveFile::cancelWriting() or + // else, the QSaveFile destructor will overwrite the file, + // , despite the failure. + QSaveFile atomicFileWriter (filename); + { + if (!atomicFileWriter.open (QIODevice::WriteOnly)) + { + // We probably don't need this as has not been + // opened. + atomicFileWriter.cancelWriting (); + + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\treturning false because could not open QSaveFile" + << " error=" << atomicFileWriter.error () << endl; + #endif + ::CouldNotCreateTemporaryFileDialog (parent); + return false; + } + + // Write to local temporary file. + if (!savePixmapToDevice (pixmap, &atomicFileWriter, + saveOptions, metaInfo, + false/*no lossy prompt*/, + parent)) + { + atomicFileWriter.cancelWriting (); + + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\treturning false because could not save pixmap to device" + << endl; + #endif + ::CouldNotSaveDialog (url, i18n("Error saving image"), parent); + return false; + } + + // Atomically overwrite local file with the temporary file + // we saved to. + if (!atomicFileWriter.commit ()) + { + atomicFileWriter.cancelWriting (); + + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\tcould not close QSaveFile"; + #endif + ::CouldNotSaveDialog (url, atomicFileWriter.errorString(), parent); + return false; + } + } // sync QSaveFile.cancelWriting() + } + // Remote file? + else + { + // Create temporary file that is deleted when the variable goes + // out of scope. + QTemporaryFile tempFile; + if (!tempFile.open ()) + { + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\treturning false because could not open tempFile"; + #endif + ::CouldNotCreateTemporaryFileDialog (parent); + return false; + } + + // Write to local temporary file. + if (!savePixmapToDevice (pixmap, &tempFile, + saveOptions, metaInfo, + false/*no lossy prompt*/, + parent)) + { + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\treturning false because could not save pixmap to device" + << endl; + #endif + ::CouldNotSaveDialog (url, i18n("Error saving image"), parent); + return false; + } + + // Collect name of temporary file now, as QTemporaryFile::fileName() + // stops working after close() is called. + const QString tempFileName = tempFile.fileName (); + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\ttempFileName='" << tempFileName << "'"; + #endif + Q_ASSERT (!tempFileName.isEmpty ()); + + tempFile.close (); + if (tempFile.error () != QFile::NoError) + { + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\treturning false because could not close"; + #endif + ::CouldNotSaveDialog (url, tempFile.errorString(), parent); + return false; + } + + // Copy local temporary file to overwrite remote. + // It's the kioslave's job to make this atomic (write to .part, then rename .part file) + KIO::FileCopyJob *job = KIO::file_copy (QUrl::fromLocalFile (tempFileName), + url, + -1, + KIO::Overwrite); + KJobWidgets::setWindow (job, parent); + if (!job->exec ()) + { + #if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "\treturning false because could not upload"; + #endif + KMessageBox::error (parent, + i18n ("Could not save image - failed to upload.")); + return false; + } + } + + + return true; +} + +//--------------------------------------------------------------------- + +bool kpDocument::saveAs (const QUrl &url, + const kpDocumentSaveOptions &saveOptions, + bool lossyPrompt) +{ +#if DEBUG_KP_DOCUMENT + qCDebug(kpLogDocument) << "kpDocument::saveAs (" << url << "," + << saveOptions.mimeType () << ")" << endl; +#endif + + if (kpDocument::savePixmapToFile (imageWithSelection (), + url, + saveOptions, *metaInfo (), + lossyPrompt, + d->environ->dialogParent ())) + { + setURL (url, true/*is from url*/); + *m_saveOptions = saveOptions; + m_modified = false; + + m_savedAtLeastOnceBefore = true; + + emit documentSaved (); + return true; + } + + return false; +} + +//--------------------------------------------------------------------- diff --git a/document/kpDocument_Selection.cpp b/document/kpDocument_Selection.cpp new file mode 100644 index 0000000..04ae472 --- /dev/null +++ b/document/kpDocument_Selection.cpp @@ -0,0 +1,350 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_DOCUMENT 0 + + +#include "kpDocument.h" +#include "kpDocumentPrivate.h" + + +#include +#include +#include + +#include "kpLogCategories.h" +#include + +#include "imagelib/kpColor.h" +#include "kpDefs.h" +#include "environments/document/kpDocumentEnvironment.h" +#include "layers/selections/kpAbstractSelection.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "layers/selections/text/kpTextSelection.h" + + +// public +kpAbstractSelection *kpDocument::selection () const +{ + return m_selection; +} + +//--------------------------------------------------------------------- + +// public +kpAbstractImageSelection *kpDocument::imageSelection () const +{ + return dynamic_cast (m_selection); +} + +//--------------------------------------------------------------------- + +// public +kpTextSelection *kpDocument::textSelection () const +{ + return dynamic_cast (m_selection); +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::setSelection (const kpAbstractSelection &selection) +{ +#if DEBUG_KP_DOCUMENT && 1 + qCDebug(kpLogDocument) << "kpDocument::setSelection() sel boundingRect=" + << selection.boundingRect (); +#endif + + d->environ->setQueueViewUpdates (); + { + const bool hadSelection = static_cast (m_selection); + auto *oldSelection = m_selection; + + + // (must be called before giving the document a new selection, to + // avoid a potential mess where switchToCompatibleTool() ends + // the current selection tool, killing the new selection) + bool isTextChanged = false; + d->environ->switchToCompatibleTool (selection, &isTextChanged); + Q_ASSERT (m_selection == oldSelection); + + + m_selection = selection.clone (); + + // There's no need to uninitialize the old selection + // (e.g. call disconnect()) since we delete it later. + connect (m_selection, &kpAbstractSelection::changed, + this, &kpDocument::slotContentsChanged); + + + // + // Now all kpDocument state has been set. + // We can _only_ change the environment after that, as the environment + // may access the document. Exception is above with + // switchToCompatibleTool(). + // + + d->environ->assertMatchingUIState (selection); + + + // + // Now all kpDocument and environment state has been set. + // We can _only_ fire signals after that, as the signal receivers (the + // "wider environment") may access the document and the environment. + // + + #if DEBUG_KP_DOCUMENT && 1 + qCDebug(kpLogDocument) << "\tcheck sel " << (int *) m_selection + << " boundingRect=" << m_selection->boundingRect (); + #endif + if (oldSelection) + { + if (oldSelection->hasContent ()) { + slotContentsChanged (oldSelection->boundingRect ()); + } + else { + emit contentsChanged (oldSelection->boundingRect ()); + } + + delete oldSelection; + oldSelection = nullptr; + } + + if (m_selection->hasContent ()) { + slotContentsChanged (m_selection->boundingRect ()); + } + else { + emit contentsChanged (m_selection->boundingRect ()); + } + + + if (!hadSelection) { + emit selectionEnabled (true); + } + + if (isTextChanged) { + emit selectionIsTextChanged (textSelection ()); + } + } + d->environ->restoreQueueViewUpdates (); + +#if DEBUG_KP_DOCUMENT && 1 + qCDebug(kpLogDocument) << "\tkpDocument::setSelection() ended"; +#endif +} + +//--------------------------------------------------------------------- + +// public +kpImage kpDocument::getSelectedBaseImage () const +{ + auto *imageSel = imageSelection (); + Q_ASSERT (imageSel); + + // Easy if we already have it :) + const auto image = imageSel->baseImage (); + if (!image.isNull ()) { + return image; + } + + + const auto boundingRect = imageSel->boundingRect (); + Q_ASSERT (boundingRect.isValid ()); + + // OPT: This is very slow. Image / More Effects ... calls us twice + // unnecessarily. + return imageSel->givenImageMaskedByShape (getImageAt (boundingRect)); +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::imageSelectionPullFromDocument (const kpColor &backgroundColor) +{ + auto *imageSel = imageSelection (); + Q_ASSERT (imageSel); + + // Should not already have an image or we would not be pulling. + Q_ASSERT (!imageSel->hasContent ()); + + const auto boundingRect = imageSel->boundingRect (); + Q_ASSERT (boundingRect.isValid ()); + + // + // Get selection image from document + // + + auto selectedImage = getSelectedBaseImage (); + + d->environ->setQueueViewUpdates (); + + imageSel->setBaseImage (selectedImage); + + // + // Fill opaque bits of the hole in the document + // + +#if !defined (QT_NO_DEBUG) && !defined (NDEBUG) + if (imageSel->transparency ().isTransparent ()) + { + Q_ASSERT (backgroundColor == imageSel->transparency ().transparentColor ()); + } + else + { + // If this method is begin called by a tool, the assert does not + // have to hold since transparentColor() might not be defined in Opaque + // Mode. + // + // If we were called by a tricky sequence of undo/redo commands, the assert + // does not have to hold for additional reason, which is that + // kpMainWindow::setImageSelectionTransparency() does not have to + // set in Opaque Mode. + // + // In practice, it probably does hold but I wouldn't bet on it. + } +#endif + + kpImage eraseImage(boundingRect.size(), QImage::Format_ARGB32_Premultiplied); + eraseImage.fill(backgroundColor.toQRgb()); + + // only paint the region of the shape of the selection + QPainter painter(m_image); + painter.setClipRegion(imageSel->shapeRegion()); + painter.setCompositionMode(QPainter::CompositionMode_Source); + painter.drawImage(boundingRect.topLeft(), eraseImage); + slotContentsChanged(boundingRect); + + d->environ->restoreQueueViewUpdates (); +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::selectionDelete () +{ + if ( !m_selection ) { + return; + } + + const auto boundingRect = m_selection->boundingRect (); + Q_ASSERT (boundingRect.isValid ()); + + const auto selectionHadContent = m_selection->hasContent (); + + delete m_selection; + m_selection = nullptr; + + + // HACK to prevent document from being modified when + // user cancels dragging out a new selection + // REFACTOR: Extract this out into a method. + if (selectionHadContent) { + slotContentsChanged (boundingRect); + } + else { + emit contentsChanged (boundingRect); + } + + emit selectionEnabled (false); +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::selectionCopyOntoDocument (bool applySelTransparency) +{ + // Empty selection, just doing nothing + if ( !m_selection || !m_selection->hasContent() ) { + return; + } + + const QRect boundingRect = m_selection->boundingRect (); + Q_ASSERT (boundingRect.isValid ()); + + if (imageSelection ()) + { + if (applySelTransparency) { + imageSelection ()->paint (m_image, rect ()); + } + else { + imageSelection ()->paintWithBaseImage (m_image, rect ()); + } + } + else + { + // (for antialiasing with background) + m_selection->paint (m_image, rect ()); + } + + slotContentsChanged (boundingRect); +} + +//--------------------------------------------------------------------- + +// public +void kpDocument::selectionPushOntoDocument (bool applySelTransparency) +{ + selectionCopyOntoDocument (applySelTransparency); + selectionDelete (); +} + +//--------------------------------------------------------------------- + +// public +kpImage kpDocument::imageWithSelection () const +{ +#if DEBUG_KP_DOCUMENT && 1 + qCDebug(kpLogDocument) << "kpDocument::imageWithSelection()"; +#endif + + // Have selection? + // + // It need not have any content because e.g. a text box with an opaque + // background, but no content, is still visually there. + if (m_selection) + { + #if DEBUG_KP_DOCUMENT && 1 + qCDebug(kpLogDocument) << "\tselection @ " << m_selection->boundingRect (); + #endif + kpImage output = *m_image; + + // (this is a NOP for image selections without content) + m_selection->paint (&output, rect ()); + + return output; + } + else + { + #if DEBUG_KP_DOCUMENT && 1 + qCDebug(kpLogDocument) << "\tno selection"; + #endif + return *m_image; + } +} + +//--------------------------------------------------------------------- diff --git a/environments/commands/kpCommandEnvironment.cpp b/environments/commands/kpCommandEnvironment.cpp new file mode 100644 index 0000000..940aa65 --- /dev/null +++ b/environments/commands/kpCommandEnvironment.cpp @@ -0,0 +1,102 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "environments/commands/kpCommandEnvironment.h" + +#include "widgets/toolbars/kpColorToolBar.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "layers/selections/image/kpImageSelectionTransparency.h" +#include "layers/selections/text/kpTextStyle.h" +#include "tools/kpTool.h" + + +struct kpCommandEnvironmentPrivate +{ +}; + +kpCommandEnvironment::kpCommandEnvironment (kpMainWindow *mainWindow) + : kpEnvironmentBase (mainWindow), + d (new kpCommandEnvironmentPrivate ()) +{ +} + +kpCommandEnvironment::~kpCommandEnvironment () +{ + delete d; +} + + +// public +void kpCommandEnvironment::setColor (int which, const kpColor &color) const +{ + kpColorToolBar *toolBar = mainWindow ()->colorToolBar (); + Q_ASSERT (toolBar); + + toolBar->setColor (which, color); +} + + +// public +void kpCommandEnvironment::somethingBelowTheCursorChanged () const +{ + kpTool *tool = mainWindow ()->tool (); + Q_ASSERT (tool); + + tool->somethingBelowTheCursorChanged (); +} + + +// public +kpImageSelectionTransparency kpCommandEnvironment::imageSelectionTransparency () const +{ + return mainWindow ()->imageSelectionTransparency (); +} + +// public +void kpCommandEnvironment::setImageSelectionTransparency ( + const kpImageSelectionTransparency &transparency, + bool forceColorChange) +{ + mainWindow ()->setImageSelectionTransparency (transparency, forceColorChange); +} + + +// public +kpTextStyle kpCommandEnvironment::textStyle () const +{ + return mainWindow ()->textStyle (); +} + +// public +void kpCommandEnvironment::setTextStyle (const kpTextStyle &textStyle) +{ + mainWindow ()->setTextStyle (textStyle); +} + + diff --git a/environments/commands/kpCommandEnvironment.h b/environments/commands/kpCommandEnvironment.h new file mode 100644 index 0000000..fb40fbd --- /dev/null +++ b/environments/commands/kpCommandEnvironment.h @@ -0,0 +1,79 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpCommandEnvironment_H +#define kpCommandEnvironment_H + + +#include "environments/kpEnvironmentBase.h" + + +class kpMainWindow; +class kpImageSelectionTransparency; +class kpTextStyle; + + +// Facade for kpCommand clients. +class kpCommandEnvironment : public kpEnvironmentBase +{ +Q_OBJECT + +public: + // Note: Our interface must never publicly leak or any other + // classes we are trying to hide as that would defeat the point of + // the facade. + kpCommandEnvironment (kpMainWindow *mainWindow); + ~kpCommandEnvironment () override; + + + void somethingBelowTheCursorChanged () const; + + + // Sets the foreground and background drawing colors in the UI. + void setColor (int which, const kpColor &color) const; + + + // + // Selections + // + + kpImageSelectionTransparency imageSelectionTransparency () const; + void setImageSelectionTransparency (const kpImageSelectionTransparency &transparency, + bool forceColorChange = false); + + kpTextStyle textStyle () const; + void setTextStyle (const kpTextStyle &textStyle); + + +private: + struct kpCommandEnvironmentPrivate * const d; +}; + + +#endif // kpCommandEnvironment_H + diff --git a/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.cpp b/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.cpp new file mode 100644 index 0000000..5978d33 --- /dev/null +++ b/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.cpp @@ -0,0 +1,42 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h" + +#include "mainWindow/kpMainWindow.h" + + +//--------------------------------------------------------------------- + +kpTransformDialogEnvironment::kpTransformDialogEnvironment(kpMainWindow *mainWindow) + : kpEnvironmentBase(mainWindow) +{ +} + +//--------------------------------------------------------------------- + diff --git a/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h b/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h new file mode 100644 index 0000000..2b9d5b9 --- /dev/null +++ b/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h @@ -0,0 +1,52 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformDialogEnvironment_H +#define kpTransformDialogEnvironment_H + + +#include "environments/kpEnvironmentBase.h" + + + + +// Facade for kpTransformDialog* clients. +class kpTransformDialogEnvironment : public kpEnvironmentBase +{ +Q_OBJECT + +public: + // Note: Our interface must never publicly leak or any other + // classes we are trying to hide as that would defeat the point of + // the facade. + kpTransformDialogEnvironment (kpMainWindow *mainWindow); +}; + + +#endif // kpTransformDialogEnvironment_H + diff --git a/environments/document/kpDocumentEnvironment.cpp b/environments/document/kpDocumentEnvironment.cpp new file mode 100644 index 0000000..21ac912 --- /dev/null +++ b/environments/document/kpDocumentEnvironment.cpp @@ -0,0 +1,211 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_DOCUMENT_ENVIRONMENT 0 + + +#include "environments/document/kpDocumentEnvironment.h" + +#include "kpLogCategories.h" + +#include "mainWindow/kpMainWindow.h" +#include "layers/selections/kpAbstractSelection.h" +#include "document/kpDocument.h" +#include "layers/selections/image/kpEllipticalImageSelection.h" +#include "layers/selections/image/kpFreeFormImageSelection.h" +#include "layers/selections/image/kpImageSelectionTransparency.h" +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "layers/selections/text/kpTextSelection.h" +#include "layers/selections/text/kpTextStyle.h" +#if DEBUG_KP_DOCUMENT_ENVIRONMENT + #include "tools/kpTool.h" +#endif +#include "views/manager/kpViewManager.h" + + +struct kpDocumentEnvironmentPrivate +{ +}; + +kpDocumentEnvironment::kpDocumentEnvironment (kpMainWindow *mainWindow) + : kpEnvironmentBase (mainWindow), + d (new kpDocumentEnvironmentPrivate ()) +{ +} + +kpDocumentEnvironment::~kpDocumentEnvironment () +{ + delete d; +} + + +// public +QWidget *kpDocumentEnvironment::dialogParent () const +{ + return mainWindow (); +} + + +static kpViewManager *ViewManager (kpMainWindow *mw) +{ + return mw->viewManager (); +} + +// public +void kpDocumentEnvironment::setQueueViewUpdates () const +{ + ::ViewManager (mainWindow ())->setQueueUpdates (); +} + +// public +void kpDocumentEnvironment::restoreQueueViewUpdates () const +{ + ::ViewManager (mainWindow ())->restoreQueueUpdates (); +} + +//--------------------------------------------------------------------- + +// public +void kpDocumentEnvironment::switchToCompatibleTool (const kpAbstractSelection &selection, + bool *isTextChanged) const +{ +#if DEBUG_KP_DOCUMENT_ENVIRONMENT + qCDebug(kpLogEnvironments) << "kpDocumentEnvironment::switchToCompatibleTool(" + << &selection << ")" + << " mainwindow.tool=" + << (mainWindow ()->tool () ? mainWindow ()->tool ()->objectName () : nullptr) + << " mainWindow.toolIsTextTool=" << mainWindow ()->toolIsTextTool () + << " current selection=" + << document ()->selection () + << " new selection is text=" + << dynamic_cast (&selection); +#endif + + *isTextChanged = (mainWindow ()->toolIsTextTool () != + (dynamic_cast (&selection) != nullptr)); + + // We don't change the Selection Tool if the new selection's + // shape is merely different to the current tool's (e.g. rectangular + // vs elliptical) because: + // + // 1. All image selection tools support editing selections of all the + // different shapes anyway. + // 2. Suppose the user is trying out different drags of selection borders + // and then decides to paste a differently shaped selection before continuing + // to try out different borders. If the pasting were to switch to + // a differently shaped tool, the borders drawn after the paste would + // be using a new shape rather than the shape before the paste. This + // could get irritating so we don't do the switch. + if (!mainWindow ()->toolIsASelectionTool () || *isTextChanged) + { + // See kpDocument::setSelection() APIDoc for this assumption. + Q_ASSERT (!document ()->selection ()); + + // Switch to the appropriately shaped selection tool + // _before_ we change the selection + // (all selection tool's ::end() functions nuke the current selection) + if (dynamic_cast (&selection)) + { + #if DEBUG_KP_DOCUMENT_ENVIRONMENT + qCDebug(kpLogEnvironments) << "\tswitch to rect selection tool"; + #endif + mainWindow ()->slotToolRectSelection (); + } + else if (dynamic_cast (&selection)) + { + #if DEBUG_KP_DOCUMENT_ENVIRONMENT + qCDebug(kpLogEnvironments) << "\tswitch to elliptical selection tool"; + #endif + mainWindow ()->slotToolEllipticalSelection (); + } + else if (dynamic_cast (&selection)) + { + #if DEBUG_KP_DOCUMENT_ENVIRONMENT + qCDebug(kpLogEnvironments) << "\tswitch to free form selection tool"; + #endif + mainWindow ()->slotToolFreeFormSelection (); + } + else if (dynamic_cast (&selection)) + { + #if DEBUG_KP_DOCUMENT_ENVIRONMENT + qCDebug(kpLogEnvironments) << "\tswitch to text selection tool"; + #endif + mainWindow ()->slotToolText (); + } + else { + Q_ASSERT (!"Unknown selection type"); + } + } + +#if DEBUG_KP_DOCUMENT_ENVIRONMENT + qCDebug(kpLogEnvironments) << "kpDocumentEnvironment::switchToCompatibleTool(" << &selection << ") finished"; +#endif +} + +//--------------------------------------------------------------------- + +// public +void kpDocumentEnvironment::assertMatchingUIState (const kpAbstractSelection &selection) const +{ + // Trap and try to recover from bugs. + // TODO: See kpDocument::setSelection() API comment and determine best fix. + const auto *imageSelection = dynamic_cast (&selection); + const auto *textSelection = dynamic_cast (&selection); + + if (imageSelection) + { + if (imageSelection->transparency () != mainWindow ()->imageSelectionTransparency ()) + { + qCCritical(kpLogEnvironments) << "kpDocument::setSelection() sel's transparency differs " + "from mainWindow's transparency - setting mainWindow's transparency " + "to sel"; + + qCCritical(kpLogEnvironments) << "\tisOpaque: sel=" << imageSelection->transparency ().isOpaque () + << " mainWindow=" << mainWindow ()->imageSelectionTransparency ().isOpaque (); + + mainWindow ()->setImageSelectionTransparency (imageSelection->transparency ()); + } + } + else if (textSelection) + { + if (textSelection->textStyle () != mainWindow ()->textStyle ()) + { + qCCritical(kpLogEnvironments) << "kpDocument::setSelection() sel's textStyle differs " + "from mainWindow's textStyle - setting mainWindow's textStyle " + "to sel"; + + mainWindow ()->setTextStyle (textSelection->textStyle ()); + } + } + else + { + Q_ASSERT (!"Unknown selection type"); + } +} + + diff --git a/environments/document/kpDocumentEnvironment.h b/environments/document/kpDocumentEnvironment.h new file mode 100644 index 0000000..34450f3 --- /dev/null +++ b/environments/document/kpDocumentEnvironment.h @@ -0,0 +1,71 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpDocumentEnvironment_H +#define kpDocumentEnvironment_H + + +#include "environments/kpEnvironmentBase.h" + + +class QWidget; + +class kpAbstractSelection; + + +// Facade for kpDocument clients. +class kpDocumentEnvironment : public kpEnvironmentBase +{ +Q_OBJECT + +public: + // Note: Our interface must never publicly leak or any other + // classes we are trying to hide as that would defeat the point of + // the facade. + kpDocumentEnvironment (kpMainWindow *mainWindow); + ~kpDocumentEnvironment () override; + + + QWidget *dialogParent () const; + + void setQueueViewUpdates () const; + void restoreQueueViewUpdates () const; + + void switchToCompatibleTool (const kpAbstractSelection &selection, + // REFACTOR: This is horrible API and terribly named. + bool *isTextChanged) const; + void assertMatchingUIState (const kpAbstractSelection &selection) const; + + +private: + struct kpDocumentEnvironmentPrivate * const d; +}; + + +#endif // kpDocumentEnvironment_H + diff --git a/environments/kpEnvironmentBase.cpp b/environments/kpEnvironmentBase.cpp new file mode 100644 index 0000000..602b78a --- /dev/null +++ b/environments/kpEnvironmentBase.cpp @@ -0,0 +1,120 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "environments/kpEnvironmentBase.h" + +#include "widgets/toolbars/kpColorToolBar.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "layers/selections/text/kpTextStyle.h" +#include "tools/kpTool.h" + + +struct kpEnvironmentBasePrivate +{ + kpMainWindow *mainWindow; +}; + +kpEnvironmentBase::kpEnvironmentBase (kpMainWindow *mainWindow) + : QObject (mainWindow), + d (new kpEnvironmentBasePrivate ()) +{ + Q_ASSERT (mainWindow); + + d->mainWindow = mainWindow; +} + +kpEnvironmentBase::~kpEnvironmentBase () +{ + delete d; +} + + +// public +kpDocument *kpEnvironmentBase::document () const +{ + return d->mainWindow->document (); +} + + +// public +kpAbstractSelection *kpEnvironmentBase::selection () const +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + return doc->selection (); +} + +// public +kpAbstractImageSelection *kpEnvironmentBase::imageSelection () const +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + return doc->imageSelection (); +} + +// public +kpTextSelection *kpEnvironmentBase::textSelection () const +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + + return doc->textSelection (); +} + + +// public +kpViewManager *kpEnvironmentBase::viewManager () const +{ + return mainWindow ()->viewManager (); +} + + +// public +kpCommandEnvironment *kpEnvironmentBase::commandEnvironment () const +{ + return mainWindow ()->commandEnvironment (); +} + + +// public +kpColor kpEnvironmentBase::backgroundColor (bool ofSelection) const +{ + return d->mainWindow->backgroundColor (ofSelection); +} + + +// protected +kpMainWindow *kpEnvironmentBase::mainWindow () const +{ + return d->mainWindow; +} + + diff --git a/environments/kpEnvironmentBase.h b/environments/kpEnvironmentBase.h new file mode 100644 index 0000000..e03507a --- /dev/null +++ b/environments/kpEnvironmentBase.h @@ -0,0 +1,99 @@ + +// LOREFACTOR: The files in this folder duplicate too much code. +// Use mixin multiple inheritance to get around this. +// +// LOREFACTOR: Move as much kpMainWindow code as possible into these classes +// to reduce the size of kpMainWindow. But do not split concerns / +// "aspects" in kpMainWindow, with half the code there and half here, +// as that would be confusing. + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEnvironmentBase_H +#define kpEnvironmentBase_H + + +#include + + +class kpAbstractImageSelection; +class kpAbstractSelection; +class kpColor; +class kpCommandEnvironment; +class kpDocument; +class kpMainWindow; +class kpTextSelection; +class kpViewManager; + + +// Abstract facade bridging kpMainWindow and other suppliers (e.g. kpTool, +// kpToolToolBar, kpColorToolBar) to clients. +// +// This decouples as many classes as possible from clients, for maintainability. +// If adding new methods to this class, it is preferable to expose additional +// functionality, rather than expose additional classes. +// +// This class also avoids cramming excessive functionality into kpMainWindow. +// +// If this interface gets too bloated, push down the specialized methods into +// a new class. +class kpEnvironmentBase : public QObject +{ +Q_OBJECT + +// (must derive from) +protected: + // Note: Our interface must never publicly leak or any other + // classes we are trying to hide as that would defeat the point of + // the facade. + kpEnvironmentBase (kpMainWindow *mainWindow); + ~kpEnvironmentBase () override; + +public: + kpDocument *document () const; + + kpAbstractSelection *selection () const; + kpAbstractImageSelection *imageSelection () const; + kpTextSelection *textSelection () const; + + kpViewManager *viewManager () const; + + kpCommandEnvironment *commandEnvironment () const; + + kpColor backgroundColor (bool ofSelection = false) const; + +protected: + kpMainWindow *mainWindow () const; + +private: + struct kpEnvironmentBasePrivate * const d; +}; + + +#endif // kpEnvironmentBase_H + diff --git a/environments/tools/kpToolEnvironment.cpp b/environments/tools/kpToolEnvironment.cpp new file mode 100644 index 0000000..f0346fc --- /dev/null +++ b/environments/tools/kpToolEnvironment.cpp @@ -0,0 +1,217 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpToolEnvironment.h" + +#include "imagelib/kpColor.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "mainWindow/kpMainWindow.h" +#include "widgets/toolbars/kpToolToolBar.h" + +#include + +#include +#include +#include + +//-------------------------------------------------------------------------------- + +bool kpToolEnvironment::drawAntiAliased = true; + +//-------------------------------------------------------------------------------- + +struct kpToolEnvironmentPrivate +{ +}; + +kpToolEnvironment::kpToolEnvironment (kpMainWindow *mainWindow) + : kpEnvironmentBase (mainWindow), + d (new kpToolEnvironmentPrivate ()) +{ +} + +kpToolEnvironment::~kpToolEnvironment () +{ + delete d; +} + + +// public +KActionCollection *kpToolEnvironment::actionCollection () const +{ + return mainWindow ()->actionCollection (); +} + +// public +kpCommandHistory *kpToolEnvironment::commandHistory () const +{ + return mainWindow ()->commandHistory (); +} + + +// public +QActionGroup *kpToolEnvironment::toolsActionGroup () const +{ + return mainWindow ()->toolsActionGroup (); +} + +// public +kpToolToolBar *kpToolEnvironment::toolToolBar () const +{ + return mainWindow ()->toolToolBar (); +} + +// public +void kpToolEnvironment::hideAllToolWidgets () const +{ + toolToolBar ()->hideAllToolWidgets (); +} + +// public +bool kpToolEnvironment::selectPreviousTool () const +{ + kpToolToolBar *tb = toolToolBar (); + + // (don't end up with no tool selected) + if (!tb->previousTool ()) { + return false; + } + + // endInternal() will be called by kpMainWindow (thanks to this line) + // so we won't have the view anymore + // TODO: Update comment. + tb->selectPreviousTool (); + return true; +} + + +static kpColorToolBar *ColorToolBar (kpMainWindow *mw) +{ + return mw->colorToolBar (); +} + +// public +kpColor kpToolEnvironment::color (int which) const +{ + return ::ColorToolBar (mainWindow ())->color (which); +} + +// public +double kpToolEnvironment::colorSimilarity () const +{ + return ::ColorToolBar (mainWindow ())->colorSimilarity (); +} + +// public +int kpToolEnvironment::processedColorSimilarity () const +{ + return ::ColorToolBar (mainWindow ())->processedColorSimilarity (); +} + +// public +kpColor kpToolEnvironment::oldForegroundColor () const +{ + return ::ColorToolBar (mainWindow ())->oldForegroundColor (); +} + +// public +kpColor kpToolEnvironment::oldBackgroundColor () const +{ + return ::ColorToolBar (mainWindow ())->oldBackgroundColor (); +} + +// public +double kpToolEnvironment::oldColorSimilarity () const +{ + return ::ColorToolBar (mainWindow ())->oldColorSimilarity (); +} + + +// public +void kpToolEnvironment::flashColorSimilarityToolBarItem () const +{ + ::ColorToolBar (mainWindow ())->flashColorSimilarityToolBarItem (); +} + + +// public +void kpToolEnvironment::setColor (int which, const kpColor &color) const +{ + kpColorToolBar *toolBar = mainWindow ()->colorToolBar (); + Q_ASSERT (toolBar); + + toolBar->setColor (which, color); +} + + +// public +void kpToolEnvironment::deleteSelection () const +{ + mainWindow ()->slotDelete (); +} + +// public +void kpToolEnvironment::pasteTextAt (const QString &text, const QPoint &point, + bool allowNewTextSelectionPointShift) const +{ + mainWindow ()->pasteTextAt (text, point, allowNewTextSelectionPointShift); +} + + +// public +void kpToolEnvironment::zoomIn (bool centerUnderCursor) const +{ + mainWindow ()->zoomIn (centerUnderCursor); +} + +// public +void kpToolEnvironment::zoomOut (bool centerUnderCursor) const +{ + mainWindow ()->zoomOut (centerUnderCursor); +} + + +// public +void kpToolEnvironment::zoomToRect ( + const QRect &normalizedDocRect, + bool accountForGrips, + bool careAboutWidth, bool careAboutHeight) const +{ + mainWindow ()->zoomToRect ( + normalizedDocRect, + accountForGrips, + careAboutWidth, careAboutHeight); +} + +// public +void kpToolEnvironment::fitToPage () const +{ + mainWindow ()->slotFitToPage (); +} + + diff --git a/environments/tools/kpToolEnvironment.h b/environments/tools/kpToolEnvironment.h new file mode 100644 index 0000000..4bd6348 --- /dev/null +++ b/environments/tools/kpToolEnvironment.h @@ -0,0 +1,163 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolEnvironment_H +#define kpToolEnvironment_H + + +#include "environments/kpEnvironmentBase.h" + + +class QActionGroup; +class QPoint; +class QRect; +class QString; + +class KActionCollection; + +class kpColor; +class kpCommandHistory; +class kpToolToolBar; + + +// Facade for kpTool clients. +class kpToolEnvironment : public kpEnvironmentBase +{ +Q_OBJECT + +public: + // Note: Our interface must never publicly leak or any other + // classes we are trying to hide as that would defeat the point of + // the facade. + kpToolEnvironment (kpMainWindow *mainWindow); + ~kpToolEnvironment () override; + + + KActionCollection *actionCollection () const; + + kpCommandHistory *commandHistory () const; + + QActionGroup *toolsActionGroup () const; + kpToolToolBar *toolToolBar () const; + void hideAllToolWidgets () const; + bool selectPreviousTool () const; + + kpColor color (int which) const; + double colorSimilarity () const; + int processedColorSimilarity () const; + + // (only valid in kpTool::slotForegroundColorChanged()) + kpColor oldForegroundColor () const; + // (only valid in kpTool::slotBackgroundColorChanged()) + kpColor oldBackgroundColor () const; + + // (only valid in kpTool::slotColorSimilarityChanged()) + double oldColorSimilarity () const; + + // Flashes the Color Similarity Tool Bar Item to highlight to the user, + // the existence of the Color Similarity feature. + // + // This should be used in only 3 circumstances: + // + // 1. Tools not acting on the selection but using Color Similarity + // e.g. Color Eraser, Flood Fill, Auto Crop. Note that Auto Crop + // becomes Remove Internal Border when a selection is active but + // the flashing still occurs because the extent of the effect is + // directly dependent on Color Similarity. + // + // 2. A change to selection transparency (background color, color similarity + // percentage, change from opaque to transparent). + // + // It is not used when the transparency is opaque or when changing from + // transparent to opaque, as you're not using Color Similarity in these + // cases. + // + // Similarly, it is not used when there is no image selection or the + // image selection is just a border, as changing the selection + // transparency also does nothing in these cases. + // + // 3. Pulling a selection from the document, when selection transparency + // is transparent. + // + // Except for any pulling phase, it is not used for effects that use + // the "transparent image" of a selection (e.g. smearing a transparent + // selection). This is to minimize distractions and because the flashing + // has already been done by pulling. + // + // This should always be called _before_ an operation related to Color + // Similarity, to indicate that the Color Similarity was applied throughout + // the operation -- not at the end. This aspect is most noticeable for + // the time-consuming Autocrop feature, which may fail with a dialog -- + // it would look wrong to only flash the Color Similarity Tool Bar Item when + // the dialog comes up after the failed operation, as it implies that Color + // Similarity was not used during the operation. Having said all this, + // currently the flashing still happens afterwards because the flashing is + // not done in a separate thread. However, assume that the implementation + // will be fixed later. + // + // It is tempting to simply disable the Color Similarity Tool Bar Item + // if the current tool does not use Color Similarity - this change in + // enabled state would be enough to highlight the existence of Color + // Similarity, without the need for this flashing. However, Auto Crop + // is always available - independent of the current tool - and it uses + // Color Similarity, so we can never disable the Tool Bar Item. + // + // We flash in tools but not commands as else it would be very distracting + // Undo/Redo - this flashing in the tools is distracting enough already :) + void flashColorSimilarityToolBarItem () const; + + void setColor (int which, const kpColor &color) const; + + void deleteSelection () const; + void pasteTextAt (const QString &text, const QPoint &point, + // Allow tiny adjustment of so that mouse + // pointer is not exactly on top of the topLeft of + // any new text selection (so that it doesn't look + // weird by being on top of a resize handle just after + // a paste). + bool allowNewTextSelectionPointShift = false) const; + + void zoomIn (bool centerUnderCursor = false) const; + void zoomOut (bool centerUnderCursor = false) const; + + void zoomToRect (const QRect &normalizedDocRect, + bool accountForGrips, + bool careAboutWidth, bool careAboutHeight) const; + + void fitToPage () const; + + static bool drawAntiAliased; + + +private: + struct kpToolEnvironmentPrivate * const d; +}; + + +#endif // kpToolEnvironment_H + diff --git a/environments/tools/selection/kpToolSelectionEnvironment.cpp b/environments/tools/selection/kpToolSelectionEnvironment.cpp new file mode 100644 index 0000000..4513e9d --- /dev/null +++ b/environments/tools/selection/kpToolSelectionEnvironment.cpp @@ -0,0 +1,96 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpToolSelectionEnvironment.h" + +#include "mainWindow/kpMainWindow.h" +#include "layers/selections/image/kpImageSelectionTransparency.h" +#include "layers/selections/text/kpTextStyle.h" + + +struct kpToolSelectionEnvironmentPrivate +{ +}; + +kpToolSelectionEnvironment::kpToolSelectionEnvironment (kpMainWindow *mainWindow) + : kpToolEnvironment (mainWindow), + d (new kpToolSelectionEnvironmentPrivate ()) +{ +} + +kpToolSelectionEnvironment::~kpToolSelectionEnvironment () +{ + delete d; +} + + +// public +kpImageSelectionTransparency kpToolSelectionEnvironment::imageSelectionTransparency () const +{ + return mainWindow ()->imageSelectionTransparency (); +} + +// public +int kpToolSelectionEnvironment::settingImageSelectionTransparency () const +{ + return mainWindow ()->settingImageSelectionTransparency (); +} + + +// public +void kpToolSelectionEnvironment::deselectSelection () const +{ + mainWindow ()->slotDeselect (); +} + +// public +QMenu *kpToolSelectionEnvironment::selectionToolRMBMenu () const +{ + return mainWindow ()->selectionToolRMBMenu (); +} + + +// public +void kpToolSelectionEnvironment::enableTextToolBarActions (bool enable) const +{ + mainWindow ()->enableTextToolBarActions (enable); +} + +// public +kpTextStyle kpToolSelectionEnvironment::textStyle () const +{ + return mainWindow ()->textStyle (); +} + +// public +int kpToolSelectionEnvironment::settingTextStyle () const +{ + return mainWindow ()->settingTextStyle (); +} + + diff --git a/environments/tools/selection/kpToolSelectionEnvironment.h b/environments/tools/selection/kpToolSelectionEnvironment.h new file mode 100644 index 0000000..18ff1c0 --- /dev/null +++ b/environments/tools/selection/kpToolSelectionEnvironment.h @@ -0,0 +1,72 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolSelectionEnvironment_H +#define kpToolSelectionEnvironment_H + + +#include "environments/tools/kpToolEnvironment.h" + + +class QMenu; + +class kpImageSelectionTransparency; +class kpTextStyle; + + +// Facade for kpToolSelection clients. +class kpToolSelectionEnvironment : public kpToolEnvironment +{ +Q_OBJECT + +public: + // Note: Our interface must never publicly leak or any other + // classes we are trying to hide as that would defeat the point of + // the facade. + kpToolSelectionEnvironment (kpMainWindow *mainWindow); + ~kpToolSelectionEnvironment () override; + + kpImageSelectionTransparency imageSelectionTransparency () const; + int settingImageSelectionTransparency () const; + + void deselectSelection () const; + + QMenu *selectionToolRMBMenu () const; + + void enableTextToolBarActions (bool enable = true) const; + + kpTextStyle textStyle () const; + int settingTextStyle () const; + +private: + struct kpToolSelectionEnvironmentPrivate * const d; +}; + + +#endif // kpToolSelectionEnvironment_H + diff --git a/gen_cmake_include_dirs b/gen_cmake_include_dirs new file mode 100755 index 0000000..df6260a --- /dev/null +++ b/gen_cmake_include_dirs @@ -0,0 +1,7 @@ +#!/bin/bash +# Recalculates the KolourPaint-specific part of CMakeLists.txt's "include_directories()" + +for f in `find -type d | fgrep -v .git | egrep -v '^\.$' | egrep -v '^\./pics ^\./patches$ ^\./tests$' | cut -c3- | sort` +do + echo '${CMAKE_CURRENT_SOURCE_DIR}/'$f +done diff --git a/gen_cmake_srcs b/gen_cmake_srcs new file mode 100755 index 0000000..db6884e --- /dev/null +++ b/gen_cmake_srcs @@ -0,0 +1,7 @@ +#!/bin/bash +# Recalculates the KolourPaint-specific part of CMakeLists.txt's "set(kolourpaint_SRCS" + +for f in `find -name \*.cpp | cut -c3- | sort` +do + echo '${CMAKE_CURRENT_SOURCE_DIR}/'$f +done diff --git a/generic/kpSetOverrideCursorSaver.cpp b/generic/kpSetOverrideCursorSaver.cpp new file mode 100644 index 0000000..0f7cc9f --- /dev/null +++ b/generic/kpSetOverrideCursorSaver.cpp @@ -0,0 +1,43 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "generic/kpSetOverrideCursorSaver.h" + +#include + + +kpSetOverrideCursorSaver::kpSetOverrideCursorSaver (const QCursor &cursor) +{ + QApplication::setOverrideCursor (cursor); +} + +kpSetOverrideCursorSaver::~kpSetOverrideCursorSaver () +{ + QApplication::restoreOverrideCursor (); +} + diff --git a/generic/kpSetOverrideCursorSaver.h b/generic/kpSetOverrideCursorSaver.h new file mode 100644 index 0000000..cdc0d01 --- /dev/null +++ b/generic/kpSetOverrideCursorSaver.h @@ -0,0 +1,107 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpSetOverrideCursorSaver_H +#define kpSetOverrideCursorSaver_H + + +class QCursor; + + +// +// A less error-prone way of setting the override cursor, compared to +// the QApplication::{set,restore}OverrideCursor() pair. +// +// To use this class, allocate it on the stack with the desired cursor. +// +// This class sets the application's override cursor to on +// construction. It restores the cursor on destruction. +// +// Example Usage 1 - Cursor active during the entire method: +// +// void method () +// { +// kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); +// +// +// +// } // Stack unwinds, calling cursorSaver's destructor, +// // which restores the cursor +// +// Example Usage 2 - Cursor active during part of the method: +// +// void method () +// { +// +// +// { +// kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); +// +// +// +// } // Stack unwinds, calling cursorSaver's destructor, +// // which restores the cursor +// +// // (cursor is restored before this code executes) +// +// } +// +// Note that the kpSetOverrideCursorSaver must be defined as a local +// variable inside -- not outside --- the braces containing the code the +// cursor can be active over, else the destruction and cursor restoration +// might not occur at the right time. In other words, the following usage +// is wrong: +// +// INCORRECT Example Usage 2: +// +// void method () +// { +// +// +// kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); +// // BUG: These braces do nothing to limit the effect of cursorSaver. +// { +// +// } +// +// // BUG: cursorSaver has not yet restored the cursor before this +// // code executes. +// +// +// } // Stack unwinds, calling cursorSaver's destructor, +// // which restores the cursor +// +class kpSetOverrideCursorSaver +{ +public: + kpSetOverrideCursorSaver (const QCursor &cursor); + ~kpSetOverrideCursorSaver (); +}; + + +#endif // kpSetOverrideCursorSaver_H diff --git a/generic/kpWidgetMapper.cpp b/generic/kpWidgetMapper.cpp new file mode 100644 index 0000000..3483665 --- /dev/null +++ b/generic/kpWidgetMapper.cpp @@ -0,0 +1,80 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpWidgetMapper.h" + +#include +#include +#include + + +namespace kpWidgetMapper +{ + + +QPoint fromGlobal (const QWidget *widget, const QPoint &point) +{ + if (!widget) { + return point; + } + + return widget->mapFromGlobal (point); +} + +QRect fromGlobal (const QWidget *widget, const QRect &rect) +{ + if (!widget || !rect.isValid ()) { + return rect; + } + + auto topLeft = fromGlobal (widget, rect.topLeft ()); + return {topLeft.x (), topLeft.y (), rect.width (), rect.height ()}; +} + + +QPoint toGlobal (const QWidget *widget, const QPoint &point) +{ + if (!widget) { + return point; + } + + return widget->mapToGlobal (point); +} + +QRect toGlobal (const QWidget *widget, const QRect &rect) +{ + if (!widget || !rect.isValid ()) { + return rect; + } + + auto topLeft = toGlobal (widget, rect.topLeft ()); + return {topLeft.x (), topLeft.y (), rect.width (), rect.height ()}; +} + + +} // namespace kpWidgetMapper diff --git a/generic/kpWidgetMapper.h b/generic/kpWidgetMapper.h new file mode 100644 index 0000000..727f90d --- /dev/null +++ b/generic/kpWidgetMapper.h @@ -0,0 +1,48 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_WIDGET_MAPPER_H +#define KP_WIDGET_MAPPER_H + + +class QWidget; +class QPoint; +class QRect; + + +namespace kpWidgetMapper +{ + QPoint fromGlobal (const QWidget *widget, const QPoint &point); + QRect fromGlobal (const QWidget *widget, const QRect &rect); + + QPoint toGlobal (const QWidget *widget, const QPoint &point); + QRect toGlobal (const QWidget *widget, const QRect &rect); +} + + +#endif // KP_WIDGET_MAPPER_H diff --git a/generic/widgets/kpResizeSignallingLabel.cpp b/generic/widgets/kpResizeSignallingLabel.cpp new file mode 100644 index 0000000..6793bde --- /dev/null +++ b/generic/widgets/kpResizeSignallingLabel.cpp @@ -0,0 +1,65 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_RESIZE_SIGNALLING_LABEL 0 + + +#include "generic/widgets/kpResizeSignallingLabel.h" + +#include + +#include "kpLogCategories.h" + + +kpResizeSignallingLabel::kpResizeSignallingLabel (const QString &string, + QWidget *parent ) + : QLabel (string, parent) +{ +} + +kpResizeSignallingLabel::kpResizeSignallingLabel (QWidget *parent ) + : QLabel (parent) +{ +} + +kpResizeSignallingLabel::~kpResizeSignallingLabel () = default; + + +// protected virtual [base QLabel] +void kpResizeSignallingLabel::resizeEvent (QResizeEvent *e) +{ +#if DEBUG_KP_RESIZE_SIGNALLING_LABEL + qCDebug(kpLogMisc) << "kpResizeSignallingLabel::resizeEvent() newSize=" << e->size () + << " oldSize=" << e->oldSize (); +#endif + QLabel::resizeEvent (e); + + emit resized (); +} + + diff --git a/generic/widgets/kpResizeSignallingLabel.h b/generic/widgets/kpResizeSignallingLabel.h new file mode 100644 index 0000000..a8eb9a3 --- /dev/null +++ b/generic/widgets/kpResizeSignallingLabel.h @@ -0,0 +1,56 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_RESIZE_SIGNALLING_LABEL_H +#define KP_RESIZE_SIGNALLING_LABEL_H + + +#include + + +class QResizeEvent; + + +class kpResizeSignallingLabel : public QLabel +{ +Q_OBJECT + +public: + kpResizeSignallingLabel (const QString &string, QWidget *parent); + kpResizeSignallingLabel (QWidget *parent); + ~kpResizeSignallingLabel () override; + +signals: + void resized (); + +protected: + void resizeEvent (QResizeEvent *e) override; +}; + + +#endif // KP_RESIZE_SIGNALLING_LABEL_H diff --git a/generic/widgets/kpSubWindow.cpp b/generic/widgets/kpSubWindow.cpp new file mode 100644 index 0000000..330d138 --- /dev/null +++ b/generic/widgets/kpSubWindow.cpp @@ -0,0 +1,35 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpSubWindow.h" + + +kpSubWindow::kpSubWindow (QWidget *parent) + : QDialog (parent) +{ +} diff --git a/generic/widgets/kpSubWindow.h b/generic/widgets/kpSubWindow.h new file mode 100644 index 0000000..e81e927 --- /dev/null +++ b/generic/widgets/kpSubWindow.h @@ -0,0 +1,57 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpSubWindow_H +#define kpSubWindow_H + + +#include + +// +// A tool window with the following properties, in order of importance: +// +// 1. Stays on top of its parent window, but not on top of any other +// window (this rules out Qt::WindowStaysOnTop) +// 2. Does not auto-hide when its parent window loses focus +// (this rules out Qt::Tool). +// 3. Does not have a taskbar entry. +// 4. TODO: Does not take keyboard focus away from the parent window, +// when it is shown. +// 5. TODO: Is not in the Alt+Tab list +// +// We mean "tool window" in the window system sense. It has nothing to do +// with kpTool so to avoid confusion, we do not name it "kpToolWindow". +// +class kpSubWindow : public QDialog +{ + public: + kpSubWindow(QWidget *parent); +}; + + +#endif // kpSubWindow_H diff --git a/imagelib/effects/blitz.cpp b/imagelib/effects/blitz.cpp new file mode 100644 index 0000000..56e9dcd --- /dev/null +++ b/imagelib/effects/blitz.cpp @@ -0,0 +1,715 @@ +// functions taken from qimageblitz (no longer maintained) + +/* + Copyright (C) 1998, 1999, 2001, 2002, 2004, 2005, 2007 + Daniel M. Duley + (C) 2004 Zack Rusin + (C) 2000 Josef Weidendorfer + (C) 1999 Geert Jansen + (C) 1998, 1999 Christian Tibirna + (C) 1998, 1999 Dirk Mueller + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* + Portions of this software were originally based on ImageMagick's + algorithms. ImageMagick is copyrighted under the following conditions: + +Copyright (C) 2003 ImageMagick Studio, a non-profit organization dedicated to +making software imaging solutions freely available. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files ("ImageMagick"), to deal +in ImageMagick without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of ImageMagick, and to permit persons to whom the ImageMagick 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 ImageMagick. + +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 +ImageMagick Studio 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 ImageMagick or the use or other dealings in ImageMagick. + +Except as contained in this notice, the name of the ImageMagick Studio shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in ImageMagick without prior written authorization from the +ImageMagick Studio. +*/ + +#include "blitz.h" + +#include +#include + +#define M_SQ2PI 2.50662827463100024161235523934010416269302368164062 +#define M_EPSILON 1.0e-6 + +#define CONVOLVE_ACC(weight, pixel) \ + r+=((weight))*(qRed((pixel))); g+=((weight))*(qGreen((pixel))); \ + b+=((weight))*(qBlue((pixel))); + +//-------------------------------------------------------------------------------- + +inline QRgb convertFromPremult(QRgb p) +{ + int alpha = qAlpha(p); + return(!alpha ? 0 : qRgba(255*qRed(p)/alpha, + 255*qGreen(p)/alpha, + 255*qBlue(p)/alpha, + alpha)); +} + +//-------------------------------------------------------------------------------- + +inline QRgb convertToPremult(QRgb p) +{ + unsigned int a = p >> 24; + unsigned int t = (p & 0xff00ff) * a; + t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; + t &= 0xff00ff; + + p = ((p >> 8) & 0xff) * a; + p = (p + ((p >> 8) & 0xff) + 0x80); + p &= 0xff00; + p |= t | (a << 24); + return(p); +} + +//-------------------------------------------------------------------------------- +// These are used as accumulators + +typedef struct +{ + quint32 red, green, blue, alpha; +} IntegerPixel; + +typedef struct +{ + // Yes, a normal pixel can be used instead but this is easier to read + // and no shifts to get components. + quint8 red, green, blue, alpha; +} CharPixel; + +typedef struct +{ + quint32 red, green, blue, alpha; +} HistogramListItem; + + +bool equalize(QImage &img) +{ + if(img.isNull()) { + return(false); + } + + HistogramListItem *histogram; + IntegerPixel *map; + IntegerPixel intensity, high, low; + CharPixel *equalize_map; + int i, count; + QRgb pixel, *dest; + unsigned char r, g, b; + + if(img.depth() < 32){ + img = img.convertToFormat(img.hasAlphaChannel() ? + QImage::Format_ARGB32 : + QImage::Format_RGB32); + } + count = img.width()*img.height(); + + map = new IntegerPixel[256]; + histogram = new HistogramListItem[256]; + equalize_map = new CharPixel[256]; + + // form histogram + memset(histogram, 0, 256*sizeof(HistogramListItem)); + dest = reinterpret_cast(img.bits()); + + if(img.format() == QImage::Format_ARGB32_Premultiplied){ + for(i=0; i < count; ++i, ++dest){ + pixel = convertFromPremult(*dest); + histogram[qRed(pixel)].red++; + histogram[qGreen(pixel)].green++; + histogram[qBlue(pixel)].blue++; + histogram[qAlpha(pixel)].alpha++; + } + } + else{ + for(i=0; i < count; ++i){ + pixel = *dest++; + histogram[qRed(pixel)].red++; + histogram[qGreen(pixel)].green++; + histogram[qBlue(pixel)].blue++; + histogram[qAlpha(pixel)].alpha++; + } + } + + // integrate the histogram to get the equalization map + memset(&intensity, 0, sizeof(IntegerPixel)); + for(i=0; i < 256; ++i){ + intensity.red += histogram[i].red; + intensity.green += histogram[i].green; + intensity.blue += histogram[i].blue; + map[i] = intensity; + } + + low = map[0]; + high = map[255]; + memset(equalize_map, 0, 256*sizeof(CharPixel)); + for(i=0; i < 256; ++i){ + if(high.red != low.red) { + equalize_map[i].red = static_cast + ((255*(map[i].red-low.red))/(high.red-low.red)); + } + if(high.green != low.green) { + equalize_map[i].green = static_cast + ((255*(map[i].green-low.green))/(high.green-low.green)); + } + if(high.blue != low.blue) { + equalize_map[i].blue = static_cast + ((255*(map[i].blue-low.blue))/(high.blue-low.blue)); + } + } + + // stretch the histogram and write + dest = reinterpret_cast(img.bits()); + if(img.format() == QImage::Format_ARGB32_Premultiplied){ + for(i=0; i < count; ++i, ++dest){ + pixel = convertFromPremult(*dest); + r = static_cast ((low.red != high.red) ? + equalize_map[qRed(pixel)].red : qRed(pixel)); + + g = static_cast ((low.green != high.green) ? + equalize_map[qGreen(pixel)].green : qGreen(pixel)); + + b = static_cast ((low.blue != high.blue) ? + equalize_map[qBlue(pixel)].blue : qBlue(pixel)); + + *dest = convertToPremult(qRgba(r, g, b, qAlpha(pixel))); + } + } + else{ + for(i=0; i < count; ++i){ + pixel = *dest; + r = static_cast ((low.red != high.red) ? + equalize_map[qRed(pixel)].red : qRed(pixel)); + + g = static_cast ((low.green != high.green) ? + equalize_map[qGreen(pixel)].green : qGreen(pixel)); + + b = static_cast ((low.blue != high.blue) ? + equalize_map[qBlue(pixel)].blue : qBlue(pixel)); + + *dest++ = qRgba(r, g, b, qAlpha(pixel)); + } + } + + delete[] histogram; + delete[] map; + delete[] equalize_map; + return(true); +} + +//-------------------------------------------------------------------------------- + +QImage Blitz::blur(QImage &img, int radius) +{ + if (img.isNull()) { + return (img); + } + + if (img.depth() < 8) { + img = img.convertToFormat(QImage::Format_Indexed8); + } + + QVector colorTable; + if (img.format() == QImage::Format_Indexed8) { + colorTable = img.colorTable(); + } + + auto width = img.width(); + auto height = img.height(); + + QImage buffer(width, height, img.hasAlphaChannel() ? QImage::Format_ARGB32 : QImage::Format_RGB32); + + const auto img_format = img.format(); + + int *as = new int[width]; + int *rs = new int[width]; + int *gs = new int[width]; + int *bs = new int[width]; + + QRgb *p1 , *p2; + + for (auto y = 0; y < height; ++y) { + auto my = y - radius; + auto mh = (radius << 1) + 1; + + if (my < 0) { + mh += my; + my = 0; + } + + if ((my + mh) > height) { + mh = height - my; + } + + p1 = reinterpret_cast(buffer.scanLine(y)); + + memset(as, 0, static_cast(width) * sizeof(int)); + memset(rs, 0, static_cast(width) * sizeof(int)); + memset(gs, 0, static_cast(width) * sizeof(int)); + memset(bs, 0, static_cast(width) * sizeof(int)); + + + switch (img_format) { + case QImage::Format_ARGB32_Premultiplied: { + QRgb pixel; + for (auto i = 0; i < mh; i++) { + p2 = reinterpret_cast(img.scanLine(i + my)); + for (auto j = 0; j < width; ++j) { + p2++; + pixel = convertFromPremult(*p2); + as[j] += qAlpha(pixel); + rs[j] += qRed(pixel) * qRed(pixel); + gs[j] += qGreen(pixel) * qGreen(pixel); + bs[j] += qBlue(pixel) * qBlue(pixel); + } + } + break; + } + + case QImage::Format_Indexed8: { + QRgb pixel; + unsigned char *ptr; + for (auto i = 0; i < mh; ++i) { + ptr = img.scanLine(i + my); + for (auto j = 0; j < width; ++j) { + ptr++; + pixel = colorTable[*ptr]; + as[j] += qAlpha(pixel); + rs[j] += qRed(pixel) * qRed(pixel); + gs[j] += qGreen(pixel) * qGreen(pixel); + bs[j] += qBlue(pixel) * qBlue(pixel); + } + } + break; + } + + default: { + for (auto i = 0; i < mh; ++i) { + p2 = reinterpret_cast(img.scanLine(i + my)); + for (auto j = 0; j < width; j++) { + p2++; + as[j] += qAlpha(*p2); + rs[j] += qRed(*p2); + gs[j] += qGreen(*p2); + bs[j] += qBlue(*p2); + } + } + break; + } + } + + for (auto i = 0; i < width; ++i) { + auto a{0}; + auto r{0}; + auto g{0}; + auto b{0}; + + auto mx = i - radius; + auto mw = (radius << 1) + 1; + + if (mx < 0) { + mw += mx; + mx = 0; + } + + if ((mx + mw) > width) { + mw = width - mx; + } + + for (auto j = mx; j < (mw + mx); ++j) { + a += as[j]; + r += rs[j]; + g += gs[j]; + b += bs[j]; + } + + auto mt = mw * mh; + + a = a / mt; + r = r / mt; + g = g / mt; + b = b / mt; + + *p1++ = qRgba(std::sqrt(r), std::sqrt(g), std::sqrt(b), a); + } + } + + delete[] as; + delete[] rs; + delete[] gs; + delete[] bs; + + return (buffer); +} + +//-------------------------------------------------------------------------------- + +int defaultConvolveMatrixSize(float radius, float sigma, bool quality) +{ + int i, matrix_size; + float normalize, value; + float sigma2 = sigma*sigma*2.0f; + float sigmaSQ2PI = static_cast(M_SQ2PI) * sigma; + int max = quality ? 65535 : 255; + + if(sigma == 0.0f){ + qWarning("Blitz::defaultConvolveMatrixSize(): Zero sigma is invalid!"); + return(5); + } + + if(radius > 0.0f) { + return(static_cast(2.0f * std::ceil(radius) + 1.0f)); + } + + matrix_size = 5; + do{ + normalize = 0.0; + for(i=(-matrix_size/2); i <= (matrix_size/2); ++i) { + normalize += std::exp(-(static_cast (i*i))/sigma2) / sigmaSQ2PI; + } + i = matrix_size/2; + value = std::exp(-(static_cast (i*i))/sigma2) / sigmaSQ2PI / normalize; + matrix_size += 2; + } while(static_cast(max*value) > 0); + + matrix_size-=4; + return(matrix_size); +} + +//-------------------------------------------------------------------------------- + +QImage convolve(QImage &img, int matrix_size, float *matrix) +{ + int i, x, y, w, h, matrix_x, matrix_y; + int edge = matrix_size/2; + QRgb *dest, *src, *s, **scanblock; + float *m, *normalize_matrix, normalize; + + if(!(matrix_size % 2)){ + qWarning("Blitz::convolve(): kernel width must be an odd number!"); + return(img); + } + + w = img.width(); + h = img.height(); + if(w < 3 || h < 3){ + qWarning("Blitz::convolve(): Image is too small!"); + return(img); + } + + if(img.format() == QImage::Format_ARGB32_Premultiplied) { + img = img.convertToFormat(QImage::Format_ARGB32); + } + else if(img.depth() < 32){ + img = img.convertToFormat(img.hasAlphaChannel() ? + QImage::Format_ARGB32 : + QImage::Format_RGB32); + } + QImage buffer(w, h, img.format()); + + scanblock = new QRgb* [matrix_size]; + normalize_matrix = new float[matrix_size*matrix_size]; + + // create normalized matrix + normalize = 0.0; + for(i=0; i < matrix_size*matrix_size; ++i) { + normalize += matrix[i]; + } + if(std::abs(normalize) <= static_cast (M_EPSILON)) { + normalize = 1.0f; + } + normalize = 1.0f/normalize; + for(i=0; i < matrix_size*matrix_size; ++i){ + normalize_matrix[i] = normalize*matrix[i]; + } + + // apply + + { + // + // + // Non-MMX version + // + // + + float r, g, b; + for(y=0; y < h; ++y){ + src = reinterpret_cast(img.scanLine(y)); + dest = reinterpret_cast(buffer.scanLine(y)); + // Read in scanlines to pixel neighborhood. If the scanline is outside + // the image use the top or bottom edge. + for(x=y-edge, i=0; x <= y+edge; ++i, ++x){ + scanblock[i] = reinterpret_cast( + img.scanLine((x < 0) ? 0 : (x > h-1) ? h-1 : x)); + } + // Now we are about to start processing scanlines. First handle the + // part where the pixel neighborhood extends off the left edge. + for(x=0; x-edge < 0 ; ++x){ + r = g = b = 0.0; + m = normalize_matrix; + for(matrix_y = 0; matrix_y < matrix_size; ++matrix_y){ + s = scanblock[matrix_y]; + matrix_x = -edge; + while(x+matrix_x < 0){ + CONVOLVE_ACC(*m, *s); + ++matrix_x; ++m; + } + while(matrix_x <= edge){ + CONVOLVE_ACC(*m, *s); + ++matrix_x; ++m; ++s; + } + } + r = r < 0.0f ? 0.0f : r > 255.0f ? 255.0f : r + 0.5f; + g = g < 0.0f ? 0.0f : g > 255.0f ? 255.0f : g + 0.5f; + b = b < 0.0f ? 0.0f : b > 255.0f ? 255.0f : b + 0.5f; + *dest++ = qRgba(static_cast (r), static_cast (g), + static_cast (b), qAlpha(*src++)); + } + // Okay, now process the middle part where the entire neighborhood + // is on the image. + for(; x+edge < w; ++x){ + m = normalize_matrix; + r = g = b = 0.0; + for(matrix_y = 0; matrix_y < matrix_size; ++matrix_y){ + s = scanblock[matrix_y] + (x-edge); + for(matrix_x = -edge; matrix_x <= edge; ++matrix_x, ++m, ++s){ + CONVOLVE_ACC(*m, *s); + } + } + r = r < 0.0f ? 0.0f : r > 255.0f ? 255.0f : r + 0.5f; + g = g < 0.0f ? 0.0f : g > 255.0f ? 255.0f : g + 0.5f; + b = b < 0.0f ? 0.0f : b > 255.0f ? 255.0f : b + 0.5f; + *dest++ = qRgba(static_cast (r), static_cast (g), + static_cast (b), qAlpha(*src++)); + } + // Finally process the right part where the neighborhood extends off + // the right edge of the image + for(; x < w; ++x){ + r = g = b = 0.0; + m = normalize_matrix; + for(matrix_y = 0; matrix_y < matrix_size; ++matrix_y){ + s = scanblock[matrix_y]; + s += x-edge; + matrix_x = -edge; + while(x+matrix_x < w){ + CONVOLVE_ACC(*m, *s); + ++matrix_x; + ++m; + ++s; + } + --s; + while(matrix_x <= edge){ + CONVOLVE_ACC(*m, *s); + ++matrix_x; + ++m; + } + } + r = r < 0.0f ? 0.0f : r > 255.0f ? 255.0f : r + 0.5f; + g = g < 0.0f ? 0.0f : g > 255.0f ? 255.0f : g + 0.5f; + b = b < 0.0f ? 0.0f : b > 255.0f ? 255.0f : b + 0.5f; + *dest++ = qRgba(static_cast (r), static_cast (g), + static_cast (b), qAlpha(*src++)); + } + } + } + + delete[] scanblock; + delete[] normalize_matrix; + return(buffer); +} + +//-------------------------------------------------------------------------------- + +QImage Blitz::gaussianSharpen(QImage &img, float radius, float sigma) +{ + if(sigma == 0.0f){ + qWarning("Blitz::gaussianSharpen(): Zero sigma is invalid!"); + return(img); + } + + int matrix_size = defaultConvolveMatrixSize(radius, sigma, true); + int len = matrix_size*matrix_size; + float alpha, *matrix = new float[len]; + float sigma2 = sigma*sigma*2.0f; + float sigmaPI2 = 2.0f*static_cast (M_PI)*sigma*sigma; + + int half = matrix_size/2; + int x, y, i=0, j=half; + float normalize=0.0; + for(y=(-half); y <= half; ++y, --j){ + for(x=(-half); x <= half; ++x, ++i){ + alpha = std::exp(-(static_cast (x*x+y*y))/sigma2); + matrix[i] = alpha/sigmaPI2; + normalize += matrix[i]; + } + } + + matrix[i/2]=(-2.0f)*normalize; + QImage result(convolve(img, matrix_size, matrix)); + delete[] matrix; + return(result); +} + +//-------------------------------------------------------------------------------- + +QImage Blitz::emboss(QImage &img, float radius, float sigma) +{ + if(sigma == 0.0f){ + qWarning("Blitz::emboss(): Zero sigma is invalid!"); + return(img); + } + + int matrix_size = defaultConvolveMatrixSize(radius, sigma, true); + int len = matrix_size*matrix_size; + + float alpha, *matrix = new float[len]; + float sigma2 = sigma*sigma*2.0f; + float sigmaPI2 = 2.0f*static_cast (M_PI)*sigma*sigma; + + int half = matrix_size/2; + int x, y, i=0, j=half; + for(y=(-half); y <= half; ++y, --j){ + for(x=(-half); x <= half; ++x, ++i){ + alpha = std::exp(-(static_cast (x*x+y*y))/sigma2); + matrix[i]=((x < 0) || (y < 0) ? -8.0f : 8.0f)*alpha/sigmaPI2; + if(x == j) { + matrix[i]=0.0; + } + } + } + QImage result(convolve(img, matrix_size, matrix)); + delete[] matrix; + equalize(result); + return(result); +} + +//-------------------------------------------------------------------------------- + +QImage& Blitz::flatten(QImage &img, const QColor &ca, const QColor &cb) +{ + if(img.isNull()) { + return(img); + } + + if(img.depth() == 1) { + img.setColor(0, ca.rgb()); + img.setColor(1, cb.rgb()); + return(img); + } + + int r1 = ca.red(); int r2 = cb.red(); + int g1 = ca.green(); int g2 = cb.green(); + int b1 = ca.blue(); int b2 = cb.blue(); + int min = 0, max = 255; + + QRgb *data, *end; + QVector cTable; + if(img.format() == QImage::Format_Indexed8){ + cTable = img.colorTable(); + data = static_cast (cTable.data()); + end = data + img.colorCount(); + + } + else{ + data = reinterpret_cast(img.scanLine(0)); + end = data + (img.width()*img.height()); + } + + // get minimum and maximum graylevel + QRgb *ptr = data; + int mean; + + if(img.format() != QImage::Format_ARGB32_Premultiplied){ + while(ptr != end){ + mean = (qRed(*ptr) + qGreen(*ptr) + qBlue(*ptr)) / 3; + min = qMin(min, mean); + max = qMax(max, mean); + ++ptr; + } + } + else{ + QRgb pixel; + while(ptr != end){ + pixel = convertFromPremult(*ptr); + mean = (qRed(pixel) + qGreen(pixel) + qBlue(pixel)) / 3; + min = qMin(min, mean); + max = qMax(max, mean); + ++ptr; + } + } + + // conversion factors + float sr = (static_cast (r2 - r1) / (max - min)); + float sg = (static_cast (g2 - g1) / (max - min)); + float sb = (static_cast (b2 - b1) / (max - min)); + + if(img.format() != QImage::Format_ARGB32_Premultiplied){ + while(data != end){ + mean = (qRed(*data) + qGreen(*data) + qBlue(*data)) / 3; + *data = qRgba(static_cast (sr * (mean - min) + r1 + 0.5f), + static_cast (sg * (mean - min) + g1 + 0.5f), + static_cast (sb * (mean - min) + b1 + 0.5f), + qAlpha(*data)); + ++data; + } + } + else{ + QRgb pixel; + while(data != end){ + pixel = convertFromPremult(*data); + mean = (qRed(pixel) + qGreen(pixel) + qBlue(pixel)) / 3; + *data = + convertToPremult(qRgba(static_cast (sr * (mean - min) + r1 + 0.5f), + static_cast (sg * (mean - min) + g1 + 0.5f), + static_cast (sb * (mean - min) + b1 + 0.5f), + qAlpha(*data))); + ++data; + } + } + + if(img.format() == QImage::Format_Indexed8) { + img.setColorTable(cTable); + } + return(img); +} + +//-------------------------------------------------------------------------------- diff --git a/imagelib/effects/blitz.h b/imagelib/effects/blitz.h new file mode 100644 index 0000000..bb6a44f --- /dev/null +++ b/imagelib/effects/blitz.h @@ -0,0 +1,42 @@ +#ifndef BLITZ_H +#define BLITZ_H + +//************************************************************************** +/* + (c) 2016 Martin Koller, kollix@aon.at + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +//************************************************************************** + +#include + +namespace Blitz +{ + QImage blur(QImage &img, int radius); + QImage gaussianSharpen(QImage &img, float radius, float sigma); + QImage emboss(QImage &img, float radius, float sigma); + QImage &flatten(QImage &img, const QColor &ca, const QColor &cb); +}; + +#endif diff --git a/imagelib/effects/kpEffectBalance.cpp b/imagelib/effects/kpEffectBalance.cpp new file mode 100644 index 0000000..16f727e --- /dev/null +++ b/imagelib/effects/kpEffectBalance.cpp @@ -0,0 +1,187 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_BALANCE 0 + + +#include "kpEffectBalance.h" + +#include + +#include + +#include "kpLogCategories.h" + +#include "pixmapfx/kpPixmapFX.h" + + +#if DEBUG_KP_EFFECT_BALANCE + #include +#endif + + +static inline int between0And255 (int val) +{ + if (val < 0) { + return 0; + } + + if (val > 255) { + return 255; + } + + return val; +} + + +static inline int brightness (int base, int strength) +{ + return between0And255 (base + strength * 255 / 50); +} + +static inline int contrast (int base, int strength) +{ + return between0And255 ((base - 127) * (strength + 50) / 50 + 127); +} + +static inline int gamma (int base, int strength) +{ + return between0And255 (qRound (255.0 * std::pow (base / 255.0, 1.0 / std::pow (10., strength / 50.0)))); +} + + +static inline int brightnessContrastGamma (int base, + int newBrightness, + int newContrast, + int newGamma) +{ + return gamma (contrast (brightness (base, newBrightness), + newContrast), + newGamma); +} + +// public static +kpImage kpEffectBalance::applyEffect (const kpImage &image, + int channels, + int brightness, int contrast, int gamma) +{ +#if DEBUG_KP_EFFECT_BALANCE + qCDebug(kpLogImagelib) << "kpEffectBalance::applyEffect(" + << "channels=" << channels + << ",brightness=" << brightness + << ",contrast=" << contrast + << ",gamma=" << gamma + << ")"; + QTime timer; timer.start (); +#endif + + QImage qimage = image; +#if DEBUG_KP_EFFECT_BALANCE + qCDebug(kpLogImagelib) << "\tconvertToImage=" << timer.restart (); +#endif + + + quint8 transformRed [256], + transformGreen [256], + transformBlue [256]; + + for (int i = 0; i < 256; i++) + { + auto applied = static_cast (brightnessContrastGamma (i, brightness, contrast, gamma)); + + if (channels & kpEffectBalance::Red) { + transformRed [i] = applied; + } + else { + transformRed [i] = static_cast (i); + } + + if (channels & kpEffectBalance::Green) { + transformGreen [i] = applied; + } + else { + transformGreen [i] = static_cast (i); + } + + if (channels & kpEffectBalance::Blue) { + transformBlue [i] = applied; + } + else { + transformBlue [i] = static_cast (i); + } + } + +#if DEBUG_KP_EFFECT_BALANCE + qCDebug(kpLogImagelib) << "\tbuild lookup=" << timer.restart (); +#endif + + + if (qimage.depth () > 8) + { + for (int y = 0; y < qimage.height (); y++) + { + for (int x = 0; x < qimage.width (); x++) + { + const QRgb rgb = qimage.pixel (x, y); + + const auto red = static_cast (qRed (rgb)); + const auto green = static_cast (qGreen (rgb)); + const auto blue = static_cast (qBlue (rgb)); + const auto alpha = static_cast (qAlpha (rgb)); + + qimage.setPixel (x, y, + qRgba (transformRed [red], + transformGreen [green], + transformBlue [blue], + alpha)); + } + } + } + else + { + for (int i = 0; i < qimage.colorCount (); i++) + { + const QRgb rgb = qimage.color (i); + + const auto red = static_cast (qRed (rgb)); + const auto green = static_cast (qGreen (rgb)); + const auto blue = static_cast (qBlue (rgb)); + const auto alpha = static_cast (qAlpha (rgb)); + + qimage.setColor (i, + qRgba (transformRed [red], + transformGreen [green], + transformBlue [blue], + alpha)); + } + + } + + return qimage; +} + diff --git a/imagelib/effects/kpEffectBalance.h b/imagelib/effects/kpEffectBalance.h new file mode 100644 index 0000000..d2f1911 --- /dev/null +++ b/imagelib/effects/kpEffectBalance.h @@ -0,0 +1,53 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectBalance_H +#define kpEffectBalance_H + + +#include "imagelib/kpImage.h" + + +class kpEffectBalance +{ +public: + enum Channel + { + None = 0, + Red = 1, Green = 2, Blue = 4, + RGB = Red | Green | Blue + }; + + // (, & are from -50 to 50) + static kpImage applyEffect (const kpImage &image, + int channels, + int brightness, int contrast, int gamma); +}; + + +#endif // kpEffectBalance_H diff --git a/imagelib/effects/kpEffectBlurSharpen.cpp b/imagelib/effects/kpEffectBlurSharpen.cpp new file mode 100644 index 0000000..6cabf9a --- /dev/null +++ b/imagelib/effects/kpEffectBlurSharpen.cpp @@ -0,0 +1,184 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_BLUR_SHARPEN 0 + + +#include "kpEffectBlurSharpen.h" +#include "blitz.h" + +#include "kpLogCategories.h" + +#include "pixmapfx/kpPixmapFX.h" + + +#if DEBUG_KP_EFFECT_BLUR_SHARPEN + #include +#endif + + +//--------------------------------------------------------------------- + +// +// For info on "radius" and "sigma", see https://redskiesatnight.com/2005/04/06/sharpening-using-image-magick/ +// +// Daniel Duley says: +// +// +// I don't think I can describe it any better than the article: The radius +// controls many how pixels are taken into account when determining the value +// of the center pixel. This controls the quality [and speed] of the result but not +// necessarily the strength. The sigma controls how those neighboring pixels +// are weighted depending on how far the are from the center one. This is +// closer to strength, but not exactly >:) +// +// + + +static QImage BlurQImage(const QImage &qimage, int strength) +{ + if (strength == 0) { + return qimage; + } + + // The numbers that follow were picked by experimentation to try to get + // an effect linearly proportional to and at the same time, + // be fast enough. + // + // I still have no idea what "radius" means. + + const double RadiusMin = 1; + const double RadiusMax = 10; + const double radius = RadiusMin + + (strength - 1) * + (RadiusMax - RadiusMin) / + (kpEffectBlurSharpen::MaxStrength - 1); + +#if DEBUG_KP_EFFECT_BLUR_SHARPEN + qCDebug(kpLogImagelib) << "kpEffectBlurSharpen.cpp:BlurQImage(strength=" << strength << ")" + << " radius=" << radius; +#endif + + QImage img(qimage); + return Blitz::blur(img, qRound(radius)); +} + +//--------------------------------------------------------------------- + +static QImage SharpenQImage (const QImage &qimage_, int strength) +{ + QImage qimage = qimage_; + if (strength == 0) { + return qimage; + } + + + // The numbers that follow were picked by experimentation to try to get + // an effect linearly proportional to and at the same time, + // be fast enough. + // + // I still have no idea what "radius" and "sigma" mean. + + const double RadiusMin = 0.1; + const double RadiusMax = 2.5; + const double radius = RadiusMin + + (strength - 1) * + (RadiusMax - RadiusMin) / + (kpEffectBlurSharpen::MaxStrength - 1); + + const double SigmaMin = 0.5; + const double SigmaMax = 3.0; + const double sigma = SigmaMin + + (strength - 1) * + (SigmaMax - SigmaMin) / + (kpEffectBlurSharpen::MaxStrength - 1); + + const double RepeatMin = 1; + const double RepeatMax = 2; + const double repeat = qRound (RepeatMin + + (strength - 1) * + (RepeatMax - RepeatMin) / + (kpEffectBlurSharpen::MaxStrength - 1)); + + +#if DEBUG_KP_EFFECT_BLUR_SHARPEN + qCDebug(kpLogImagelib) << "kpEffectBlurSharpen.cpp:SharpenQImage(strength=" << strength << ")" + << " radius=" << radius + << " sigma=" << sigma + << " repeat=" << repeat; +#endif + + + for (int i = 0; i < repeat; i++) + { + #if DEBUG_KP_EFFECT_BLUR_SHARPEN + QTime timer; timer.start (); + #endif + qimage = Blitz::gaussianSharpen (qimage, static_cast (radius), + static_cast (sigma)); + #if DEBUG_KP_EFFECT_BLUR_SHARPEN + qCDebug(kpLogImagelib) << "\titeration #" + QString::number (i) + << ": " + QString::number (timer.elapsed ()) << "ms"; + #endif + } + + + return qimage; +} + +//--------------------------------------------------------------------- + +// public static +kpImage kpEffectBlurSharpen::applyEffect (const kpImage &image, + Type type, int strength) +{ +#if DEBUG_KP_EFFECT_BLUR_SHARPEN + qCDebug(kpLogImagelib) << "kpEffectBlurSharpen::applyEffect(image.rect=" << image.rect () + << ",type=" << int (type) + << ",strength=" << strength + << ")"; +#endif + + Q_ASSERT (strength >= MinStrength && strength <= MaxStrength); + + if (type == Blur) { + return ::BlurQImage (image, strength); + } + + if (type == Sharpen) { + return ::SharpenQImage (image, strength); + } + + if (type == MakeConfidential) { + QImage img(image); + return Blitz::blur(img, qMin(20, img.width() / 2)); + } + + return kpImage(); +} + +//--------------------------------------------------------------------- diff --git a/imagelib/effects/kpEffectBlurSharpen.h b/imagelib/effects/kpEffectBlurSharpen.h new file mode 100644 index 0000000..a79b974 --- /dev/null +++ b/imagelib/effects/kpEffectBlurSharpen.h @@ -0,0 +1,57 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectBlurSharpen_H +#define kpEffectBlurSharpen_H + + +#include "imagelib/kpImage.h" + + +class kpEffectBlurSharpen +{ +public: + enum Type + { + None = 0, Blur, Sharpen, MakeConfidential + }; + + // Blur or Sharpen with this strength is the same as None. + // This will always be 0 - this constant will not change. + static const int MinStrength = 0; + + static const int MaxStrength = 10; + + // = strength of the effect + // (must be between MinStrength and MaxStrength inclusive) + static kpImage applyEffect (const kpImage &image, + Type type, int strength); +}; + + +#endif // kpEffectBlurSharpen_H diff --git a/imagelib/effects/kpEffectEmboss.cpp b/imagelib/effects/kpEffectEmboss.cpp new file mode 100644 index 0000000..72b62ec --- /dev/null +++ b/imagelib/effects/kpEffectEmboss.cpp @@ -0,0 +1,81 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_EMBOSS 0 + + +#include "kpEffectEmboss.h" +#include "blitz.h" + +#include "kpLogCategories.h" + +#include "pixmapfx/kpPixmapFX.h" + + +static QImage EmbossQImage (const QImage &qimage_, int strength) +{ + QImage qimage = qimage_; + if (strength == 0) { + return qimage; + } + + + // The numbers that follow were picked by experimentation to try to get + // an effect linearly proportional to and at the same time, + // be fast enough. + // + // I still have no idea what "radius" and "sigma" mean. + + const auto radius = 0.0; + + const auto sigma = 1.0; + + const auto repeat = 1; + + + for (int i = 0; i < repeat; i++) + { + qimage = Blitz::emboss (qimage, radius, sigma); + } + + + return qimage; +} + + +// public static +kpImage kpEffectEmboss::applyEffect (const kpImage &image, int strength) +{ +#if DEBUG_KP_EFFECT_EMBOSS + qCDebug(kpLogImagelib) << "kpEffectEmboss::applyEffect(strength=" << strength << ")" + << endl; +#endif + + Q_ASSERT (strength >= MinStrength && strength <= MaxStrength); + + return ::EmbossQImage (image, strength); +} diff --git a/imagelib/effects/kpEffectEmboss.h b/imagelib/effects/kpEffectEmboss.h new file mode 100644 index 0000000..6cc83ad --- /dev/null +++ b/imagelib/effects/kpEffectEmboss.h @@ -0,0 +1,52 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectEmboss_H +#define kpEffectEmboss_H + + +#include "imagelib/kpImage.h" + + +class kpEffectEmboss +{ +public: + // This will always be 0 - this constant will not change. + static const int MinStrength = 0; + + static const int MaxStrength = 10; + + // = strength of the effect + // (must be between MinStrength and MaxStrength inclusive) + // + // Currently, all non-zero strengths are the same. + static kpImage applyEffect (const kpImage &image, int strength); +}; + + +#endif // kpEffectEmboss_H diff --git a/imagelib/effects/kpEffectFlatten.cpp b/imagelib/effects/kpEffectFlatten.cpp new file mode 100644 index 0000000..e0c541b --- /dev/null +++ b/imagelib/effects/kpEffectFlatten.cpp @@ -0,0 +1,54 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "kpEffectFlatten.h" +#include "blitz.h" + +//-------------------------------------------------------------------------------- +// public static + +void kpEffectFlatten::applyEffect (QImage *destImagePtr, + const QColor &color1, const QColor &color2) +{ + if (!destImagePtr) { + return; + } + + Blitz::flatten (*destImagePtr/*ref*/, color1, color2); +} + +//-------------------------------------------------------------------------------- +// public static + +QImage kpEffectFlatten::applyEffect (const QImage &img, + const QColor &color1, const QColor &color2) +{ + QImage retImage = img; + applyEffect (&retImage, color1, color2); + return retImage; +} + +//-------------------------------------------------------------------------------- diff --git a/imagelib/effects/kpEffectFlatten.h b/imagelib/effects/kpEffectFlatten.h new file mode 100644 index 0000000..2fb0aaa --- /dev/null +++ b/imagelib/effects/kpEffectFlatten.h @@ -0,0 +1,47 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectFlatten_H +#define kpEffectFlatten_H + + +class QColor; +class QImage; + + +class kpEffectFlatten +{ +public: + static void applyEffect (QImage *destImagePtr, + const QColor &color1, const QColor &color2); + static QImage applyEffect (const QImage &img, + const QColor &color1, const QColor &color2); +}; + + +#endif // kpEffectFlatten_H diff --git a/imagelib/effects/kpEffectGrayscale.cpp b/imagelib/effects/kpEffectGrayscale.cpp new file mode 100644 index 0000000..b657fb3 --- /dev/null +++ b/imagelib/effects/kpEffectGrayscale.cpp @@ -0,0 +1,75 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_PIXMAP_FX 0 + + +#include "kpEffectGrayscale.h" + +#include "pixmapfx/kpPixmapFX.h" + + +static QRgb toGray (QRgb rgb) +{ + // naive way that doesn't preserve brightness + // int gray = (qRed (rgb) + qGreen (rgb) + qBlue (rgb)) / 3; + + // over-exaggerates red & blue + // int gray = qGray (rgb); + + int gray = (212671 * qRed (rgb) + 715160 * qGreen (rgb) + 72169 * qBlue (rgb)) / 1000000; + return qRgba (gray, gray, gray, qAlpha (rgb)); +} + + +// public static +kpImage kpEffectGrayscale::applyEffect (const kpImage &image) +{ + kpImage qimage(image); + + // TODO: Why not just write to the kpImage directly? + if (qimage.depth () > 8) + { + for (int y = 0; y < qimage.height (); y++) + { + for (int x = 0; x < qimage.width (); x++) + { + qimage.setPixel (x, y, toGray (qimage.pixel (x, y))); + } + } + } + else + { + // 1- & 8- bit images use a color table + for (int i = 0; i < qimage.colorCount (); i++) { + qimage.setColor (i, toGray (qimage.color (i))); + } + } + + return qimage; +} diff --git a/imagelib/effects/kpEffectGrayscale.h b/imagelib/effects/kpEffectGrayscale.h new file mode 100644 index 0000000..4f5b7a0 --- /dev/null +++ b/imagelib/effects/kpEffectGrayscale.h @@ -0,0 +1,47 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectGrayscale_H +#define kpEffectGrayscale_H + + +#include "imagelib/kpImage.h" + + +// +// Converts the image to grayscale. +// + +class kpEffectGrayscale +{ +public: + static kpImage applyEffect (const kpImage &image); +}; + + +#endif // kpEffectGrayscale_H diff --git a/imagelib/effects/kpEffectHSV.cpp b/imagelib/effects/kpEffectHSV.cpp new file mode 100644 index 0000000..3d8e01b --- /dev/null +++ b/imagelib/effects/kpEffectHSV.cpp @@ -0,0 +1,189 @@ + +/* + Copyright (c) 2007 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// TODO: Clarence's code review + +#include "kpEffectHSV.h" + +#include + +#include +#include + +#include "kpLogCategories.h" + +#include "pixmapfx/kpPixmapFX.h" + + +static void ColorToHSV(unsigned int c, float* pHue, float* pSaturation, float* pValue) +{ + int r = qRed(c); + int g = qGreen(c); + int b = qBlue(c); + int min{}; + if(b >= g && b >= r) + { + // Blue + min = qMin(r, g); + if(b != min) + { + *pHue = static_cast (r - g) / ((b - min) * 6) + static_cast (2) / 3; + *pSaturation = 1.0f - static_cast (min) / static_cast (b); + } + else + { + *pHue = 0; + *pSaturation = 0; + } + *pValue = static_cast (b) / 255; + } + else if(g >= r) + { + // Green + min = qMin(b, r); + if(g != min) + { + *pHue = static_cast (b - r) / ((g - min) * 6) + static_cast (1) / 3; + *pSaturation = 1.0f - static_cast (min) / static_cast (g); + } + else + { + *pHue = 0; + *pSaturation = 0; + } + *pValue = static_cast (g) / 255; + } + else + { + // Red + min = qMin(g, b); + if(r != min) + { + *pHue = static_cast (g - b) / ((r - min) * 6); + if(*pHue < 0) { + (*pHue) += 1.0f; + } + *pSaturation = 1.0f - static_cast (min) / static_cast (r); + } + else + { + *pHue = 0; + *pSaturation = 0; + } + *pValue = static_cast (r) / 255; + } +} + +static unsigned int HSVToColor(int alpha, float hue, float saturation, float value) +{ + hue *= 5.999999f; + int h = static_cast (hue); + float f = hue - h; + float p = value * (1.0 - saturation); + float q = value * (1.0 - ((h & 1) == 0 ? 1.0 - f : f) * saturation); + switch(h) + { + case 0: return qRgba(static_cast (value * 255.999999), + static_cast (q * 255.999999), + static_cast (p * 255.999999), alpha); + + case 1: return qRgba(static_cast (q * 255.999999), + static_cast (value * 255.999999), + static_cast (p * 255.999999), alpha); + + case 2: return qRgba(static_cast (p * 255.999999), + static_cast (value * 255.999999), + static_cast (q * 255.999999), alpha); + + case 3: return qRgba(static_cast (p * 255.999999), + static_cast (q * 255.999999), + static_cast (value * 255.999999), alpha); + + case 4: return qRgba(static_cast (q * 255.999999), + static_cast (p * 255.999999), + static_cast (value * 255.999999), alpha); + + case 5: return qRgba(static_cast (value * 255.999999), + static_cast (p * 255.999999), + static_cast (q * 255.999999), alpha); + } + return qRgba(0, 0, 0, alpha); +} + +static QRgb AdjustHSVInternal (QRgb pix, double hueDiv360, double saturation, double value) +{ + float h, s, v; + ::ColorToHSV(pix, &h, &s, &v); + + const int alpha = qAlpha(pix); + + h += static_cast (hueDiv360); + h -= std::floor(h); + + s = qMax(0.0f, qMin(static_cast(1), s + static_cast (saturation))); + + v = qMax(0.0f, qMin(static_cast(1), v + static_cast (value))); + + return ::HSVToColor(alpha, h, s, v); +} + +static void AdjustHSV (QImage* pImage, double hue, double saturation, double value) +{ + hue /= 360; + + if (pImage->depth () > 8) + { + for (int y = 0; y < pImage->height (); y++) + { + for (int x = 0; x < pImage->width (); x++) + { + QRgb pix = pImage->pixel (x, y); + pix = ::AdjustHSVInternal (pix, hue, saturation, value); + pImage->setPixel (x, y, pix); + } + } + } + else + { + for (int i = 0; i < pImage->colorCount (); i++) + { + QRgb pix = pImage->color (i); + pix = ::AdjustHSVInternal (pix, hue, saturation, value); + pImage->setColor (i, pix); + } + } +} + +// public static +kpImage kpEffectHSV::applyEffect (const kpImage &image, + double hue, double saturation, double value) +{ + QImage qimage(image); + ::AdjustHSV (&qimage, hue, saturation, value); + return qimage; +} + diff --git a/imagelib/effects/kpEffectHSV.h b/imagelib/effects/kpEffectHSV.h new file mode 100644 index 0000000..26ceb8a --- /dev/null +++ b/imagelib/effects/kpEffectHSV.h @@ -0,0 +1,44 @@ + +/* + Copyright (c) 2007 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectHSV_H +#define kpEffectHSV_H + + +#include "imagelib/kpImage.h" + + +class kpEffectHSV +{ +public: + static kpImage applyEffect (const kpImage &image, + double hue, double saturation, double value); +}; + + +#endif // kpEffectHSV_H diff --git a/imagelib/effects/kpEffectInvert.cpp b/imagelib/effects/kpEffectInvert.cpp new file mode 100644 index 0000000..db305b4 --- /dev/null +++ b/imagelib/effects/kpEffectInvert.cpp @@ -0,0 +1,89 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_INVERT 0 + + +#include "kpEffectInvert.h" + +#include + +#include "kpLogCategories.h" + +#include "pixmapfx/kpPixmapFX.h" + + +// public static +void kpEffectInvert::applyEffect (QImage *destImagePtr, int channels) +{ + if (channels == kpEffectInvert::RGB) + { + destImagePtr->invertPixels (); + return; + } + + QRgb mask = qRgba ((channels & Red) ? 0xFF : 0, + (channels & Green) ? 0xFF : 0, + (channels & Blue) ? 0xFF : 0, + 0/*don't invert alpha*/); +#if DEBUG_KP_EFFECT_INVERT + qCDebug(kpLogImagelib) << "kpEffectInvert::applyEffect(channels=" << channels + << ") mask=" << (int *) mask; +#endif + + if (destImagePtr->depth () > 8) + { + // Above version works for Qt 3.2 at least. + // But this version will always work (slower, though) and supports + // inverting particular channels. + for (int y = 0; y < destImagePtr->height (); y++) + { + for (int x = 0; x < destImagePtr->width (); x++) + { + destImagePtr->setPixel (x, y, destImagePtr->pixel (x, y) ^ mask); + } + } + } + else + { + for (int i = 0; i < destImagePtr->colorCount (); i++) + { + destImagePtr->setColor (i, destImagePtr->color (i) ^ mask); + } + } +} + +// public static +QImage kpEffectInvert::applyEffect (const QImage &img, int channels) +{ + QImage retImage = img; + applyEffect (&retImage, channels); + return retImage; +} + + diff --git a/imagelib/effects/kpEffectInvert.h b/imagelib/effects/kpEffectInvert.h new file mode 100644 index 0000000..6088843 --- /dev/null +++ b/imagelib/effects/kpEffectInvert.h @@ -0,0 +1,62 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectInvert_H +#define kpEffectInvert_H + + +class QImage; + + +class kpEffectInvert +{ +public: + enum Channel + { + None = 0, + Red = 1, Green = 2, Blue = 4, + RGB = Red | Green | Blue + }; + + // + // Inverts the colours of each pixel in the given image. + // These functions differ from QImage::invertPixels() in the following ways: + // + // 1. for 8-bit images, it inverts the colours of the Colour Table + // (this means that you would get visually similar results to inversion + // at higher bit depths - rather than a "random-looking" inversion + // depending on the contents of the Colour Table) + // 2. never inverts the Alpha Buffer + // + + static void applyEffect (QImage *destImagePtr, int channels = RGB); + static QImage applyEffect (const QImage &img, int channels = RGB); +}; + + +#endif // kpEffectInvert_H diff --git a/imagelib/effects/kpEffectReduceColors.cpp b/imagelib/effects/kpEffectReduceColors.cpp new file mode 100644 index 0000000..40ce0db --- /dev/null +++ b/imagelib/effects/kpEffectReduceColors.cpp @@ -0,0 +1,240 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_REDUCE_COLORS 0 + + +#include "imagelib/effects/kpEffectReduceColors.h" + +#include "kpLogCategories.h" + +//--------------------------------------------------------------------- + +static QImage::Format DepthToFormat (int depth) +{ + // These values are QImage's supported depths. + switch (depth) + { + case 1: + // (can be MSB instead, I suppose) + return QImage::Format_MonoLSB; + + case 8: + return QImage::Format_Indexed8; + + case 16: + return QImage::Format_ARGB4444_Premultiplied; + + case 24: + return QImage::Format_ARGB6666_Premultiplied; + + case 32: + return QImage::Format_ARGB32_Premultiplied; + + default: + Q_ASSERT (!"unknown depth"); + return QImage::Format_Invalid; + } +} + +//--------------------------------------------------------------------- + +// public static +QImage kpEffectReduceColors::convertImageDepth (const QImage &image, int depth, bool dither) +{ +#if DEBUG_KP_EFFECT_REDUCE_COLORS + qCDebug(kpLogImagelib) << "kpeffectreducecolors.cpp:ConvertImageDepth() changing image (w=" << image.width () + << ",h=" << image.height () + << ") depth from " << image.depth () + << " to " << depth + << " (dither=" << dither << ")" + << endl; +#endif + + if (image.isNull ()) { + return image; + } + + if (depth == image.depth ()) { + return image; + } + + +#if DEBUG_KP_EFFECT_REDUCE_COLORS && 0 + for (int y = 0; y < image.height (); y++) + { + for (int x = 0; x < image.width (); x++) + { + fprintf (stderr, " %08X", image.pixel (x, y)); + } + fprintf (stderr, "\n"); + } +#endif + + + // Hack around Qt's braindead QImage::convertToFormat(QImage::Format_MonoLSB, ...) + // (with dithering off) which produces pathetic results with an image that + // only has 2 colors - sometimes it just gives a completely black + // result (try yellow and white as input). Instead, we simply preserve + // the 2 colours. + // + // One use case is resaving a "color monochrome" image (<= 2 colors but + // not necessarily black & white). + if (depth == 1 && !dither) + { + #if DEBUG_KP_EFFECT_REDUCE_COLORS + qCDebug(kpLogImagelib) << "\tinvoking convert-to-depth 1 hack"; + #endif + QRgb color0 = 0, color1 = 0; + bool color0Valid = false, color1Valid = false; + + bool moreThan2Colors = false; + + QImage monoImage (image.width (), image.height (), QImage::Format_MonoLSB); + monoImage.setColorCount (2); + #if DEBUG_KP_EFFECT_REDUCE_COLORS + qCDebug(kpLogImagelib) << "\t\tinitialising output image w=" << monoImage.width () + << ",h=" << monoImage.height () + << ",d=" << monoImage.depth (); + #endif + for (int y = 0; y < image.height (); y++) + { + for (int x = 0; x < image.width (); x++) + { + // (this can be transparent) + QRgb imagePixel = image.pixel (x, y); + + if (color0Valid && imagePixel == color0) { + monoImage.setPixel (x, y, 0); + } + else if (color1Valid && imagePixel == color1) { + monoImage.setPixel (x, y, 1); + } + else if (!color0Valid) { + color0 = imagePixel; + color0Valid = true; + monoImage.setPixel (x, y, 0); + #if DEBUG_KP_EFFECT_REDUCE_COLORS + qCDebug(kpLogImagelib) << "\t\t\tcolor0=" << (int *) color0 + << " at x=" << x << ",y=" << y; + #endif + } + else if (!color1Valid) + { + color1 = imagePixel; + color1Valid = true; + monoImage.setPixel (x, y, 1); + #if DEBUG_KP_EFFECT_REDUCE_COLORS + qCDebug(kpLogImagelib) << "\t\t\tcolor1=" << (int *) color1 + << " at x=" << x << ",y=" << y; + #endif + } + else + { + #if DEBUG_KP_EFFECT_REDUCE_COLORS + qCDebug(kpLogImagelib) << "\t\t\timagePixel=" << (int *) imagePixel + << " at x=" << x << ",y=" << y + << " moreThan2Colors - abort hack"; + #endif + moreThan2Colors = true; + + // Dijkstra, this is clearer than double break'ing or + // a check in both loops + goto exit_loop; + } + } + } + exit_loop: + + if (!moreThan2Colors) + { + monoImage.setColor (0, color0Valid ? color0 : 0xFFFFFF); + monoImage.setColor (1, color1Valid ? color1 : 0x000000); + return monoImage; + } + } + + QImage retImage = image.convertToFormat (::DepthToFormat (depth), + Qt::AutoColor | + (dither ? Qt::DiffuseDither : Qt::ThresholdDither) | + Qt::ThresholdAlphaDither | + (dither ? Qt::PreferDither : Qt::AvoidDither)); +#if DEBUG_KP_EFFECT_REDUCE_COLORS + qCDebug(kpLogImagelib) << "\tformat: before=" << image.format () + << "after=" << retImage.format (); +#endif + +#if DEBUG_KP_EFFECT_REDUCE_COLORS && 0 + qCDebug(kpLogImagelib) << "After colour reduction:"; + for (int y = 0; y < image.height (); y++) + { + for (int x = 0; x < image.width (); x++) + { + fprintf (stderr, " %08X", image.pixel (x, y)); + } + fprintf (stderr, "\n"); + } +#endif + + return retImage; +} + +//--------------------------------------------------------------------- + +// public static +void kpEffectReduceColors::applyEffect (QImage *destPtr, int depth, bool dither) +{ + if (!destPtr) { + return; + } + + // You can't "reduce" to 32-bit since it's the highest depth. + if (depth != 1 && depth != 8) { + return; + } + + *destPtr = convertImageDepth(*destPtr, depth, dither); + + // internally we always use QImage::Format_ARGB32_Premultiplied and + // this effect is just an "effect" in that it changes the image (the look) somehow + // When one wants a different depth on the file, then he needs to save the image + // in that depth + *destPtr = destPtr->convertToFormat(QImage::Format_ARGB32_Premultiplied); +} + +//--------------------------------------------------------------------- + +QImage kpEffectReduceColors::applyEffect (const QImage &pm, int depth, bool dither) +{ + QImage ret = pm; + applyEffect (&ret, depth, dither); + return ret; +} + +//--------------------------------------------------------------------- diff --git a/imagelib/effects/kpEffectReduceColors.h b/imagelib/effects/kpEffectReduceColors.h new file mode 100644 index 0000000..b137a11 --- /dev/null +++ b/imagelib/effects/kpEffectReduceColors.h @@ -0,0 +1,51 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectReduceColors_H +#define kpEffectReduceColors_H + +#include + +// The specified must be supported by QImage. +class kpEffectReduceColors +{ +public: + // TODO: Why isn't applyEffect() for the public API sufficient? + // Ans: See TODO in kpDocument_Save.cpp. Maybe we should rename + // this method? + // + // Also, this can increase the image depth while applyEffect() + // will not. + static QImage convertImageDepth (const QImage &image, int depth, bool dither); + + static void applyEffect (QImage *destPixmapPtr, int depth, bool dither); + static QImage applyEffect (const QImage &pm, int depth, bool dither); +}; + + +#endif // kpEffectReduceColors_H diff --git a/imagelib/effects/kpEffectToneEnhance.cpp b/imagelib/effects/kpEffectToneEnhance.cpp new file mode 100644 index 0000000..1368020 --- /dev/null +++ b/imagelib/effects/kpEffectToneEnhance.cpp @@ -0,0 +1,308 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2006 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +// TODO: Clarence's code review + +#include "kpEffectToneEnhance.h" + +#include + +#include "kpLogCategories.h" + +#include "pixmapfx/kpPixmapFX.h" + + +#define RED_WEIGHT 77 +#define GREEN_WEIGHT 150 +#define BLUE_WEIGHT 29 + +#define MAX_TONE_VALUE ((RED_WEIGHT + GREEN_WEIGHT + BLUE_WEIGHT) * 255) +#define TONE_DROP_BITS 5 +#define TONE_MAP_SIZE ((MAX_TONE_VALUE >> TONE_DROP_BITS) + 1) +#define MAX_GRANULARITY 25 +#define MIN_IMAGE_DIM 3 + +//--------------------------------------------------------------------- + +inline unsigned int ComputeTone(unsigned int color) +{ + return RED_WEIGHT * static_cast (qRed(color)) + + GREEN_WEIGHT * static_cast (qGreen(color)) + + BLUE_WEIGHT * static_cast (qBlue(color)); +} + +//--------------------------------------------------------------------- + +inline unsigned int AdjustTone(unsigned int color, unsigned int oldTone, unsigned int newTone, double amount) +{ + return qRgba( + qMax(0, qMin(255, static_cast (amount * qRed(color) * newTone / oldTone + (1.0 - amount) * qRed(color)))), + qMax(0, qMin(255, static_cast (amount * qGreen(color) * newTone / oldTone + (1.0 - amount) * qGreen(color)))), + qMax(0, qMin(255, static_cast (amount * qBlue(color) * newTone / oldTone + (1.0 - amount) * qBlue(color)))), + qAlpha(color) + ); +} + +//--------------------------------------------------------------------- + +class kpEffectToneEnhanceApplier +{ + public: + kpEffectToneEnhanceApplier (); + ~kpEffectToneEnhanceApplier (); + + void BalanceImageTone(QImage* pImage, double granularity, double amount); + + protected: + int m_nToneMapGranularity, m_areaWid, m_areaHgt; + unsigned int m_nComputedWid, m_nComputedHgt; + // LOTODO: Use less error-prone QTL containers instead. + unsigned int* m_pHistogram; + unsigned int** m_pToneMaps; + + void DeleteToneMaps(); + unsigned int* MakeToneMap(QImage* pImage, int x, int y, int nGranularity); + void ComputeToneMaps(QImage* pImage, int nGranularity); + unsigned int InterpolateNewTone(QImage* pImage, unsigned int oldTone, int x, int y, int nGranularity); +}; + +//--------------------------------------------------------------------- + +kpEffectToneEnhanceApplier::kpEffectToneEnhanceApplier () +{ + m_nToneMapGranularity = 0; + m_areaWid = 0; + m_areaHgt = 0; + m_nComputedWid = 0; + m_nComputedHgt = 0; + m_pHistogram = new unsigned int[TONE_MAP_SIZE]; + m_pToneMaps = nullptr; +} + +//--------------------------------------------------------------------- + +kpEffectToneEnhanceApplier::~kpEffectToneEnhanceApplier () +{ + DeleteToneMaps(); + delete[] m_pHistogram; +} + +//--------------------------------------------------------------------- + +// protected +void kpEffectToneEnhanceApplier::DeleteToneMaps() +{ + int nToneMaps = m_nToneMapGranularity * m_nToneMapGranularity; + for(int i = 0; i < nToneMaps; i++) { + delete[] m_pToneMaps[i]; + } + delete[] m_pToneMaps; + m_pToneMaps = nullptr; + m_nToneMapGranularity = 0; +} + +//--------------------------------------------------------------------- + +// protected +unsigned int* kpEffectToneEnhanceApplier::MakeToneMap(QImage* pImage, int u, int v, int nGranularity) +{ + // Compute the region to make the tone map for + int xx, yy; + if(nGranularity > 1) + { + xx = u * (pImage->width() - 1) / (nGranularity - 1) - m_areaWid / 2; + if(xx < 0) { + xx = 0; + } + else if(xx + m_areaWid > pImage->width()) { + xx = pImage->width() - m_areaWid; + } + + yy = v * (pImage->width() - 1) / (nGranularity - 1) - m_areaHgt / 2; + + if(yy < 0) { + yy = 0; + } + else if(yy + m_areaHgt > pImage->height()) { + yy = pImage->height() - m_areaHgt; + } + } + else + { + xx = 0; + yy = 0; + } + + // Make a tone histogram for the region + memset(m_pHistogram, '\0', sizeof(unsigned int) * TONE_MAP_SIZE); + int x, y; + unsigned int tone; + for(y = 0; y < m_areaHgt; y++) + { + for(x = 0; x < m_areaWid; x++) + { + tone = ComputeTone(pImage->pixel(xx + x, yy + y)); + m_pHistogram[tone >> TONE_DROP_BITS]++; + } + } + + // Forward sum the tone histogram + int i{}; + for(i = 1; i < TONE_MAP_SIZE; i++) { + m_pHistogram[i] += m_pHistogram[i - 1]; + } + + // Compute the forward contribution to the tone map + auto total = m_pHistogram[i - 1]; + auto *pToneMap = new unsigned int[TONE_MAP_SIZE]; + for(i = 0; i < TONE_MAP_SIZE; i++) { + pToneMap[i] = static_cast (static_cast (m_pHistogram[i] * MAX_TONE_VALUE / total)); + } +/* + // Undo the forward sum and reverse sum the tone histogram + m_pHistogram[TONE_MAP_SIZE - 1] -= m_pHistogram[TONE_MAP_SIZE - 2]; + for(i = TONE_MAP_SIZE - 2; i > 0; i--) + { + m_pHistogram[i] -= m_pHistogram[i - 1]; + m_pHistogram[i] += m_pHistogram[i + 1]; + } + m_pHistogram[0] += m_pHistogram[1]; +*/ + return pToneMap; +} + +//--------------------------------------------------------------------- + +// protected +void kpEffectToneEnhanceApplier::ComputeToneMaps(QImage* pImage, int nGranularity) +{ + if(nGranularity == m_nToneMapGranularity && pImage->width() == + static_cast (m_nComputedWid) && pImage->height() == static_cast (m_nComputedHgt)) + { + return; // We've already computed tone maps for this granularity + } + DeleteToneMaps(); + m_pToneMaps = new unsigned int*[nGranularity * nGranularity]; + m_nToneMapGranularity = nGranularity; + m_nComputedWid = static_cast (pImage->width()); + m_nComputedHgt = static_cast (pImage->height()); + int u, v; + for(v = 0; v < nGranularity; v++) + { + for(u = 0; u < nGranularity; u++) { + m_pToneMaps[nGranularity * v + u] = MakeToneMap(pImage, u, v, nGranularity); + } + } +} + +//--------------------------------------------------------------------- + +// protected +unsigned int kpEffectToneEnhanceApplier::InterpolateNewTone(QImage* pImage, unsigned int oldTone, int x, int y, int nGranularity) +{ + oldTone = (oldTone >> TONE_DROP_BITS); + if(m_nToneMapGranularity <= 1) { + return m_pToneMaps[0][oldTone]; + } + auto u = x * (nGranularity - 1) / pImage->width(); + auto v = y * (nGranularity - 1) / pImage->height(); + auto x1y1 = m_pToneMaps[m_nToneMapGranularity * v + u][oldTone]; + auto x2y1 = m_pToneMaps[m_nToneMapGranularity * v + u + 1][oldTone]; + auto x1y2 = m_pToneMaps[m_nToneMapGranularity * (v + 1) + u][oldTone]; + auto x2y2 = m_pToneMaps[m_nToneMapGranularity * (v + 1) + u + 1][oldTone]; + auto hFac = x - (u * (pImage->width() - 1) / (nGranularity - 1)); + if(hFac > m_areaWid) { + hFac = m_areaWid; + } + unsigned int y1 = (x1y1 * (static_cast (m_areaWid) - static_cast (hFac)) + + x2y1 * static_cast (hFac)) / static_cast (m_areaWid); + + unsigned int y2 = (x1y2 * (static_cast (m_areaWid) - static_cast (hFac)) + + x2y2 * static_cast (hFac)) / static_cast (m_areaWid); + + int vFac = y - (v * (pImage->height() - 1) / (nGranularity - 1)); + if(vFac > m_areaHgt) { + vFac = m_areaHgt; + } + return (y1 * (static_cast (m_areaHgt) - static_cast (vFac)) + + y2 * static_cast (vFac)) / static_cast (m_areaHgt); +} + +//--------------------------------------------------------------------- + +// public +void kpEffectToneEnhanceApplier::BalanceImageTone(QImage* pImage, double granularity, double amount) +{ + if(pImage->width() < MIN_IMAGE_DIM || pImage->height() < MIN_IMAGE_DIM) { + return; // the image is not big enough to perform this operation + } + int nGranularity = static_cast (granularity * (MAX_GRANULARITY - 2)) + 1; + m_areaWid = pImage->width() / nGranularity; + if(m_areaWid < MIN_IMAGE_DIM) { + m_areaWid = MIN_IMAGE_DIM; + } + m_areaHgt = pImage->height() / nGranularity; + if(m_areaHgt < MIN_IMAGE_DIM) { + m_areaHgt = MIN_IMAGE_DIM; + } + ComputeToneMaps(pImage, nGranularity); + int x, y; + unsigned int oldTone, newTone, col; + for(y = 0; y < pImage->height(); y++) + { + for(x = 0; x < pImage->width(); x++) + { + col = pImage->pixel(x, y); + oldTone = ComputeTone(col); + newTone = InterpolateNewTone(pImage, oldTone, x, y, nGranularity); + pImage->setPixel(x, y, AdjustTone(col, oldTone, newTone, amount)); + } + } +} + +//--------------------------------------------------------------------- + +// public static +kpImage kpEffectToneEnhance::applyEffect (const kpImage &image, + double granularity, double amount) +{ + if (amount == 0.0) { + return image; + } + + QImage qimage(image); + + // OPT: Cache the calculated values? + kpEffectToneEnhanceApplier applier; + applier.BalanceImageTone (&qimage, granularity, amount); + + return qimage; +} + +//--------------------------------------------------------------------- diff --git a/imagelib/effects/kpEffectToneEnhance.h b/imagelib/effects/kpEffectToneEnhance.h new file mode 100644 index 0000000..a2503f1 --- /dev/null +++ b/imagelib/effects/kpEffectToneEnhance.h @@ -0,0 +1,61 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2006 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectToneEnhance_H +#define kpEffectToneEnhance_H + + +#include "imagelib/kpImage.h" + + +// +// Histogram Equalizer effect. +// +// It just divides out the color histogram from the pixel values. (So if +// you plot the color histogram after equalizing, you should get a nearly +// flat/uniform distribution.) +// +// The two sliders adjust: +// +// 1. The extent to which it equalizes +// 2. The local-ness of the equalization. (In other words, it computes just +// the histogram of the regions near the pixel it is adjusting.) +// +// ASSUMPTION: The given is not paletted (currently, this is the +// same as the screen mode not being paletted). +// +class kpEffectToneEnhance +{ +public: + static kpImage applyEffect (const kpImage &image, + double granularity, double amount); +}; + + +#endif // kpEffectToneEnhance_H diff --git a/imagelib/kpColor.cpp b/imagelib/kpColor.cpp new file mode 100644 index 0000000..12b2f3b --- /dev/null +++ b/imagelib/kpColor.cpp @@ -0,0 +1,317 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR 0 + + +#include "kpColor.h" + +#include + +#include "kpLogCategories.h" + +//--------------------------------------------------------------------- + +kpColor::kpColor() + : m_rgbaIsValid(false), + m_rgba(0), + m_colorCacheIsValid(false) +{ +} + +//--------------------------------------------------------------------- + +kpColor::kpColor (int red, int green, int blue, bool isTransparent) + : m_rgba(0), m_colorCacheIsValid(false) +{ +#if DEBUG_KP_COLOR + qCDebug(kpLogImagelib) << "kpColor::(r=" << red << ",g=" << green << ",b=" << blue + << ",isTrans=" << isTransparent << ")"; +#endif + if (red < 0 || red > 255 || + green < 0 || green > 255 || + blue < 0 || blue > 255) + { + qCCritical(kpLogImagelib) << "kpColor::(r=" << red + << ",g=" << green + << ",b=" << blue + << ",t=" << isTransparent + << ") passed out of range values"; + m_rgbaIsValid = false; + return; + } + + m_rgba = qRgba (red, green, blue, isTransparent ? 0 : 255/*opaque*/); + m_rgbaIsValid = true; +} + +//--------------------------------------------------------------------- + +kpColor::kpColor (const QRgb &rgba) + : m_colorCacheIsValid (false) +{ +#if DEBUG_KP_COLOR + qCDebug(kpLogImagelib) << "kpColor::(rgba=" << (int *) rgba << ")"; +#endif + m_rgba = rgba; + m_rgbaIsValid = true; +} + +//--------------------------------------------------------------------- + +kpColor::kpColor (const kpColor &rhs) + : m_rgbaIsValid (rhs.m_rgbaIsValid), + m_rgba (rhs.m_rgba), + m_colorCacheIsValid (rhs.m_colorCacheIsValid), + m_colorCache (rhs.m_colorCache) +{ +#if DEBUG_KP_COLOR + qCDebug(kpLogImagelib) << "kpColor::()"; +#endif +} + +//--------------------------------------------------------------------- + +// friend +QDataStream &operator<< (QDataStream &stream, const kpColor &color) +{ + stream << int (color.m_rgbaIsValid) << int (color.m_rgba); + + return stream; +} + +//--------------------------------------------------------------------- + +// friend +QDataStream &operator>> (QDataStream &stream, kpColor &color) +{ + int a, b; + stream >> a >> b; + color.m_rgbaIsValid = a; + color.m_rgba = static_cast (b); + + color.m_colorCacheIsValid = false; + + return stream; +} + +//--------------------------------------------------------------------- + +kpColor &kpColor::operator= (const kpColor &rhs) +{ + // (as soon as you add a ptr, you won't be complaining to me that this + // method was unnecessary :)) + + if (this == &rhs) { + return *this; + } + + m_rgbaIsValid = rhs.m_rgbaIsValid; + m_rgba = rhs.m_rgba; + m_colorCacheIsValid = rhs.m_colorCacheIsValid; + m_colorCache = rhs.m_colorCache; + + return *this; +} + +bool kpColor::operator== (const kpColor &rhs) const +{ + return isSimilarTo (rhs, kpColor::Exact); +} + +bool kpColor::operator!= (const kpColor &rhs) const +{ + return !(*this == rhs); +} + +//--------------------------------------------------------------------- + + +template +inline dtype square (dtype val) +{ + return val * val; +} + +//--------------------------------------------------------------------- + +// public static +int kpColor::processSimilarity (double colorSimilarity) +{ + // sqrt (dr ^ 2 + dg ^ 2 + db ^ 2) <= colorSimilarity * sqrt (255 ^ 2 * 3) + // dr ^ 2 + dg ^ 2 + db ^ 2 <= (colorSimilarity ^ 2) * (255 ^ 2 * 3) + + return int (square (colorSimilarity) * (square (255) * 3)); +} + +//--------------------------------------------------------------------- + +bool kpColor::isSimilarTo (const kpColor &rhs, int processedSimilarity) const +{ + // Are we the same? + if (this == &rhs) { + return true; + } + + + // Do we dither in terms of validity? + if (isValid () != rhs.isValid ()) { + return false; + } + + // Are both of us invalid? + if (!isValid ()) { + return true; + } + + // --- both are now valid --- + + if (m_rgba == rhs.m_rgba) { + return true; + } + + if (processedSimilarity == kpColor::Exact) { + return false; + } + + + return (square (qRed (m_rgba) - qRed (rhs.m_rgba)) + + square (qGreen (m_rgba) - qGreen (rhs.m_rgba)) + + square (qBlue (m_rgba) - qBlue (rhs.m_rgba)) + <= processedSimilarity); + +} + +//--------------------------------------------------------------------- + +// public +bool kpColor::isValid () const +{ + return m_rgbaIsValid; +} + +//--------------------------------------------------------------------- + +// public +int kpColor::red () const +{ + if (!m_rgbaIsValid) + { + qCCritical(kpLogImagelib) << "kpColor::red() called with invalid kpColor"; + return 0; + } + + return qRed (m_rgba); +} + +//--------------------------------------------------------------------- + +// public +int kpColor::green () const +{ + if (!m_rgbaIsValid) + { + qCCritical(kpLogImagelib) << "kpColor::green() called with invalid kpColor"; + return 0; + } + + return qGreen (m_rgba); +} + +//--------------------------------------------------------------------- + +// public +int kpColor::blue () const +{ + if (!m_rgbaIsValid) + { + qCCritical(kpLogImagelib) << "kpColor::blue() called with invalid kpColor"; + return 0; + } + + return qBlue (m_rgba); +} + +//--------------------------------------------------------------------- + +// public +int kpColor::alpha () const +{ + if (!m_rgbaIsValid) + { + qCCritical(kpLogImagelib) << "kpColor::alpha() called with invalid kpColor"; + return 0; + } + + return qAlpha (m_rgba); +} + +//--------------------------------------------------------------------- + +// public +bool kpColor::isTransparent () const +{ + return (alpha () == 0); +} + +//--------------------------------------------------------------------- + +// public +QRgb kpColor::toQRgb () const +{ + if (!m_rgbaIsValid) + { + qCCritical(kpLogImagelib) << "kpColor::toQRgb() called with invalid kpColor"; + return 0; + } + + return m_rgba; +} + +//--------------------------------------------------------------------- + +// public +QColor kpColor::toQColor () const +{ + if (!m_rgbaIsValid) + { + qCCritical(kpLogImagelib) << "kpColor::toQColor() called with invalid kpColor"; + return Qt::black; + } + + if (m_colorCacheIsValid) { + return m_colorCache; + } + + m_colorCache = QColor(qRed(m_rgba), qGreen(m_rgba), qBlue(m_rgba), qAlpha(m_rgba)); + m_colorCacheIsValid = true; + + return m_colorCache; +} + +//--------------------------------------------------------------------- diff --git a/imagelib/kpColor.h b/imagelib/kpColor.h new file mode 100644 index 0000000..2a100a6 --- /dev/null +++ b/imagelib/kpColor.h @@ -0,0 +1,156 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_COLOR_H +#define KP_COLOR_H + + +#include + + +class QDataStream; + + +// +// kpColor is an object-oriented abstraction of QRgb, for document image data. +// In the future, other color models such as +// 8-bit indexed will be supported. It also provides better error handling, +// reporting (noisy qCCritical(kpLogImagelib)'s) and recovery compared to Qt. This abstraction +// will allow us to eventually dump the Qt paint routines. +// +// In general, you should pass around kpColor objects instead of QRgb +// and QColor. Only convert an opaque kpColor to a QColor (using toQColor()) +// if you need to draw something on-screen. +// +// Constructing a kpColor object from QColor is usually wrong since QColor's +// come from on-screen pixels, which may lack the full color resolution of +// kpColor, due to the limited color range on e.g. a 16-bit screen. +// +class kpColor +{ +public: + kpColor (); + kpColor (int red, int green, int blue, bool isTransparent = false); + kpColor (const QRgb &rgba); + kpColor (const kpColor &rhs); + friend QDataStream &operator<< (QDataStream &stream, const kpColor &color); + friend QDataStream &operator>> (QDataStream &stream, kpColor &color); + kpColor &operator= (const kpColor &rhs); + bool operator== (const kpColor &rhs) const; + bool operator!= (const kpColor &rhs) const; + + +// +// Constants +// +public: + // "lhs.isSimilarTo (rhs, kpColor::Exact)" is exactly the same as calling + // "lhs == rhs". + static const int Exact; + + static const kpColor Invalid; + static const kpColor Transparent; + + + // + // Primary Colors + B&W + // + + static const kpColor Red, Green, Blue; + static const kpColor Black, White; + + + // + // Full-brightness Colors + // + + static const kpColor Yellow, Purple, Aqua; + + + // + // Mixed Colors + // + + static const kpColor Gray, LightGray, Orange; + + + // + // Pastel Colors + // + + static const kpColor Pink, LightGreen, LightBlue, Tan; + + + // + // Dark Colors + // + + static const kpColor DarkRed; + + // (identical) + static const kpColor DarkOrange, Brown; + + static const kpColor DarkYellow, DarkGreen, DarkAqua, DarkBlue, + DarkPurple, DarkGray; + + +public: + static int processSimilarity (double colorSimilarity); + // Usage: isSimilarTo (rhs, kpColor::processSimilarity (.1)) checks for + // Color Similarity within 10% + bool isSimilarTo (const kpColor &rhs, int processedSimilarity) const; + + bool isValid () const; + + int red () const; + int green () const; + int blue () const; + int alpha () const; + bool isTransparent () const; + + // Cast operators will most likely result in careless conversions so + // use explicit functions instead: + QRgb toQRgb () const; + + QColor toQColor () const; + +private: + // Catch accidental call to "const QRgb &rgba" (unsigned int) ctor + // by e.g. "kpColor(Qt::black)" (Qt::black is an enum element that can cast + // to "unsigned int"). + kpColor (Qt::GlobalColor color); + + bool m_rgbaIsValid; + QRgb m_rgba; + + mutable bool m_colorCacheIsValid; + mutable QColor m_colorCache; +}; + + +#endif // KP_COLOR_H diff --git a/imagelib/kpColor_Constants.cpp b/imagelib/kpColor_Constants.cpp new file mode 100644 index 0000000..b029228 --- /dev/null +++ b/imagelib/kpColor_Constants.cpp @@ -0,0 +1,117 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR 0 + + +#include "kpColor.h" + + +static inline int RoundUp2 (int val) +{ + return val % 2 ? val + 1 : val; +} + +static inline int Bound0_255 (int val) +{ + return qBound (0, val, 255); +} + + +enum +{ + BlendDark = 25, + BlendNormal = 50, + BlendLight = 75, + BlendAdd = 100 +}; + +// Adds the 2 given colors together and then multiplies by the given . +static inline kpColor Blend (const kpColor &a, const kpColor &b, + int percent = ::BlendNormal) +{ + return kpColor (::Bound0_255 (::RoundUp2 (a.red () + b.red ()) * percent / 100), + ::Bound0_255 (::RoundUp2 (a.green () + b.green ()) * percent / 100), + ::Bound0_255 (::RoundUp2 (a.blue () + b.blue ()) * percent / 100)); +} + +static inline kpColor Add (const kpColor &a, const kpColor &b) +{ + return ::Blend (a, b, ::BlendAdd); +} + + +// (intentionally _not_ an HSV darkener) +static inline kpColor Dark (const kpColor &color) +{ + return ::Blend (color, kpColor::Black); +} + + +// public static +const int kpColor::Exact = 0; + +// public static +const kpColor kpColor::Invalid; // LOTODO: what's wrong with explicitly specifying () constructor? +const kpColor kpColor::Transparent (0, 0, 0, true/*isTransparent*/); + + +// +// Make our own colors in case weird ones like "Qt::cyan" +// (turquoise) get changed by Qt. +// + + +const kpColor kpColor::Red (255, 0, 0); +const kpColor kpColor::Green (0, 255, 0); +const kpColor kpColor::Blue (0, 0, 255); +const kpColor kpColor::Black (0, 0, 0); +const kpColor kpColor::White (255, 255, 255); + +const kpColor kpColor::Yellow = ::Add (kpColor::Red, kpColor::Green); +const kpColor kpColor::Purple = ::Add (kpColor::Red, kpColor::Blue); +const kpColor kpColor::Aqua = ::Add (kpColor::Green, kpColor::Blue); + +const kpColor kpColor::Gray = ::Blend (kpColor::Black, kpColor::White); +const kpColor kpColor::LightGray = ::Blend (kpColor::Gray, kpColor::White); +const kpColor kpColor::Orange = ::Blend (kpColor::Red, kpColor::Yellow); + +const kpColor kpColor::Pink = ::Blend (kpColor::Red, kpColor::White); +const kpColor kpColor::LightGreen = ::Blend (kpColor::Green, kpColor::White); +const kpColor kpColor::LightBlue = ::Blend (kpColor::Blue, kpColor::White); +const kpColor kpColor::Tan = ::Blend (kpColor::Yellow, kpColor::White); + +const kpColor kpColor::DarkRed = ::Dark (kpColor::Red); +const kpColor kpColor::DarkOrange = ::Dark (kpColor::Orange); +const kpColor kpColor::Brown = kpColor::DarkOrange; +const kpColor kpColor::DarkYellow = ::Dark (kpColor::Yellow); +const kpColor kpColor::DarkGreen = ::Dark (kpColor::Green); +const kpColor kpColor::DarkAqua = ::Dark (kpColor::Aqua); +const kpColor kpColor::DarkBlue = ::Dark (kpColor::Blue); +const kpColor kpColor::DarkPurple = ::Dark (kpColor::Purple); +const kpColor kpColor::DarkGray = ::Dark (kpColor::Gray); diff --git a/imagelib/kpDocumentMetaInfo.cpp b/imagelib/kpDocumentMetaInfo.cpp new file mode 100644 index 0000000..d31577f --- /dev/null +++ b/imagelib/kpDocumentMetaInfo.cpp @@ -0,0 +1,277 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpDocumentMetaInfo.h" + +#include + +#include + +#include "kpLogCategories.h" + +#include "kpDefs.h" + + +// +// Constants which "ought to be enough for anybody" +// LOTODO: Maybe there are some QImage constants somewhere? +// + +// public static + +// (round up to guarantee at least 1 dot per inch) +const int kpDocumentMetaInfo::MinDotsPerMeter = + int (std::ceil (1/*single dot per inch - a very low DPI*/ * KP_INCHES_PER_METER) + 0.1); + +const int kpDocumentMetaInfo::MaxDotsPerMeter = + int ((600 * 100)/*a lot of DPI*/ * KP_INCHES_PER_METER); + +// public static +const int kpDocumentMetaInfo::MaxOffset = (4000/*big image*/ * 100)/*a very big image*/; +const int kpDocumentMetaInfo::MinOffset = -kpDocumentMetaInfo::MaxOffset; + +//--------------------------------------------------------------------- + +struct kpDocumentMetaInfoPrivate +{ + int m_dotsPerMeterX{}, m_dotsPerMeterY{}; + QPoint m_offset; + + QMap m_textMap; +}; + +//--------------------------------------------------------------------- + +// public +kpDocumentMetaInfo::kpDocumentMetaInfo () + : d (new kpDocumentMetaInfoPrivate ()) +{ + d->m_dotsPerMeterX = 0; + d->m_dotsPerMeterY = 0; + d->m_offset = QPoint (0, 0); +} + +//--------------------------------------------------------------------- + +kpDocumentMetaInfo::kpDocumentMetaInfo (const kpDocumentMetaInfo &rhs) + : d (new kpDocumentMetaInfoPrivate ()) +{ + d->m_dotsPerMeterX = rhs.dotsPerMeterX (); + d->m_dotsPerMeterY = rhs.dotsPerMeterY (); + d->m_offset = rhs.offset (); + d->m_textMap = rhs.textMap (); +} + +//--------------------------------------------------------------------- + +// public +kpDocumentMetaInfo::~kpDocumentMetaInfo () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// public +bool kpDocumentMetaInfo::operator== (const kpDocumentMetaInfo &rhs) const +{ + return (d->m_dotsPerMeterX == rhs.d->m_dotsPerMeterX && + d->m_dotsPerMeterY == rhs.d->m_dotsPerMeterY && + d->m_offset == rhs.d->m_offset && + d->m_textMap == rhs.d->m_textMap); +} + +//--------------------------------------------------------------------- + +// public +bool kpDocumentMetaInfo::operator!= (const kpDocumentMetaInfo &rhs) const +{ + return !(*this == rhs); +} + +//--------------------------------------------------------------------- + +// public +kpDocumentMetaInfo &kpDocumentMetaInfo::operator= (const kpDocumentMetaInfo &rhs) +{ + if (this == &rhs) { + return *this; + } + + d->m_dotsPerMeterX = rhs.dotsPerMeterX (); + d->m_dotsPerMeterY = rhs.dotsPerMeterY (); + d->m_offset = rhs.offset (); + d->m_textMap = rhs.textMap (); + + return *this; +} + +//--------------------------------------------------------------------- + +// public +void kpDocumentMetaInfo::printDebug (const QString &prefix) const +{ + const QString usedPrefix = !prefix.isEmpty() ? QString(prefix + QLatin1String(":")) : QString(); + + qCDebug(kpLogImagelib) << usedPrefix; + + qCDebug(kpLogImagelib) << "dotsPerMeter X=" << dotsPerMeterX () + << " Y=" << dotsPerMeterY () + << " offset=" << offset (); + + foreach (const QString &key, textKeys()) + qCDebug(kpLogImagelib) << "key=" << key << " text=" << text(key); + + qCDebug(kpLogImagelib) << usedPrefix << "ENDS"; +} + +//--------------------------------------------------------------------- + +// public +kpCommandSize::SizeType kpDocumentMetaInfo::size () const +{ + kpCommandSize::SizeType ret = 0; + + for (const auto &key : d->m_textMap.keys ()) + { + ret += kpCommandSize::StringSize (key) + + kpCommandSize::StringSize (d->m_textMap [key]); + } + + // We don't know what the QMap size overhead is so overestimate the size + // rather than underestimating it. + // LOTODO: Find the proper size in bytes. + return ret * 3; +} + +//--------------------------------------------------------------------- + +// public +int kpDocumentMetaInfo::dotsPerMeterX () const +{ + return d->m_dotsPerMeterX; +} + +//--------------------------------------------------------------------- + +// public +void kpDocumentMetaInfo::setDotsPerMeterX (int val) +{ + // Unspecified resolution? + if (val == 0) + { + d->m_dotsPerMeterX = 0; + return; + } + + d->m_dotsPerMeterX = qBound (MinDotsPerMeter, val, MaxDotsPerMeter); +} + +//--------------------------------------------------------------------- + +// public +int kpDocumentMetaInfo::dotsPerMeterY () const +{ + return d->m_dotsPerMeterY; +} + +//--------------------------------------------------------------------- + +// public +void kpDocumentMetaInfo::setDotsPerMeterY (int val) +{ + // Unspecified resolution? + if (val == 0) + { + d->m_dotsPerMeterY = 0; + return; + } + + d->m_dotsPerMeterY = qBound (MinDotsPerMeter, val, MaxDotsPerMeter); +} + +//--------------------------------------------------------------------- + +// public +QPoint kpDocumentMetaInfo::offset () const +{ + return d->m_offset; +} + +//--------------------------------------------------------------------- + +// public +void kpDocumentMetaInfo::setOffset (const QPoint &point) +{ + const int x = qBound (MinOffset, point.x (), MaxOffset); + const int y = qBound (MinOffset, point.y (), MaxOffset); + + d->m_offset = QPoint (x, y); +} + +//--------------------------------------------------------------------- + +// public +QMap kpDocumentMetaInfo::textMap () const +{ + return d->m_textMap; +} + +//--------------------------------------------------------------------- + +// public +QList kpDocumentMetaInfo::textKeys () const +{ + return d->m_textMap.keys (); +} + +//--------------------------------------------------------------------- + +// public +QString kpDocumentMetaInfo::text (const QString &key) const +{ + if (key.isEmpty ()) { + return {}; + } + + return d->m_textMap [key]; +} + +//--------------------------------------------------------------------- + +// public +void kpDocumentMetaInfo::setText (const QString &key, const QString &value) +{ + if (key.isEmpty ()) { + return; + } + + d->m_textMap [key] = value; +} + +//--------------------------------------------------------------------- diff --git a/imagelib/kpDocumentMetaInfo.h b/imagelib/kpDocumentMetaInfo.h new file mode 100644 index 0000000..50430a8 --- /dev/null +++ b/imagelib/kpDocumentMetaInfo.h @@ -0,0 +1,107 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_DOCUMENT_META_INFO_H +#define KP_DOCUMENT_META_INFO_H + + +#include +#include +#include +#include + +#include "commands/kpCommandSize.h" + + +class QPoint; + + +class kpDocumentMetaInfo +{ +public: + kpDocumentMetaInfo (); + kpDocumentMetaInfo (const kpDocumentMetaInfo &rhs); + virtual ~kpDocumentMetaInfo (); + + bool operator== (const kpDocumentMetaInfo &rhs) const; + bool operator!= (const kpDocumentMetaInfo &rhs) const; + + kpDocumentMetaInfo &operator= (const kpDocumentMetaInfo &rhs); + + + void printDebug (const QString &prefix) const; + + + kpCommandSize::SizeType size () const; + + + // + // Constants (enforced by methods) + // + + static const int MinDotsPerMeter, MaxDotsPerMeter; + static const int MinOffset, MaxOffset; + + + // See QImage documentation + + // is 0 if the resolution is unspecified. + // Else, these methods automatically bound to be between + // MinDotsPerMeter ... MaxDotsPerMeter inclusive. + int dotsPerMeterX () const; + void setDotsPerMeterX (int val); + + // is 0 if the resolution is unspecified. + // Else, these methods automatically bound to be between + // MinDotsPerMeter ... MaxDotsPerMeter inclusive. + int dotsPerMeterY () const; + void setDotsPerMeterY (int val); + + + // These methods automatically bound each of X and Y to be between + // MinOffset and MaxOffset inclusive. + QPoint offset () const; + void setOffset (const QPoint &point); + + + QMap textMap () const; + QList textKeys () const; + + // (if is empty, it returns an empty string) + QString text (const QString &key) const; + + // (if is empty, the operation is ignored) + void setText (const QString &key, const QString &value); + + +private: + struct kpDocumentMetaInfoPrivate *d; +}; + + +#endif // KP_DOCUMENT_META_INFO_H diff --git a/imagelib/kpFloodFill.cpp b/imagelib/kpFloodFill.cpp new file mode 100644 index 0000000..0f67854 --- /dev/null +++ b/imagelib/kpFloodFill.cpp @@ -0,0 +1,423 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_FLOOD_FILL 0 + + +#include "kpFloodFill.h" + +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include "kpColor.h" +#include "kpDefs.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" + +//--------------------------------------------------------------------- + +class kpFillLine +{ +public: + kpFillLine (int y = -1, int x1 = -1, int x2 = -1) + : m_y (y), m_x1 (x1), m_x2 (x2) + { + } + + static kpCommandSize::SizeType size () + { + return sizeof (kpFillLine); + } + + int m_y, m_x1, m_x2; +}; + +//--------------------------------------------------------------------- + +static kpCommandSize::SizeType FillLinesListSize (const QList &fillLines) +{ + return (fillLines.size () * kpFillLine::size ()); +} + +//--------------------------------------------------------------------- + +struct kpFloodFillPrivate +{ + // + // Copy of whatever was passed to the constructor. + // + + kpImage *imagePtr = nullptr; + int x = 0, y = 0; + kpColor color; + int processedColorSimilarity = 0; + + + // + // Set by Step 1. + // + + kpColor colorToChange; + + + // + // Set by Step 2. + // + + QList fillLines; + QList < QList > fillLinesCache; + + QRect boundingRect; + + bool prepared = false; +}; + +//--------------------------------------------------------------------- + +kpFloodFill::kpFloodFill (kpImage *image, int x, int y, + const kpColor &color, int processedColorSimilarity) + : d (new kpFloodFillPrivate ()) +{ + d->imagePtr = image; + d->x = x; + d->y = y; + d->color = color; + d->processedColorSimilarity = processedColorSimilarity; + + d->prepared = false; +} + +//--------------------------------------------------------------------- + +kpFloodFill::~kpFloodFill () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// public +kpColor kpFloodFill::color () const +{ + return d->color; +} + +//--------------------------------------------------------------------- + +// public +int kpFloodFill::processedColorSimilarity () const +{ + return d->processedColorSimilarity; +} + +//--------------------------------------------------------------------- + +// public +kpCommandSize::SizeType kpFloodFill::size () const +{ + kpCommandSize::SizeType fillLinesCacheSize = 0; + for (const auto &linesList : d->fillLinesCache) + { + fillLinesCacheSize += ::FillLinesListSize (linesList); + } + + return ::FillLinesListSize(d->fillLines) + + kpCommandSize::QImageSize(d->imagePtr) + + fillLinesCacheSize; +} + +//--------------------------------------------------------------------- + +// public +void kpFloodFill::prepareColorToChange () +{ + if (d->colorToChange.isValid ()) { + return; + } + +#if DEBUG_KP_FLOOD_FILL && 1 + qCDebug(kpLogImagelib) << "kpFloodFill::prepareColorToChange()"; +#endif + + d->colorToChange = kpPixmapFX::getColorAtPixel (*d->imagePtr, QPoint (d->x, d->y)); +} + +//--------------------------------------------------------------------- + +// public +kpColor kpFloodFill::colorToChange () +{ + prepareColorToChange (); + + return d->colorToChange; +} + +//--------------------------------------------------------------------- + +// Derived from the zSprite2 Graphics Engine + +// private +kpColor kpFloodFill::pixelColor (int x, int y, bool *beenHere) const +{ + if (beenHere) { + *beenHere = false; + } + + Q_ASSERT (y >= 0 && y < static_cast (d->fillLinesCache.count ())); + + for (const auto &line : d->fillLinesCache [y]) + { + if (x >= line.m_x1 && x <= line.m_x2) + { + if (beenHere) { + *beenHere = true; + } + return d->color; + } + } + + return kpPixmapFX::getColorAtPixel (*(d->imagePtr), QPoint (x, y)); +} + +//--------------------------------------------------------------------- + +// private +bool kpFloodFill::shouldGoTo (int x, int y) const +{ + bool beenThere; + const kpColor col = pixelColor (x, y, &beenThere); + + return (!beenThere && col.isSimilarTo (d->colorToChange, d->processedColorSimilarity)); +} + +//--------------------------------------------------------------------- + +// private +int kpFloodFill::findMinX (int y, int x) const +{ + for (;;) + { + if (x < 0) { + return 0; + } + + if (shouldGoTo (x, y)) { + x--; + } + else { + return x + 1; + } + } +} + +//--------------------------------------------------------------------- + +// private +int kpFloodFill::findMaxX (int y, int x) const +{ + for (;;) + { + if (x > d->imagePtr->width () - 1) { + return d->imagePtr->width () - 1; + } + + if (shouldGoTo (x, y)) { + x++; + } + else { + return x - 1; + } + } +} + +//--------------------------------------------------------------------- + +// private +void kpFloodFill::addLine (int y, int x1, int x2) +{ +#if DEBUG_KP_FLOOD_FILL && 0 + qCDebug(kpLogImagelib) << "kpFillCommand::fillAddLine (" + << y << "," << x1 << "," << x2 << ")" << endl; +#endif + + d->fillLines.append (kpFillLine (y, x1, x2)); + d->fillLinesCache [y].append ( + kpFillLine (y/*OPT: can determine from array index*/, x1, x2)); + d->boundingRect = d->boundingRect.united (QRect (QPoint (x1, y), QPoint (x2, y))); +} + +//--------------------------------------------------------------------- + +// private +void kpFloodFill::findAndAddLines (const kpFillLine &fillLine, int dy) +{ + // out of bounds? + if (fillLine.m_y + dy < 0 || fillLine.m_y + dy >= d->imagePtr->height ()) { + return; + } + + for (int xnow = fillLine.m_x1; xnow <= fillLine.m_x2; xnow++) + { + // At current position, right colour? + if (shouldGoTo (xnow, fillLine.m_y + dy)) + { + // Find minimum and maximum x values + int minxnow = findMinX (fillLine.m_y + dy, xnow); + int maxxnow = findMaxX (fillLine.m_y + dy, xnow); + + // Draw line + addLine (fillLine.m_y + dy, minxnow, maxxnow); + + // Move x pointer + xnow = maxxnow; + } + } +} + +//--------------------------------------------------------------------- + +// public +void kpFloodFill::prepare () +{ + if (d->prepared) { + return; + } + +#if DEBUG_KP_FLOOD_FILL && 1 + qCDebug(kpLogImagelib) << "kpFloodFill::prepare()"; +#endif + + prepareColorToChange (); + + d->boundingRect = QRect (); + + +#if DEBUG_KP_FLOOD_FILL && 1 + qCDebug(kpLogImagelib) << "\tperforming NOP check"; +#endif + + // get the color we need to replace + if (d->processedColorSimilarity == 0 && d->color == d->colorToChange) + { + // need to do absolutely nothing (this is a significant optimization + // for people who randomly click a lot over already-filled areas) + d->prepared = true; // sync with all "return true"'s + return; + } + +#if DEBUG_KP_FLOOD_FILL && 1 + qCDebug(kpLogImagelib) << "\tcreating fillLinesCache"; +#endif + + // ready cache + for (int i = 0; i < d->imagePtr->height (); i++) { + d->fillLinesCache.append (QList ()); + } + +#if DEBUG_KP_FLOOD_FILL && 1 + qCDebug(kpLogImagelib) << "\tcreating fill lines"; +#endif + + // draw initial line + addLine (d->y, findMinX (d->y, d->x), findMaxX (d->y, d->x)); + + for (int i = 0; i < d->fillLines.count(); i++) + { + kpFillLine &fl = d->fillLines[i]; + + #if DEBUG_KP_FLOOD_FILL && 0 + qCDebug(kpLogImagelib) << "Expanding from y=" << fl.m_y + << " x1=" << fl.m_x1 + << " x2=" << fl.m_x2 + << endl; + #endif + + // + // Make more lines above and below current line. + // + // WARNING: Adds to end of "fillLines" (the list we are iterating through). + findAndAddLines(fl, -1); + findAndAddLines(fl, +1); + } + +#if DEBUG_KP_FLOOD_FILL && 1 + qCDebug(kpLogImagelib) << "\tfinalising memory usage"; +#endif + + // finalize memory usage + d->fillLinesCache.clear (); + + d->prepared = true; // sync with all "return true"'s +} + +//--------------------------------------------------------------------- + +// public +QRect kpFloodFill::boundingRect () +{ + prepare (); + + return d->boundingRect; +} + +//--------------------------------------------------------------------- +// public +void kpFloodFill::fill() +{ + prepare(); + + QApplication::setOverrideCursor(Qt::WaitCursor); + + QPainter painter(d->imagePtr); + + // by definition, flood fill with a fully transparent color erases the pixels + // and sets them to be fully transparent + if ( d->color.isTransparent() ) { + painter.setCompositionMode(QPainter::CompositionMode_Clear); + } + + painter.setPen(d->color.toQColor()); + + for (const auto &l : d->fillLines) + { + if ( l.m_x1 == l.m_x2 ) { + painter.drawPoint(l.m_x1, l.m_y); + } + else { + painter.drawLine(l.m_x1, l.m_y, l.m_x2, l.m_y); + } + } + + QApplication::restoreOverrideCursor(); +} + +//--------------------------------------------------------------------- diff --git a/imagelib/kpFloodFill.h b/imagelib/kpFloodFill.h new file mode 100644 index 0000000..3568bc5 --- /dev/null +++ b/imagelib/kpFloodFill.h @@ -0,0 +1,128 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_FLOOD_FILL_H +#define KP_FLOOD_FILL_H + + +#include "kpImage.h" +#include "commands/kpCommandSize.h" + + +class kpColor; +class kpFillLine; + + +struct kpFloodFillPrivate; + +class kpFloodFill +{ +public: + kpFloodFill (kpImage *image, int x, int y, + const kpColor &color, + int processedColorSimilarity); + ~kpFloodFill (); + + + // + // Spits back constructor arguments. + // + +public: + kpColor color () const; + int processedColorSimilarity () const; + + +public: + // Used for calculating the size of a command in the command history. + kpCommandSize::SizeType size () const; + + + // + // Step 1: Determines the colour that will be changed to color(). + // + // Very fast. + // + +public: + void prepareColorToChange (); + + // (may invoke prepareColorToChange()). + kpColor colorToChange (); + + + // + // Step 2: Determines the scanlines / pixels that will be changed to color(). + // + // The slowest part of the whole fill operation. + // + // Before calling a Step 2 function, you don't have to (but you can) + // call any of the functions in Step 1. + // + +private: + kpColor pixelColor (int x, int y, bool *beenHere = nullptr) const; + bool shouldGoTo (int x, int y) const; + + // Finds the minimum x value at a certain line to be filled. + int findMinX (int y, int x) const; + + // Finds the maximum x value at a certain line to be filled. + int findMaxX (int y, int x) const; + + void addLine (int y, int x1, int x2); + void findAndAddLines (const kpFillLine &fillLine, int dy); + +public: + // (may invoke Step 1's prepareColorToChange()) + void prepare (); + + // (may invoke prepare()) + QRect boundingRect (); + + + // + // Step 3: Draws the lines identified in Step 2 in color(). + // + // Between the speeds of Step 2 and Step 1. + // + // Before calling a Step 3 function, you don't have to (but you can) + // call any of the functions in Step 1 or 2. + // + +public: + // (may invoke Step 2's prepare()) + void fill (); + + +private: + kpFloodFillPrivate * const d; +}; + + +#endif // KP_FLOOD_FILL_H diff --git a/imagelib/kpImage.h b/imagelib/kpImage.h new file mode 100644 index 0000000..428f94b --- /dev/null +++ b/imagelib/kpImage.h @@ -0,0 +1,38 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_IMAGE_H +#define KP_IMAGE_H + + +#include + +typedef QImage kpImage; + + +#endif // KP_IMAGE_H diff --git a/imagelib/kpPainter.cpp b/imagelib/kpPainter.cpp new file mode 100644 index 0000000..5be9ed4 --- /dev/null +++ b/imagelib/kpPainter.cpp @@ -0,0 +1,512 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_PAINTER 0 + + +#include "kpPainter.h" + +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" +#include "tools/flow/kpToolFlowBase.h" + +#include + +#include +#include +#include + +#include "kpLogCategories.h" + +//--------------------------------------------------------------------- + +// public static +bool kpPainter::pointsAreCardinallyAdjacent (const QPoint &p, const QPoint &q) +{ + int dx = qAbs (p.x () - q.x ()); + int dy = qAbs (p.y () - q.y ()); + + return (dx + dy == 1); +} + +//--------------------------------------------------------------------- + +// public static +QList kpPainter::interpolatePoints (const QPoint &startPoint, + const QPoint &endPoint, + bool cardinalAdjacency, + double probability) +{ +#if DEBUG_KP_PAINTER + qCDebug(kpLogImagelib) << "CALL(startPoint=" << startPoint + << ",endPoint=" << endPoint << ")"; +#endif + + QList ret; + + Q_ASSERT (probability >= 0.0 && probability <= 1.0); + const int probabilityTimes1000 = qRound (probability * 1000); +#define SHOULD_DRAW() ( (probabilityTimes1000 == 1000) /*avoid QRandomGenerator call*/ || \ + (QRandomGenerator::global()->bounded(1000) < probabilityTimes1000) ) + + + // Derived from the zSprite2 Graphics Engine. + // "MODIFIED" comment shows deviation from zSprite2 and Bresenham's line + // algorithm. + + const int x1 = startPoint.x (), + y1 = startPoint.y (), + x2 = endPoint.x (), + y2 = endPoint.y (); + + // Difference of x and y values + const int dx = x2 - x1; + const int dy = y2 - y1; + + // Absolute values of differences + const int ix = qAbs (dx); + const int iy = qAbs (dy); + + // Larger of the x and y differences + const int inc = ix > iy ? ix : iy; + + // Plot location + int plotx = x1; + int ploty = y1; + + int x = 0; + int y = 0; + + if (SHOULD_DRAW ()) { + ret.append (QPoint (plotx, ploty)); + } + + + for (int i = 0; i <= inc; i++) + { + // oldplotx is equally as valid but would look different + // (but nobody will notice which one it is) + const int oldploty = ploty; + int plot = 0; + + x += ix; + y += iy; + + if (x > inc) + { + plot++; + x -= inc; + + if (dx < 0) { + plotx--; + } + else { + plotx++; + } + } + + if (y > inc) + { + plot++; + y -= inc; + + if (dy < 0) { + ploty--; + } + else { + ploty++; + } + } + + if (plot) + { + if (cardinalAdjacency && plot == 2) + { + // MODIFIED: Every point is + // horizontally or vertically adjacent to another point (if there + // is more than 1 point, of course). This is in contrast to the + // ordinary line algorithm which can create diagonal adjacencies. + + if (SHOULD_DRAW ()) { + ret.append (QPoint (plotx, oldploty)); + } + } + + if (SHOULD_DRAW ()) { + ret.append (QPoint (plotx, ploty)); + } + } + } + +#undef SHOULD_DRAW + + return ret; +} + +//--------------------------------------------------------------------- + +// public static +void kpPainter::fillRect (kpImage *image, + int x, int y, int width, int height, + const kpColor &color) +{ + kpPixmapFX::fillRect (image, x, y, width, height, color); +} + +//--------------------------------------------------------------------- + + +// are operating on the original image +// (the original image is not passed to this function). +// +// = subset of the original image containing all the pixels in +// +// = the rectangle, relative to the painters, whose pixels we +// want to change +static bool ReadableImageWashRect (QPainter *rgbPainter, + const QImage &image, + const kpColor &colorToReplace, + const QRect &imageRect, const QRect &drawRect, + int processedColorSimilarity) +{ + bool didSomething = false; + +#if DEBUG_KP_PAINTER && 0 + qCDebug(kpLogImagelib) << "kppixmapfx.cpp:WashRect(imageRect=" << imageRect + << ",drawRect=" << drawRect + << ")" << endl; +#endif + + // If you're going to pass painter pointers, those painters had better be + // active (i.e. QPainter::begin() has been called). + Q_ASSERT (!rgbPainter || rgbPainter->isActive ()); + +// make use of scanline coherence +#define FLUSH_LINE() \ +{ \ + if (rgbPainter) { \ + if (startDrawX == x - 1) \ + rgbPainter->drawPoint (startDrawX + imageRect.x (), \ + y + imageRect.y ()); \ + else \ + rgbPainter->drawLine (startDrawX + imageRect.x (), \ + y + imageRect.y (), \ + x - 1 + imageRect.x (), \ + y + imageRect.y ()); \ + } \ + didSomething = true; \ + startDrawX = -1; \ +} + + const int maxY = drawRect.bottom () - imageRect.top (); + + const int minX = drawRect.left () - imageRect.left (); + const int maxX = drawRect.right () - imageRect.left (); + + for (int y = drawRect.top () - imageRect.top (); + y <= maxY; + y++) + { + int startDrawX = -1; + + int x; // for FLUSH_LINE() + for (x = minX; x <= maxX; x++) + { + #if DEBUG_KP_PAINTER && 0 + fprintf (stderr, "y=%i x=%i colorAtPixel=%08X colorToReplace=%08X ... ", + y, x, + kpPixmapFX::getColorAtPixel (image, QPoint (x, y)).toQRgb (), + colorToReplace.toQRgb ()); + #endif + if (kpPixmapFX::getColorAtPixel (image, QPoint (x, y)).isSimilarTo (colorToReplace, processedColorSimilarity)) + { + #if DEBUG_KP_PAINTER && 0 + fprintf (stderr, "similar\n"); + #endif + if (startDrawX < 0) { + startDrawX = x; + } + } + else + { + #if DEBUG_KP_PAINTER && 0 + fprintf (stderr, "different\n"); + #endif + if (startDrawX >= 0) { + FLUSH_LINE (); + } + } + } + + if (startDrawX >= 0) { + FLUSH_LINE (); + } + } + +#undef FLUSH_LINE + + return didSomething; +} + +//--------------------------------------------------------------------- + +struct WashPack +{ + QPoint startPoint, endPoint; + kpColor color; + int penWidth{}, penHeight{}; + kpColor colorToReplace; + int processedColorSimilarity{}; + + QRect readableImageRect; + QImage readableImage; +}; + +//--------------------------------------------------------------------- + +static QRect Wash (kpImage *image, + const QPoint &startPoint, const QPoint &endPoint, + const kpColor &color, int penWidth, int penHeight, + const kpColor &colorToReplace, + int processedColorSimilarity, + QRect (*drawFunc) (QPainter * /*rgbPainter*/, void * /*data*/)) +{ + WashPack pack; + pack.startPoint = startPoint; pack.endPoint = endPoint; + pack.color = color; + pack.penWidth = penWidth; pack.penHeight = penHeight; + pack.colorToReplace = colorToReplace; + pack.processedColorSimilarity = processedColorSimilarity; + + + // Get the rectangle that bounds the changes and the pixmap for that + // rectangle. + const QRect normalizedRect = kpPainter::normalizedRect(pack.startPoint, pack.endPoint); + pack.readableImageRect = kpTool::neededRect (normalizedRect, + qMax (pack.penWidth, pack.penHeight)); +#if DEBUG_KP_PAINTER + qCDebug(kpLogImagelib) << "kppainter.cpp:Wash() startPoint=" << startPoint + << " endPoint=" << endPoint + << " --> normalizedRect=" << normalizedRect + << " readableImageRect=" << pack.readableImageRect + << endl; +#endif + pack.readableImage = kpPixmapFX::getPixmapAt (*image, pack.readableImageRect); + + QPainter painter(image); + return (*drawFunc)(&painter, &pack); +} + +//--------------------------------------------------------------------- + +void WashHelperSetup (QPainter *rgbPainter, const WashPack *pack) +{ + // Set the drawing colors for the painters. + + if (rgbPainter) { + rgbPainter->setPen (pack->color.toQColor()); + } +} + +//--------------------------------------------------------------------- + +static QRect WashLineHelper (QPainter *rgbPainter, void *data) +{ +#if DEBUG_KP_PAINTER && 0 + qCDebug(kpLogImagelib) << "Washing pixmap (w=" << rect.width () + << ",h=" << rect.height () << ")" << endl; + QTime timer; + int convAndWashTime; +#endif + + auto *pack = static_cast (data); + + // Setup painters. + ::WashHelperSetup (rgbPainter, pack); + + + bool didSomething = false; + + QList points = kpPainter::interpolatePoints (pack->startPoint, pack->endPoint); + foreach (const QPoint &p, points) + { + // OPT: This may be reading and possibly writing pixels that were + // visited on a previous iteration, since the pen is usually + // bigger than 1 pixel. Maybe we could use QRegion to determine + // all the non-intersecting regions and only wash each region once. + // + // Profiling needs to be done as QRegion is known to be a CPU hog. + if (::ReadableImageWashRect (rgbPainter, + pack->readableImage, + pack->colorToReplace, + pack->readableImageRect, + kpToolFlowBase::hotRectForMousePointAndBrushWidthHeight ( + p, pack->penWidth, pack->penHeight), + pack->processedColorSimilarity)) + { + didSomething = true; + } + } + + +#if DEBUG_KP_PAINTER && 0 + int ms = timer.restart (); + qCDebug(kpLogImagelib) << "\ttried to wash: " << ms << "ms" + << " (" << (ms ? (rect.width () * rect.height () / ms) : -1234) + << " pixels/ms)" + << endl; + convAndWashTime += ms; +#endif + + + // TODO: Rectangle may be too big. Use QRect::united() incrementally? + // Efficiency? + return didSomething ? pack->readableImageRect : QRect (); +} + +//--------------------------------------------------------------------- + +// public static +QRect kpPainter::washLine (kpImage *image, + int x1, int y1, int x2, int y2, + const kpColor &color, int penWidth, int penHeight, + const kpColor &colorToReplace, + int processedColorSimilarity) +{ + return ::Wash (image, + QPoint (x1, y1), QPoint (x2, y2), + color, penWidth, penHeight, + colorToReplace, + processedColorSimilarity, + &::WashLineHelper); +} + +//--------------------------------------------------------------------- + +static QRect WashRectHelper (QPainter *rgbPainter, void *data) +{ + auto *pack = static_cast (data); +#if DEBUG_KP_PAINTER && 0 + qCDebug(kpLogImagelib) << "Washing pixmap (w=" << rect.width () + << ",h=" << rect.height () << ")" << endl; + QTime timer; + int convAndWashTime; +#endif + + // Setup painters. + ::WashHelperSetup (rgbPainter, pack); + + + const QRect drawRect (pack->startPoint, pack->endPoint); + + bool didSomething = false; + + if (::ReadableImageWashRect (rgbPainter, + pack->readableImage, + pack->colorToReplace, + pack->readableImageRect, + drawRect, + pack->processedColorSimilarity)) + { + didSomething = true; + } + + +#if DEBUG_KP_PAINTER && 0 + int ms = timer.restart (); + qCDebug(kpLogImagelib) << "\ttried to wash: " << ms << "ms" + << " (" << (ms ? (rect.width () * rect.height () / ms) : -1234) + << " pixels/ms)" + << endl; + convAndWashTime += ms; +#endif + + + return didSomething ? drawRect : QRect (); +} + +//--------------------------------------------------------------------- + +// public static +QRect kpPainter::washRect (kpImage *image, + int x, int y, int width, int height, + const kpColor &color, + const kpColor &colorToReplace, + int processedColorSimilarity) +{ + return ::Wash (image, + QPoint (x, y), QPoint (x + width - 1, y + height - 1), + color, 1/*pen width*/, 1/*pen height*/, + colorToReplace, + processedColorSimilarity, + &::WashRectHelper); +} + +//--------------------------------------------------------------------- + +// public static +void kpPainter::sprayPoints (kpImage *image, + const QList &points, + const kpColor &color, + int spraycanSize) +{ +#if DEBUG_KP_PAINTER + qCDebug(kpLogImagelib) << "kpPainter::sprayPoints()"; +#endif + + Q_ASSERT (spraycanSize > 0); + + QPainter painter(image); + const int radius = spraycanSize / 2; + + // Set the drawing colors for the painters. + + painter.setPen(color.toQColor()); + + for (const auto &p : points) + { + for (int i = 0; i < 10; i++) + { + const int dx = (QRandomGenerator::global()->generate() % spraycanSize) - radius; + const int dy = (QRandomGenerator::global()->generate() % spraycanSize) - radius; + + // Make it look circular. + // TODO: Can be done better by doing a random vector angle & length + // but would sin and cos be too slow? + if ((dx * dx) + (dy * dy) > (radius * radius)) { + continue; + } + + const QPoint p2 (p.x () + dx, p.y () + dy); + + painter.drawPoint(p2); + } + } +} + +//--------------------------------------------------------------------- diff --git a/imagelib/kpPainter.h b/imagelib/kpPainter.h new file mode 100644 index 0000000..8e58371 --- /dev/null +++ b/imagelib/kpPainter.h @@ -0,0 +1,137 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_PAINTER_H +#define KP_PAINTER_H + + +#include "kpColor.h" +#include "kpImage.h" + + + + +// +// Stateless painter with sane semantics that works on kpImage's i.e. it +// works on document - not view - data. If you find that you need state, +// you should probably move it into kpPainter to avoid the overhead of +// passing around this state (e.g. color, line width) and for reuse. +// +// kpPainter is to kpImage as QPainter is to QPixmap. +// +// This encapsulates the set of functionality used by all of KolourPaint's +// document drawing functions and nothing more, permitting rewriting of +// the image library. Currently uses QPainter/kpPixmapFX as the image library. +// + +struct kpPainterPrivate; + +class kpPainter +{ +public: + // helper to make a correct QRect out of 2 QPoints regardless of their relative position + // to each other + static QRect normalizedRect(const QPoint& p1, const QPoint& p2) + { + return QRect(qMin(p1.x(), p2.x()), qMin(p1.y(), p2.y()), + qAbs(p2.x() - p1.x()) + 1, qAbs(p2.y() - p1.y()) + 1); + } + + // Returns whether the given points are cardinally adjacent (i.e. one point + // is exactly 1 pixel north, east, south or west of the other). Equal + // points are not cardinally adjacent. + static bool pointsAreCardinallyAdjacent (const QPoint &p, const QPoint &q); + + // Returns a list of points representing a straight line from + // to inclusive, using Bresenham's line algorithm. Each point + // is created only with the specified . + // + // If is set, a modified Bresenham's algorithm will add + // an extra point between every pair of originally strictly-diagonally-adjacent + // points, such that these points become cardinally adjacent. However, these + // extra points are also created only with the specified . + // + // For instance, must be set if a diagonal line is to + // drawn at each of the returned points, otherwise things won't look right: + // + // .\..... + // \.\.... + // .\.B... + // ..Ac\.. + // ...\.\. + // ....\.. + // + // 'A' is the previous Bresenham point. 'B' is the new point. See how if + // diagonal lines are drawn at A and B, there is a gap between the lines. + // Setting will solve this problem, since it will add + // a point at 'c'. + // + // ASSUMPTION: is between 0.0 and 1.0 inclusive. + static QList interpolatePoints (const QPoint &startPoint, + const QPoint &endPoint, + bool cardinalAdjacency = false, + double probability = 1.0); + + static void fillRect (kpImage *image, + int x, int y, int width, int height, + const kpColor &color); + + // Replaces all pixels of on the line + // from (x1,y1) to (x2,y2) of , with a pen of with + // dimensions x. + // + // The corners are centred at those coordinates so if > 1 or + // > 1, the line is likely to extend past a rectangle with + // those corners. + // + // Returns the dirty rectangle. + static QRect washLine (kpImage *image, + int x1, int y1, int x2, int y2, + const kpColor &color, int penWidth, int penHeight, + const kpColor &colorToReplace, + int processedColorSimilarity); + + static QRect washRect (kpImage *image, + int x, int y, int width, int height, + const kpColor &color, + const kpColor &colorToReplace, + int processedColorSimilarity); + + // For each point in , sprays a random pattern of 10 dots of , + // each within a circle of diameter , onto . + // + // ASSUMPTION: spraycanSize > 0. + // TODO: I think this diameter is 1 or 2 off. + static void sprayPoints (kpImage *image, + const QList &points, + const kpColor &color, + int spraycanSize); +}; + + +#endif // KP_PAINTER_H diff --git a/imagelib/transforms/kpTransformAutoCrop.cpp b/imagelib/transforms/kpTransformAutoCrop.cpp new file mode 100644 index 0000000..f3b3085 --- /dev/null +++ b/imagelib/transforms/kpTransformAutoCrop.cpp @@ -0,0 +1,756 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// TODO: Color Similarity is obviously useful in Autocrop but it isn't +// obvious as to how to implement it. The current heuristic, +// for each side, chooses an arbitrary reference color for which +// all other candidate pixels in that side are tested against +// for similarity. But if the reference color happens to be at +// one extreme of the range of colors in that side, then pixels +// at the other extreme would not be deemed similar enough. The +// key is to find the median color as the reference but how do +// you do this if you don't know which pixels to sample in the first +// place (that's what you're trying to find)? Chicken and egg situation. +// +// The other heuristic that is in doubt is the use of the average +// color in determining the similarity of sides (it is possible +// to get vastly differently colors in both sides yet they will be +// considered similar). + +#define DEBUG_KP_TOOL_AUTO_CROP 0 + + +#include "kpTransformAutoCrop.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "generic/kpSetOverrideCursorSaver.h" +#include "tools/kpTool.h" +#include "views/manager/kpViewManager.h" + +#include "kpLogCategories.h" +#include +#include + +#include + +//--------------------------------------------------------------------- + +class kpTransformAutoCropBorder +{ +public: + // WARNING: Only call the with imagePtr = 0 if you are going to use + // operator= to fill it in with a valid imagePtr immediately + // afterwards. + kpTransformAutoCropBorder (const kpImage *imagePtr = nullptr, int processedColorSimilarity = 0); + + kpCommandSize::SizeType size () const; + + const kpImage *image () const; + int processedColorSimilarity () const; + QRect rect () const; + int left () const; + int right () const; + int top () const; + int bottom () const; + kpColor referenceColor () const; + kpColor averageColor () const; + bool isSingleColor () const; + + // (returns true on success (even if no rect) or false on error) + bool calculate (int isX, int dir); + + bool fillsEntireImage () const; + bool exists () const; + void invalidate (); + +private: + const kpImage *m_imagePtr; + int m_processedColorSimilarity; + + QRect m_rect; + kpColor m_referenceColor; + int m_redSum, m_greenSum, m_blueSum; + bool m_isSingleColor; +}; + +kpTransformAutoCropBorder::kpTransformAutoCropBorder (const kpImage *imagePtr, + int processedColorSimilarity) + : m_imagePtr (imagePtr), + m_processedColorSimilarity (processedColorSimilarity) +{ + invalidate (); +} + + +// public +kpCommandSize::SizeType kpTransformAutoCropBorder::size () const +{ + return sizeof (kpTransformAutoCropBorder); +} + + +// public +const kpImage *kpTransformAutoCropBorder::image () const +{ + return m_imagePtr; +} + +// public +int kpTransformAutoCropBorder::processedColorSimilarity () const +{ + return m_processedColorSimilarity; +} + +// public +QRect kpTransformAutoCropBorder::rect () const +{ + return m_rect; +} + +// public +int kpTransformAutoCropBorder::left () const +{ + return m_rect.left (); +} + +// public +int kpTransformAutoCropBorder::right () const +{ + return m_rect.right (); +} + +// public +int kpTransformAutoCropBorder::top () const +{ + return m_rect.top (); +} + +// public +int kpTransformAutoCropBorder::bottom () const +{ + return m_rect.bottom (); +} + +// public +kpColor kpTransformAutoCropBorder::referenceColor () const +{ + return m_referenceColor; +} + +// public +kpColor kpTransformAutoCropBorder::averageColor () const +{ + if (!m_rect.isValid ()) + return kpColor::Invalid; + + if (m_referenceColor.isTransparent ()) + return kpColor::Transparent; + + if (m_processedColorSimilarity == 0) + return m_referenceColor; + + int numPixels = (m_rect.width () * m_rect.height ()); + Q_ASSERT (numPixels > 0); + + return kpColor (m_redSum / numPixels, m_greenSum / numPixels, m_blueSum / numPixels); + +} + +//--------------------------------------------------------------------- + +bool kpTransformAutoCropBorder::isSingleColor () const +{ + return m_isSingleColor; +} + +//--------------------------------------------------------------------- + +// public +bool kpTransformAutoCropBorder::calculate (int isX, int dir) +{ +#if DEBUG_KP_TOOL_AUTO_CROP && 1 + qCDebug(kpLogImagelib) << "kpTransformAutoCropBorder::calculate() CALLED!"; +#endif + int maxX = m_imagePtr->width () - 1; + int maxY = m_imagePtr->height () - 1; + + QImage qimage = *m_imagePtr; + Q_ASSERT (!qimage.isNull ()); + + // (sync both branches) + if (isX) + { + int numCols = 0; + int startX = (dir > 0) ? 0 : maxX; + + kpColor col = kpPixmapFX::getColorAtPixel (qimage, startX, 0); + for (int x = startX; + x >= 0 && x <= maxX; + x += dir) + { + int y; + for (y = 0; y <= maxY; y++) + { + if (!kpPixmapFX::getColorAtPixel (qimage, x, y).isSimilarTo (col, m_processedColorSimilarity)) + break; + } + + if (y <= maxY) + break; + else + numCols++; + } + + if (numCols) + { + m_rect = + kpPainter::normalizedRect(QPoint(startX, 0), + QPoint(startX + (numCols - 1) * dir, maxY)); + m_referenceColor = col; + } + } + else + { + int numRows = 0; + int startY = (dir > 0) ? 0 : maxY; + + kpColor col = kpPixmapFX::getColorAtPixel (qimage, 0, startY); + for (int y = startY; + y >= 0 && y <= maxY; + y += dir) + { + int x; + for (x = 0; x <= maxX; x++) + { + if (!kpPixmapFX::getColorAtPixel (qimage, x, y).isSimilarTo (col, m_processedColorSimilarity)) + break; + } + + if (x <= maxX) + break; + else + numRows++; + } + + if (numRows) + { + m_rect = kpPainter::normalizedRect(QPoint(0, startY), + QPoint(maxX, startY + (numRows - 1) * dir)); + m_referenceColor = col; + } + } + + + if (m_rect.isValid ()) + { + m_isSingleColor = true; + + if (m_processedColorSimilarity != 0) + { + for (int y = m_rect.top (); y <= m_rect.bottom (); y++) + { + for (int x = m_rect.left (); x <= m_rect.right (); x++) + { + kpColor colAtPixel = kpPixmapFX::getColorAtPixel (qimage, x, y); + + if (m_isSingleColor && colAtPixel != m_referenceColor) + m_isSingleColor = false; + + m_redSum += colAtPixel.red (); + m_greenSum += colAtPixel.green (); + m_blueSum += colAtPixel.blue (); + } + } + } + } + + + return true; +} + +// public +bool kpTransformAutoCropBorder::fillsEntireImage () const +{ + return (m_rect == m_imagePtr->rect ()); +} + +// public +bool kpTransformAutoCropBorder::exists () const +{ + // (will use in an addition so make sure returns 1 or 0) + return (m_rect.isValid () ? 1 : 0); +} + +// public +void kpTransformAutoCropBorder::invalidate () +{ + m_rect = QRect (); + m_referenceColor = kpColor::Invalid; + m_redSum = m_greenSum = m_blueSum = 0; + m_isSingleColor = false; +} + + +struct kpTransformAutoCropCommandPrivate +{ + bool actOnSelection{}; + kpTransformAutoCropBorder leftBorder, rightBorder, topBorder, botBorder; + kpImage *leftImage{}, *rightImage{}, *topImage{}, *botImage{}; + + QRect contentsRect; + int oldWidth{}, oldHeight{}; + kpAbstractImageSelection *oldSelectionPtr{}; +}; + +// REFACTOR: Move to /commands/ +kpTransformAutoCropCommand::kpTransformAutoCropCommand (bool actOnSelection, + const kpTransformAutoCropBorder &leftBorder, + const kpTransformAutoCropBorder &rightBorder, + const kpTransformAutoCropBorder &topBorder, + const kpTransformAutoCropBorder &botBorder, + kpCommandEnvironment *environ) + : kpNamedCommand(text(actOnSelection, DontShowAccel), environ), + d (new kpTransformAutoCropCommandPrivate ()) +{ + d->actOnSelection = actOnSelection; + d->leftBorder = leftBorder; + d->rightBorder = rightBorder; + d->topBorder = topBorder; + d->botBorder = botBorder; + d->leftImage = nullptr; + d->rightImage = nullptr; + d->topImage = nullptr; + d->botImage = nullptr; + + kpDocument *doc = document (); + Q_ASSERT (doc); + + d->oldWidth = doc->width (d->actOnSelection); + d->oldHeight = doc->height (d->actOnSelection); + + d->oldSelectionPtr = nullptr; +} + +//--------------------------------------------------------------------- + +kpTransformAutoCropCommand::~kpTransformAutoCropCommand () +{ + deleteUndoImages (); + + delete d->oldSelectionPtr; + delete d; +} + +//--------------------------------------------------------------------- +// public static + +QString kpTransformAutoCropCommand::text(bool actOnSelection, int options) +{ + if (actOnSelection) + { + if (options & kpTransformAutoCropCommand::ShowAccel) { + return i18n ("Remove Internal B&order"); + } + + return i18n ("Remove Internal Border"); + } + + if (options & kpTransformAutoCropCommand::ShowAccel) + return i18n ("Autocr&op"); + + return i18n ("Autocrop"); +} + +//--------------------------------------------------------------------- +// public virtual [base kpCommand] + +kpCommandSize::SizeType kpTransformAutoCropCommand::size () const +{ + return d->leftBorder.size () + + d->rightBorder.size () + + d->topBorder.size () + + d->botBorder.size () + + ImageSize (d->leftImage) + + ImageSize (d->rightImage) + + ImageSize (d->topImage) + + ImageSize (d->botImage) + + SelectionSize (d->oldSelectionPtr); +} + +//--------------------------------------------------------------------- +// private + +void kpTransformAutoCropCommand::getUndoImage (const kpTransformAutoCropBorder &border, kpImage **image) +{ + kpDocument *doc = document (); + Q_ASSERT (doc); + +#if DEBUG_KP_TOOL_AUTO_CROP && 1 + qCDebug(kpLogImagelib) << "kpTransformAutoCropCommand::getUndoImage()"; + qCDebug(kpLogImagelib) << "\timage=" << image + << " border: rect=" << border.rect () + << " isSingleColor=" << border.isSingleColor (); +#endif + + if (image && border.exists () && !border.isSingleColor ()) + { + if (*image) + { + #if DEBUG_KP_TOOL_AUTO_CROP && 1 + qCDebug(kpLogImagelib) << "\talready have *image - delete it"; + #endif + delete *image; + } + + *image = new kpImage ( + kpPixmapFX::getPixmapAt (doc->image (d->actOnSelection), + border.rect ())); + } +} + + +// private +void kpTransformAutoCropCommand::getUndoImages () +{ + getUndoImage (d->leftBorder, &d->leftImage); + getUndoImage (d->rightBorder, &d->rightImage); + getUndoImage (d->topBorder, &d->topImage); + getUndoImage (d->botBorder, &d->botImage); +} + +// private +void kpTransformAutoCropCommand::deleteUndoImages () +{ +#if DEBUG_KP_TOOL_AUTO_CROP && 1 + qCDebug(kpLogImagelib) << "kpTransformAutoCropCommand::deleteUndoImages()"; +#endif + + delete d->leftImage; d->leftImage = nullptr; + delete d->rightImage; d->rightImage = nullptr; + delete d->topImage; d->topImage = nullptr; + delete d->botImage; d->botImage = nullptr; +} + + +// public virtual [base kpCommand] +void kpTransformAutoCropCommand::execute () +{ + if (!d->contentsRect.isValid ()) { + d->contentsRect = contentsRect (); + } + + + getUndoImages (); + + + kpDocument *doc = document (); + Q_ASSERT (doc); + + + kpImage imageWithoutBorder = + kpTool::neededPixmap (doc->image (d->actOnSelection), + d->contentsRect); + + + if (!d->actOnSelection) { + doc->setImage (imageWithoutBorder); + } + else { + d->oldSelectionPtr = doc->imageSelection ()->clone (); + d->oldSelectionPtr->setBaseImage (kpImage ()); + + // d->contentsRect is relative to the top of the sel + // while sel is relative to the top of the doc + QRect rect = d->contentsRect; + rect.translate (d->oldSelectionPtr->x (), d->oldSelectionPtr->y ()); + + kpRectangularImageSelection sel ( + rect, + imageWithoutBorder, + d->oldSelectionPtr->transparency ()); + + doc->setSelection (sel); + + environ ()->somethingBelowTheCursorChanged (); + } +} + +// public virtual [base kpCommand] +void kpTransformAutoCropCommand::unexecute () +{ +#if DEBUG_KP_TOOL_AUTO_CROP && 1 + qCDebug(kpLogImagelib) << "kpTransformAutoCropCommand::unexecute()"; +#endif + + kpDocument *doc = document (); + Q_ASSERT (doc); + + kpImage image (d->oldWidth, d->oldHeight, QImage::Format_ARGB32_Premultiplied); + + // restore the position of the center image + kpPixmapFX::setPixmapAt (&image, d->contentsRect, + doc->image (d->actOnSelection)); + + // draw the borders + + const kpTransformAutoCropBorder *borders [] = + { + &d->leftBorder, &d->rightBorder, + &d->topBorder, &d->botBorder, + nullptr + }; + + const kpImage *images [] = + { + d->leftImage, d->rightImage, + d->topImage, d->botImage, + nullptr + }; + + const kpImage **p = images; + for (const kpTransformAutoCropBorder **b = borders; *b; b++, p++) + { + if (!(*b)->exists ()) { + continue; + } + + if ((*b)->isSingleColor ()) + { + kpColor col = (*b)->referenceColor (); + #if DEBUG_KP_TOOL_AUTO_CROP && 1 + qCDebug(kpLogImagelib) << "\tdrawing border " << (*b)->rect () + << " rgb=" << (int *) col.toQRgb () /* %X hack */; + #endif + + const QRect r = (*b)->rect (); + kpPainter::fillRect (&image, + r.x (), r.y (), r.width (), r.height (), + col); + } + else + { + #if DEBUG_KP_TOOL_AUTO_CROP && 1 + qCDebug(kpLogImagelib) << "\trestoring border image " << (*b)->rect (); + #endif + if (*p) + { + // REFACTOR: Add equivalent method to kpPainter and use. + kpPixmapFX::setPixmapAt (&image, (*b)->rect (), **p); + } + } + } + + + if (!d->actOnSelection) { + doc->setImage (image); + } + else + { + d->oldSelectionPtr->setBaseImage (image); + + doc->setSelection (*d->oldSelectionPtr); + delete d->oldSelectionPtr; d->oldSelectionPtr = nullptr; + + environ ()->somethingBelowTheCursorChanged (); + } + + + deleteUndoImages (); +} + + +// private +QRect kpTransformAutoCropCommand::contentsRect () const +{ + const kpImage image = document ()->image (d->actOnSelection); + + QPoint topLeft (d->leftBorder.exists () ? + d->leftBorder.rect ().right () + 1 : + 0, + d->topBorder.exists () ? + d->topBorder.rect ().bottom () + 1 : + 0); + QPoint botRight (d->rightBorder.exists () ? + d->rightBorder.rect ().left () - 1 : + image.width () - 1, + d->botBorder.exists () ? + d->botBorder.rect ().top () - 1 : + image.height () - 1); + + return {topLeft, botRight}; +} + + +static void ShowNothingToAutocropMessage (kpMainWindow *mainWindow, bool actOnSelection) +{ + kpSetOverrideCursorSaver cursorSaver (Qt::ArrowCursor); + + if (actOnSelection) + { + KMessageBox::information (mainWindow, + i18n ("KolourPaint cannot remove the selection's internal border as it" + " could not be located."), + i18nc ("@title:window", "Cannot Remove Internal Border"), + QStringLiteral("NothingToAutoCrop")); + } + else + { + KMessageBox::information (mainWindow, + i18n ("KolourPaint cannot automatically crop the image as its" + " border could not be located."), + i18nc ("@title:window", "Cannot Autocrop"), + QStringLiteral("NothingToAutoCrop")); + } +} + +bool kpTransformAutoCrop (kpMainWindow *mainWindow) +{ +#if DEBUG_KP_TOOL_AUTO_CROP + qCDebug(kpLogImagelib) << "kpTransformAutoCrop() CALLED!"; +#endif + + Q_ASSERT (mainWindow); + kpDocument *doc = mainWindow->document (); + Q_ASSERT (doc); + + // OPT: if already pulled selection image, no need to do it again here + kpImage image = doc->selection () ? doc->getSelectedBaseImage () : doc->image (); + Q_ASSERT (!image.isNull ()); + + kpViewManager *vm = mainWindow->viewManager (); + Q_ASSERT (vm); + + int processedColorSimilarity = mainWindow->colorToolBar ()->processedColorSimilarity (); + kpTransformAutoCropBorder leftBorder (&image, processedColorSimilarity), + rightBorder (&image, processedColorSimilarity), + topBorder (&image, processedColorSimilarity), + botBorder (&image, processedColorSimilarity); + + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + mainWindow->colorToolBar ()->flashColorSimilarityToolBarItem (); + + // TODO: With Colour Similarity, a lot of weird (and wonderful) things can + // happen resulting in a huge number of code paths. Needs refactoring + // and regression testing. + // + // TODO: e.g. When the top fills entire rect but bot doesn't we could + // invalidate top and continue autocrop. + int numRegions = 0; + if (!leftBorder.calculate (true/*x*/, +1/*going right*/) || + leftBorder.fillsEntireImage () || + !rightBorder.calculate (true/*x*/, -1/*going left*/) || + rightBorder.fillsEntireImage () || + !topBorder.calculate (false/*y*/, +1/*going down*/) || + topBorder.fillsEntireImage () || + !botBorder.calculate (false/*y*/, -1/*going up*/) || + botBorder.fillsEntireImage () || + ((numRegions = leftBorder.exists () + + rightBorder.exists () + + topBorder.exists () + + botBorder.exists ()) == 0)) + { + #if DEBUG_KP_TOOL_AUTO_CROP + qCDebug(kpLogImagelib) << "\tcan't find border; leftBorder.rect=" << leftBorder.rect () + << " rightBorder.rect=" << rightBorder.rect () + << " topBorder.rect=" << topBorder.rect () + << " botBorder.rect=" << botBorder.rect (); + #endif + ::ShowNothingToAutocropMessage (mainWindow, static_cast (doc->selection ())); + return false; + } + +#if DEBUG_KP_TOOL_AUTO_CROP + qCDebug(kpLogImagelib) << "\tnumRegions=" << numRegions; + qCDebug(kpLogImagelib) << "\t\tleft=" << leftBorder.rect () + << " refCol=" << (leftBorder.exists () ? (int *) leftBorder.referenceColor ().toQRgb () : nullptr) + << " avgCol=" << (leftBorder.exists () ? (int *) leftBorder.averageColor ().toQRgb () : nullptr); + qCDebug(kpLogImagelib) << "\t\tright=" << rightBorder.rect () + << " refCol=" << (rightBorder.exists () ? (int *) rightBorder.referenceColor ().toQRgb () : nullptr) + << " avgCol=" << (rightBorder.exists () ? (int *) rightBorder.averageColor ().toQRgb () : nullptr); + qCDebug(kpLogImagelib) << "\t\ttop=" << topBorder.rect () + << " refCol=" << (topBorder.exists () ? (int *) topBorder.referenceColor ().toQRgb () : nullptr) + << " avgCol=" << (topBorder.exists () ? (int *) topBorder.averageColor ().toQRgb () : nullptr); + qCDebug(kpLogImagelib) << "\t\tbot=" << botBorder.rect () + << " refCol=" << (botBorder.exists () ? (int *) botBorder.referenceColor ().toQRgb () : nullptr) + << " avgCol=" << (botBorder.exists () ? (int *) botBorder.averageColor ().toQRgb () : nullptr); +#endif + + // In case e.g. the user pastes a solid, coloured-in rectangle, + // we favor killing the bottom and right regions + // (these regions probably contain the unwanted whitespace due + // to the doc being bigger than the pasted selection to start with). + // + // We also kill if they kiss or even overlap. + + if (leftBorder.exists () && rightBorder.exists ()) + { + const kpColor leftCol = leftBorder.averageColor (); + const kpColor rightCol = rightBorder.averageColor (); + + if ((numRegions == 2 && !leftCol.isSimilarTo (rightCol, processedColorSimilarity)) || + leftBorder.right () >= rightBorder.left () - 1) // kissing or overlapping + { + #if DEBUG_KP_TOOL_AUTO_CROP + qCDebug(kpLogImagelib) << "\tignoring left border"; + #endif + leftBorder.invalidate (); + } + } + + if (topBorder.exists () && botBorder.exists ()) + { + const kpColor topCol = topBorder.averageColor (); + const kpColor botCol = botBorder.averageColor (); + + if ((numRegions == 2 && !topCol.isSimilarTo (botCol, processedColorSimilarity)) || + topBorder.bottom () >= botBorder.top () - 1) // kissing or overlapping + { + #if DEBUG_KP_TOOL_AUTO_CROP + qCDebug(kpLogImagelib) << "\tignoring top border"; + #endif + topBorder.invalidate (); + } + } + + + mainWindow->addImageOrSelectionCommand ( + new kpTransformAutoCropCommand (static_cast (doc->selection ()), + leftBorder, rightBorder, topBorder, botBorder, mainWindow->commandEnvironment ())); + + + return true; +} diff --git a/imagelib/transforms/kpTransformAutoCrop.h b/imagelib/transforms/kpTransformAutoCrop.h new file mode 100644 index 0000000..1a246b9 --- /dev/null +++ b/imagelib/transforms/kpTransformAutoCrop.h @@ -0,0 +1,85 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TRANSFORM_AUTO_CROP_H +#define KP_TRANSFORM_AUTO_CROP_H + + +#include "commands/kpNamedCommand.h" + + +class QRect; + +//class kpImage; +class kpMainWindow; +class kpTransformAutoCropBorder; + + +// REFACTOR: This should be moved into /commands/ +class kpTransformAutoCropCommand : public kpNamedCommand +{ +public: + kpTransformAutoCropCommand (bool actOnSelection, + const kpTransformAutoCropBorder &leftBorder, + const kpTransformAutoCropBorder &rightBorder, + const kpTransformAutoCropBorder &topBorder, + const kpTransformAutoCropBorder &botBorder, + kpCommandEnvironment *environ); + ~kpTransformAutoCropCommand () override; + + enum NameOptions + { + DontShowAccel = 0, + ShowAccel = 1 + }; + + static QString text(bool actOnSelection, int options); + + SizeType size () const override; + +private: + void getUndoImage (const kpTransformAutoCropBorder &border, kpImage **image); + void getUndoImages (); + void deleteUndoImages (); + +public: + void execute () override; + void unexecute () override; + +private: + QRect contentsRect () const; + + struct kpTransformAutoCropCommandPrivate *d; +}; + + +// (returns true on success (even if it did nothing) or false on error) +bool kpTransformAutoCrop (kpMainWindow *mainWindow); + + +#endif // KP_TRANSFORM_AUTO_CROP_H diff --git a/imagelib/transforms/kpTransformCrop.cpp b/imagelib/transforms/kpTransformCrop.cpp new file mode 100644 index 0000000..34d1011 --- /dev/null +++ b/imagelib/transforms/kpTransformCrop.cpp @@ -0,0 +1,77 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_CROP 0 + + +#include "kpTransformCrop.h" +#include "kpTransformCropPrivate.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "layers/selections/kpAbstractSelection.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/imagelib/transforms/kpTransformResizeScaleCommand.h" + +#include + + +void kpTransformCrop (kpMainWindow *mainWindow) +{ + kpDocument *doc = mainWindow->document (); + Q_ASSERT (doc); + + kpAbstractSelection *sel = doc->selection (); + Q_ASSERT (sel); + + + kpCommand *resizeDocCommand = + new kpTransformResizeScaleCommand ( + false/*act on doc, not sel*/, + sel->width (), sel->height (), + kpTransformResizeScaleCommand::Resize, + mainWindow->commandEnvironment ()); + + + auto *textSel = dynamic_cast (sel); + auto *imageSel = dynamic_cast (sel); + // It's either a text selection or an image selection, but cannot be + // neither or both. + Q_ASSERT (!!textSel != !!imageSel); + + if (textSel) { + ::kpTransformCrop_TextSelection (mainWindow, i18n ("Set as Image"), resizeDocCommand); + } + else if (imageSel) { + ::kpTransformCrop_ImageSelection (mainWindow, i18n ("Set as Image"), resizeDocCommand); + } + else { + Q_ASSERT (!"unreachable"); + } +} diff --git a/imagelib/transforms/kpTransformCrop.h b/imagelib/transforms/kpTransformCrop.h new file mode 100644 index 0000000..cb316a5 --- /dev/null +++ b/imagelib/transforms/kpTransformCrop.h @@ -0,0 +1,83 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TRANSFORM_CROP_H +#define KP_TRANSFORM_CROP_H + + +class kpMainWindow; + + +// +// ASSUMPTION: There is a current selection. +// +// +// In all cases, the document is resized to be the same size as the bounding +// rectangle of the selection. Additional behavior depends on the type of +// selection: +// +// +// If it's a text box: +// +// 1. It's moved to (0, 0) and kept editable. +// +// 2. The document background always becomes completely transparent. +// +// Text boxes with transparent backgrounds, before calling this method, +// antialias their text with the pixels of the document below. Such +// pixels are unlikely to be all of the same color, so there is no single +// "correct" color for the new document background. We choose transparent +// because it's the most neutral and forces the text to not antialias. +// TODO: Perhaps a better approach would have been to simply copy the +// pixels of the document below the text box to (0, 0)? +// +// For text boxes with opaque backgrounds, the new transparent document +// background means that the extents of text boxes are clear, when the +// boxes are moved around -- this is handy. +// +// +// If it's an image selection: +// +// 1. The pixels of the document starting from position (0, 0) are set the +// same as those inside the selection region. Unlike other image selection +// commands, if the selection is not floating, there is still no pulling +// of the selection from the document. +// +// The pixels outside the selection region are set to the background color. +// +// 2. The selection border is discarded -- even if the selection was floating +// before -- and replaced by a new one, of the same shape, but located at (0, 0). +// This allows the user to pull off a selection, if they would like. +// +// For user convenience, this border is created by a undoable +// create-selection-border command added to the undo history. +// +void kpTransformCrop (kpMainWindow *mainWindow); + + +#endif // KP_TRANSFORM_CROP_H diff --git a/imagelib/transforms/kpTransformCropPrivate.h b/imagelib/transforms/kpTransformCropPrivate.h new file mode 100644 index 0000000..08f6961 --- /dev/null +++ b/imagelib/transforms/kpTransformCropPrivate.h @@ -0,0 +1,49 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransformCropPrivate_H +#define kpTransformCropPrivate_H + + +class QString; + +class kpCommand; +class kpMainWindow; + + +// Adds a kpMacroCommand, with name , to the command history. +// +// The first subcommand of this kpMacroCommand should be +// which resizes the document to the size of the selection. +void kpTransformCrop_TextSelection (kpMainWindow *mainWindow, + const QString &commandName, kpCommand *resizeDocCommand); +void kpTransformCrop_ImageSelection (kpMainWindow *mainWindow, + const QString &commandName, kpCommand *resizeDocCommand); + + +#endif // kpTransformCropPrivate_H diff --git a/imagelib/transforms/kpTransformCrop_ImageSelection.cpp b/imagelib/transforms/kpTransformCrop_ImageSelection.cpp new file mode 100644 index 0000000..7a527e7 --- /dev/null +++ b/imagelib/transforms/kpTransformCrop_ImageSelection.cpp @@ -0,0 +1,257 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_CROP 0 + + +#include "kpTransformCrop.h" +#include "kpTransformCropPrivate.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "imagelib/kpImage.h" +#include "commands/kpMacroCommand.h" +#include "mainWindow/kpMainWindow.h" +#include "pixmapfx/kpPixmapFX.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "views/manager/kpViewManager.h" + + +// See the "image selection" part of the kpTransformCrop() API Doc. +// +// REFACTOR: Move into commands/ +class SetDocumentToSelectionImageCommand : public kpCommand +{ +public: + SetDocumentToSelectionImageCommand (kpCommandEnvironment *environ); + ~SetDocumentToSelectionImageCommand () override; + + /* (uninteresting child of macro cmd) */ + QString name () const override { return {}; } + + kpCommandSize::SizeType size () const override + { + return ImageSize (m_oldImage) + + SelectionSize (m_fromSelectionPtr) + + ImageSize (m_imageIfFromSelectionDoesntHaveOne); + } + + // ASSUMPTION: Document has been resized to be the same size as the + // selection. + void execute () override; + void unexecute () override; + +protected: + kpColor m_backgroundColor; + kpImage m_oldImage; + kpAbstractImageSelection *m_fromSelectionPtr; + kpImage m_imageIfFromSelectionDoesntHaveOne; +}; + + +SetDocumentToSelectionImageCommand::SetDocumentToSelectionImageCommand (kpCommandEnvironment *environ) + : kpCommand (environ), + m_backgroundColor (environ->backgroundColor ()), + m_fromSelectionPtr ( + dynamic_cast ( + environ->document ()->selection ()->clone ())) +{ + Q_ASSERT (m_fromSelectionPtr); + + if ( m_fromSelectionPtr ) // make coverity happy + { + m_imageIfFromSelectionDoesntHaveOne = + m_fromSelectionPtr->hasContent () ? + kpImage () : + document ()->getSelectedBaseImage (); + } +} + +//--------------------------------------------------------------------- + +SetDocumentToSelectionImageCommand::~SetDocumentToSelectionImageCommand () +{ + delete m_fromSelectionPtr; +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +void SetDocumentToSelectionImageCommand::execute () +{ +#if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "SetDocumentToSelectionImageCommand::execute()"; +#endif + + viewManager ()->setQueueUpdates (); + { + // kpTransformCrop_ImageSelection's has + // executed, resizing the document to be the size of the selection + // bounding rectangle. + Q_ASSERT (document ()->width () == m_fromSelectionPtr->width ()); + Q_ASSERT (document ()->height () == m_fromSelectionPtr->height ()); + m_oldImage = document ()->image (); + + + // + // e.g. original elliptical selection: + // + // t/---\ T = original transparent selection pixel + // | TT | t = outside the selection region + // t\__/t [every other character] = original opaque selection pixel + // + // Afterwards, the _document_ image becomes: + // + // b/---\ T = [unchanged] + // | TT | b = background color + // b\__/b [every other character] = [unchanged] + // + // The selection is deleted. + // + // TODO: Do not introduce a mask if the result will not contain + // any transparent pixels. + // + + QImage newDocImage(document()->width(), document()->height(), QImage::Format_ARGB32_Premultiplied); + newDocImage.fill(m_backgroundColor.toQRgb()); + + #if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "\tsel: rect=" << m_fromSelectionPtr->boundingRect () + << " pm=" << m_fromSelectionPtr->hasContent (); + #endif + QImage setTransparentImage; + + if (m_fromSelectionPtr->hasContent ()) + { + setTransparentImage = m_fromSelectionPtr->transparentImage (); + + #if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "\thave pixmap; rect=" + << setTransparentImage.rect (); + #endif + } + else + { + setTransparentImage = m_imageIfFromSelectionDoesntHaveOne; + #if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "\tno pixmap in sel - get it; rect=" + << setTransparentImage.rect (); + #endif + } + + kpPixmapFX::paintPixmapAt (&newDocImage, + QPoint (0, 0), + setTransparentImage); + + + document ()->setImageAt (newDocImage, QPoint (0, 0)); + document ()->selectionDelete (); + + + environ ()->somethingBelowTheCursorChanged (); + } + viewManager ()->restoreQueueUpdates (); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpCommand] +void SetDocumentToSelectionImageCommand::unexecute () +{ +#if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "SetDocumentToSelectionImageCommand::unexecute()"; +#endif + + viewManager ()->setQueueUpdates (); + { + document ()->setImageAt (m_oldImage, QPoint (0, 0)); + m_oldImage = kpImage (); + + #if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "\tsel: rect=" << m_fromSelectionPtr->boundingRect () + << " pm=" << m_fromSelectionPtr->hasContent (); + #endif + document ()->setSelection (*m_fromSelectionPtr); + + environ ()->somethingBelowTheCursorChanged (); + } + viewManager ()->restoreQueueUpdates (); +} + +//--------------------------------------------------------------------- + + +void kpTransformCrop_ImageSelection (kpMainWindow *mainWindow, + const QString &commandName, kpCommand *resizeDocCommand) +{ + // Save starting selection, minus the border. + auto *borderImageSel = dynamic_cast ( + mainWindow->document ()->selection ()->clone ()); + + Q_ASSERT (borderImageSel); + + if ( !borderImageSel ) { // make coverity happy + return; + } + + // (only interested in border) + borderImageSel->deleteContent (); + borderImageSel->moveTo (QPoint (0, 0)); + + auto *environ = mainWindow->commandEnvironment (); + auto *macroCmd = new kpMacroCommand (commandName, environ); + + // (must resize doc _before_ SetDocumentToSelectionImageCommand in case + // doc needs to gets bigger - else selection image may not fit) + macroCmd->addCommand (resizeDocCommand); + +#if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "\tis pixmap sel"; + qCDebug(kpLogImagelib) << "\tcreating SetImage cmd"; +#endif + macroCmd->addCommand (new SetDocumentToSelectionImageCommand (environ)); + + + mainWindow->addImageOrSelectionCommand ( + macroCmd, + true/*add create cmd*/, + false/*don't add pull cmd*/); + + + // Add selection border back for convenience. + mainWindow->commandHistory ()->addCommand ( + new kpToolSelectionCreateCommand ( + i18n ("Selection: Create"), + *borderImageSel, + mainWindow->commandEnvironment ())); + + + delete borderImageSel; +} diff --git a/imagelib/transforms/kpTransformCrop_TextSelection.cpp b/imagelib/transforms/kpTransformCrop_TextSelection.cpp new file mode 100644 index 0000000..f629b31 --- /dev/null +++ b/imagelib/transforms/kpTransformCrop_TextSelection.cpp @@ -0,0 +1,76 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_CROP 0 + + +#include "kpTransformCrop.h" +#include "kpTransformCropPrivate.h" + +#include "commands/imagelib/effects/kpEffectClearCommand.h" +#include "commands/kpMacroCommand.h" +#include "mainWindow/kpMainWindow.h" +#include "commands/tools/selection/kpToolSelectionMoveCommand.h" + + +void kpTransformCrop_TextSelection (kpMainWindow *mainWindow, + const QString &commandName, kpCommand *resizeDocCommand) +{ + kpCommandEnvironment *environ = mainWindow->commandEnvironment (); + + + auto *macroCmd = new kpMacroCommand (commandName, environ); + + macroCmd->addCommand (resizeDocCommand); + +#if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "\tisText"; + qCDebug(kpLogImagelib) << "\tclearing doc with trans cmd"; +#endif + macroCmd->addCommand ( + new kpEffectClearCommand ( + false/*act on doc*/, + kpColor::Transparent, + environ)); + +#if DEBUG_KP_TOOL_CROP + qCDebug(kpLogImagelib) << "\tmoving sel to (0,0) cmd"; +#endif + kpToolSelectionMoveCommand *moveCmd = + new kpToolSelectionMoveCommand ( + QString()/*uninteresting child of macro cmd*/, + environ); + moveCmd->moveTo (QPoint (0, 0), true/*move on exec, not now*/); + moveCmd->finalize (); + macroCmd->addCommand (moveCmd); + + + mainWindow->addImageOrSelectionCommand ( + macroCmd, + true/*add create cmd*/, + true/*add create content cmd*/); +} diff --git a/kolourpaint.cpp b/kolourpaint.cpp new file mode 100644 index 0000000..f49dc80 --- /dev/null +++ b/kolourpaint.cpp @@ -0,0 +1,138 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2015,2016 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include + +#include "kpVersion.h" +#include "mainWindow/kpMainWindow.h" +#include + +#include +#include +#include +#include +#include + +int main(int argc, char *argv []) +{ + QApplication app(argc, argv); + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); + + KLocalizedString::setApplicationDomain("kolourpaint"); + + KAboutData aboutData + ( + QStringLiteral("kolourpaint"), + i18n("KolourPaint"), + QStringLiteral(KOLOURPAINT_VERSION_STRING), + i18n("Paint Program by KDE"), + KAboutLicense::Custom, + QString(), // copyright statement - see license instead + QString(), // other text + QStringLiteral("http://www.kolourpaint.org/") // home page + ); + + // (this is _not_ the same as KAboutLicense::BSD) + aboutData.setLicenseText(i18n(kpLicenseText)); + aboutData.setDesktopFileName(QStringLiteral("org.kde.kolourpaint")); + + // Please add yourself here if you feel you're missing. + // SYNC: with AUTHORS + + aboutData.addAuthor(i18n("Clarence Dang"), i18n("Project Founder"), QStringLiteral("dang@kde.org")); + + aboutData.addAuthor(i18n("Thurston Dang"), i18n("Chief Investigator"), + QStringLiteral("thurston_dang@users.sourceforge.net")); + + aboutData.addAuthor(i18n("Martin Koller"), i18n("Scanning Support, Alpha Support, Current Maintainer"), + QStringLiteral("kollix@aon.at")); + + aboutData.addAuthor(i18n("Kristof Borrey"), i18n("Icons"), QStringLiteral("borrey@kde.org")); + aboutData.addAuthor(i18n("Tasuku Suzuki"), i18n("InputMethod Support"), QStringLiteral("stasuku@gmail.com")); + aboutData.addAuthor(i18n("Kazuki Ohta"), i18n("InputMethod Support"), QStringLiteral("mover@hct.zaq.ne.jp")); + aboutData.addAuthor(i18n("Nuno Pinheiro"), i18n("Icons"), QStringLiteral("nf.pinheiro@gmail.com")); + aboutData.addAuthor(i18n("Danny Allen"), i18n("Icons"), QStringLiteral("dannya40uk@yahoo.co.uk")); + aboutData.addAuthor(i18n("Mike Gashler"), i18n("Image Effects"), QStringLiteral("gashlerm@yahoo.com")); + + aboutData.addAuthor(i18n("Laurent Montel"), i18n("KDE 4 Porting"), QStringLiteral("montel@kde.org")); + aboutData.addAuthor(i18n("Christoph Feck"), i18n("KF 5 Porting"), QStringLiteral("cfeck@kde.org")); + + aboutData.addCredit(i18n("Thanks to the many others who have helped to make this program possible.")); + + QCommandLineParser cmdLine; + KAboutData::setApplicationData(aboutData); + QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("kolourpaint"), QApplication::windowIcon())); + cmdLine.addPositionalArgument(QStringLiteral("files"), i18n("Image files to open, optionally"), QStringLiteral("[files...]")); + + aboutData.setupCommandLine(&cmdLine); + cmdLine.addOption(QCommandLineOption("mimetypes", i18n("List all readable image MIME types"))); + cmdLine.process(app); + aboutData.processCommandLine(&cmdLine); + + // produce a list of MimeTypes which kolourpaint can handle (can be used inside the .desktop file) + if ( cmdLine.isSet("mimetypes") ) + { + foreach (const QByteArray &type, QImageReader::supportedMimeTypes()) + { + if ( !type.isEmpty() ) + printf("%s;", type.constData()); + } + + printf("\n"); + + return 0; + } + + if ( app.isSessionRestored() ) + { + // Creates a kpMainWindow using the default constructor and then + // calls kpMainWindow::readProperties(). + kRestoreMainWindows(); + } + else + { + kpMainWindow *mainWindow; + QStringList args = cmdLine.positionalArguments(); + + if ( args.count() >= 1 ) + { + for (int i = 0; i < args.count(); i++) + { + mainWindow = new kpMainWindow(QUrl::fromUserInput(args[i], QDir::currentPath(), QUrl::AssumeLocalFile)); + mainWindow->show(); + } + } + else + { + mainWindow = new kpMainWindow(); + mainWindow->show(); + } + } + + return QApplication::exec(); +} diff --git a/kolourpaint.qrc b/kolourpaint.qrc new file mode 100644 index 0000000..98b7fb8 --- /dev/null +++ b/kolourpaint.qrc @@ -0,0 +1,19 @@ + + + + pics/custom/colorbutton_swap_16x16.png + pics/custom/color_transparent_26x26.png + pics/custom/image_rotate_anticlockwise.png + pics/custom/image_rotate_clockwise.png + pics/custom/image_skew_horizontal.png + pics/custom/image_skew_vertical.png + pics/custom/option_opaque.png + pics/custom/option_transparent.png + pics/custom/resize.png + pics/custom/scale.png + pics/custom/smooth_scale.png + pics/custom/tool_spraycan_17x17.png + pics/custom/tool_spraycan_29x29.png + pics/custom/tool_spraycan_9x9.png + + diff --git a/kolourpaintui.rc b/kolourpaintui.rc new file mode 100644 index 0000000..0f3580c --- /dev/null +++ b/kolourpaintui.rc @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + &View + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + &Image + + + + + + + + + + + + + + + + + + + + + + + + + + + &Colors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Main Toolbar + + + + + + + + + + + + + + + + +Selection Tool RMB Menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/kpDefs.h b/kpDefs.h new file mode 100644 index 0000000..239ed49 --- /dev/null +++ b/kpDefs.h @@ -0,0 +1,138 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_DEFS_H +#define KP_DEFS_H + + +#include + +#include +#include +#include +#include + + +// approx. 2896x2896x32bpp or 3344x3344x24bpp (TODO: 24==32?) or 4096*4096x16bpp +#define KP_BIG_IMAGE_SIZE (32 * 1048576) + + +#define KP_INVALID_POINT QPoint (INT_MIN / 8, INT_MIN / 8) +#define KP_INVALID_WIDTH (INT_MIN / 8) +#define KP_INVALID_HEIGHT (INT_MIN / 8) +#define KP_INVALID_SIZE QSize (INT_MIN / 8, INT_MIN / 8) + + +#define KP_INCHES_PER_METER (100 / 2.54) +#define KP_MILLIMETERS_PER_INCH 25.4 + + +// +// Settings +// + +#define kpSettingsGroupRecentFiles "Recent Files" + +#define kpSettingsGroupGeneral "General Settings" +#define kpSettingFirstTime "First Time" +#define kpSettingShowGrid "Show Grid" +#define kpSettingShowPath "Show Path" +#define kpSettingDrawAntiAliased "Draw AntiAliased" +#define kpSettingColorSimilarity "Color Similarity" +#define kpSettingDitherOnOpen "Dither on Open if Screen is 15/16bpp and Image Num Colors More Than" +#define kpSettingPrintImageCenteredOnPage "Print Image Centered On Page" +#define kpSettingOpenImagesInSameWindow "Open Images in the Same Window" + +#define kpSettingsGroupFileSaveAs "File/Save As" +#define kpSettingsGroupFileExport "File/Export" +#define kpSettingsGroupEditCopyTo "Edit/Copy To" + +#define kpSettingForcedMimeType "Forced MimeType" +#define kpSettingForcedColorDepth "Forced Color Depth" +#define kpSettingForcedDither "Forced Dither" +#define kpSettingForcedQuality "Forced Quality" + +#define kpSettingLastDocSize "Last Document Size" + +#define kpSettingMoreEffectsLastEffect "More Effects - Last Effect" + +#define kpSettingsGroupUndoRedo "Undo/Redo Settings" +#define kpSettingUndoMinLimit "Min Limit" +#define kpSettingUndoMaxLimit "Max Limit" +#define kpSettingUndoMaxLimitSizeLimit "Max Limit Size Limit" + + +#define kpSettingsGroupThumbnail "Thumbnail Settings" +#define kpSettingThumbnailShown "Shown" +#define kpSettingThumbnailGeometry "Geometry" +#define kpSettingThumbnailZoomed "Zoomed" +#define kpSettingThumbnailShowRectangle "ShowRectangle" + + +#define kpSettingsGroupPreviewSave "Save Preview Settings" +#define kpSettingPreviewSaveGeometry "Geometry" +#define kpSettingPreviewSaveUpdateDelay "Update Delay" + + +#define kpSettingsGroupTools "Tool Settings" +#define kpSettingLastTool "Last Used Tool" +#define kpSettingToolBoxIconSize "Tool Box Icon Size" + + +#define kpSettingsGroupText "Text Settings" +#define kpSettingFontFamily "Font Family" +#define kpSettingFontSize "Font Size" +#define kpSettingBold "Bold" +#define kpSettingItalic "Italic" +#define kpSettingUnderline "Underline" +#define kpSettingStrikeThru "Strike Thru" + + +#define kpSettingsGroupFlattenEffect "Flatten Effect Settings" +#define kpSettingFlattenEffectColor1 "Color1" +#define kpSettingFlattenEffectColor2 "Color2" + + +// +// Session Restore Setting +// + +// URL of the document in the main window. +// +// This key only exists if the document does. If it exists, it can be empty. +// The URL need not point to a file that exists e.g. "kolourpaint doesnotexist.png". +#define kpSessionSettingDocumentUrl QString::fromLatin1 ("Session Document Url") + +// The size of a document which is not from a URL e.g. "kolourpaint doesnotexist.png". +// This key does not exist for documents from URLs. +#define kpSessionSettingNotFromUrlDocumentSize QString::fromLatin1 ("Session Not-From-Url Document Size") + + +#endif // KP_DEFS_H + + diff --git a/kpLogCategories.cpp b/kpLogCategories.cpp new file mode 100644 index 0000000..c6a6fe2 --- /dev/null +++ b/kpLogCategories.cpp @@ -0,0 +1,41 @@ +/* + Copyright (c) 2016 Martin Sandsmark + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "kpLogCategories.h" + +Q_LOGGING_CATEGORY(kpLogMisc, "kp.misc") +Q_LOGGING_CATEGORY(kpLogDialogs, "kp.dialogs") +Q_LOGGING_CATEGORY(kpLogCommands, "kp.commands") +Q_LOGGING_CATEGORY(kpLogDocument, "kp.document") +Q_LOGGING_CATEGORY(kpLogTools, "kp.tools") +Q_LOGGING_CATEGORY(kpLogViews, "kp.views") +Q_LOGGING_CATEGORY(kpLogEnvironments, "kp.environments") +Q_LOGGING_CATEGORY(kpLogPixmapfx, "kp.pixmapfx") +Q_LOGGING_CATEGORY(kpLogWidgets, "kp.widgets") +Q_LOGGING_CATEGORY(kpLogMainWindow, "kp.mainwindow") +Q_LOGGING_CATEGORY(kpLogLayers, "kp.layers") +Q_LOGGING_CATEGORY(kpLogImagelib, "kp.imagelib") + diff --git a/kpLogCategories.h b/kpLogCategories.h new file mode 100644 index 0000000..74d9e34 --- /dev/null +++ b/kpLogCategories.h @@ -0,0 +1,46 @@ +/* + Copyright (c) 2016 Martin Sandsmark + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef KPLOGCATEGORIES_H +#define KPLOGCATEGORIES_H + +#include + +Q_DECLARE_LOGGING_CATEGORY(kpLogMisc) +Q_DECLARE_LOGGING_CATEGORY(kpLogDialogs) +Q_DECLARE_LOGGING_CATEGORY(kpLogCommands) +Q_DECLARE_LOGGING_CATEGORY(kpLogDocument) +Q_DECLARE_LOGGING_CATEGORY(kpLogTools) +Q_DECLARE_LOGGING_CATEGORY(kpLogViews) +Q_DECLARE_LOGGING_CATEGORY(kpLogEnvironments) +Q_DECLARE_LOGGING_CATEGORY(kpLogPixmapfx) +Q_DECLARE_LOGGING_CATEGORY(kpLogWidgets) +Q_DECLARE_LOGGING_CATEGORY(kpLogMainWindow) +Q_DECLARE_LOGGING_CATEGORY(kpLogLayers) +Q_DECLARE_LOGGING_CATEGORY(kpLogImagelib) + +#endif + diff --git a/kpThumbnail.cpp b/kpThumbnail.cpp new file mode 100644 index 0000000..206d0ee --- /dev/null +++ b/kpThumbnail.cpp @@ -0,0 +1,183 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_THUMBNAIL 0 + + +#include "kpThumbnail.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "views/kpThumbnailView.h" +#include "tools/kpTool.h" + +#include "kpLogCategories.h" +#include + +#include +#include + + +struct kpThumbnailPrivate +{ + kpMainWindow *mainWindow; + kpThumbnailView *view; + QHBoxLayout *lay; +}; + +kpThumbnail::kpThumbnail (kpMainWindow *parent) + : kpSubWindow (parent), + d (new kpThumbnailPrivate ()) +{ + Q_ASSERT (parent); + + d->mainWindow = parent; + d->view = nullptr; + d->lay = new QHBoxLayout (this); + + + setMinimumSize (64, 64); + + + updateCaption (); +} + +kpThumbnail::~kpThumbnail () +{ + delete d; +} + + +// public +kpThumbnailView *kpThumbnail::view () const +{ + return d->view; +} + +// public +void kpThumbnail::setView (kpThumbnailView *view) +{ +#if DEBUG_KP_THUMBNAIL + qCDebug(kpLogMisc) << "kpThumbnail::setView(" << view << ")"; +#endif + + if (d->view == view) { + return; + } + + + if (d->view) + { + disconnect (d->view, &kpThumbnailView::destroyed, + this, &kpThumbnail::slotViewDestroyed); + + disconnect (d->view, &kpThumbnailView::zoomLevelChanged, + this, &kpThumbnail::updateCaption); + + d->lay->removeWidget (d->view); + } + + d->view = view; + + if (d->view) + { + connect (d->view, &kpThumbnailView::destroyed, + this, &kpThumbnail::slotViewDestroyed); + + connect (d->view, &kpThumbnailView::zoomLevelChanged, + this, &kpThumbnail::updateCaption); + + Q_ASSERT (d->view->parent () == this); + d->lay->addWidget (d->view, Qt::AlignCenter); + + d->view->show (); + } + + updateCaption (); +} + + +// public slot +void kpThumbnail::updateCaption () +{ + setWindowTitle (view () ? view ()->caption () : i18nc ("@title:window", "Thumbnail")); +} + + +// protected slot +void kpThumbnail::slotViewDestroyed () +{ +#if DEBUG_KP_THUMBNAIL + qCDebug(kpLogMisc) << "kpThumbnail::slotViewDestroyed()"; +#endif + + d->view = nullptr; + updateCaption (); +} + + +// protected virtual [base QWidget] +void kpThumbnail::resizeEvent (QResizeEvent *e) +{ +#if DEBUG_KP_THUMBNAIL + qCDebug(kpLogMisc) << "kpThumbnail::resizeEvent(" << width () + << "," << height () << ")"; +#endif + + QWidget::resizeEvent (e); + + // updateVariableZoom (); TODO: is below a good idea since this commented out? + + if (d->mainWindow) + { + d->mainWindow->notifyThumbnailGeometryChanged (); + + if (d->mainWindow->tool ()) { + d->mainWindow->tool ()->somethingBelowTheCursorChanged (); + } + } +} + +// protected virtual [base QWidget] +void kpThumbnail::moveEvent (QMoveEvent * /*e*/) +{ + if (d->mainWindow) { + d->mainWindow->notifyThumbnailGeometryChanged (); + } +} + +// protected virtual [base QWidget] +void kpThumbnail::closeEvent (QCloseEvent *e) +{ + QWidget::closeEvent (e); + + emit windowClosed (); +} + + diff --git a/kpThumbnail.h b/kpThumbnail.h new file mode 100644 index 0000000..d612c9b --- /dev/null +++ b/kpThumbnail.h @@ -0,0 +1,76 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_THUMBNAIL_H +#define KP_THUMBNAIL_H + + +#include "generic/widgets/kpSubWindow.h" + + +class QMoveEvent; +class QResizeEvent; + +class kpMainWindow; +class kpThumbnailView; + + +struct kpThumbnailPrivate; + +class kpThumbnail : public kpSubWindow +{ +Q_OBJECT + +public: + kpThumbnail (kpMainWindow *parent); + ~kpThumbnail () override; + +public: + kpThumbnailView *view () const; + void setView (kpThumbnailView *view); + +public slots: + void updateCaption (); + +protected slots: + void slotViewDestroyed (); + +protected: + void resizeEvent (QResizeEvent *e) override; + void moveEvent (QMoveEvent *e) override; + void closeEvent (QCloseEvent *e) override; + +signals: + void windowClosed (); + +private: + kpThumbnailPrivate * const d; +}; + + +#endif // KP_THUMBNAIL_H diff --git a/kpViewScrollableContainer.cpp b/kpViewScrollableContainer.cpp new file mode 100644 index 0000000..48a4274 --- /dev/null +++ b/kpViewScrollableContainer.cpp @@ -0,0 +1,1209 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_VIEW_SCROLLABLE_CONTAINER 0 + +#include "kpViewScrollableContainer.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" +#include + +#include "kpDefs.h" +#include "pixmapfx/kpPixmapFX.h" +#include "views/kpView.h" +#include "generic/kpWidgetMapper.h" + +//--------------------------------------------------------------------- + +// (Pulled from out of Thurston's hat) +static const int DragScrollLeftTopMargin = 0; +static const int DragScrollRightBottomMargin = 16; // scrollbarish +static const int DragScrollInterval = 150; +static const int DragScrollInitialInterval = DragScrollInterval * 2; +static const int DragScrollNumPixels = 10; +static const int DragDistanceFromRectMaxFor1stMultiplier = 50; +static const int DragDistanceFromRectMaxFor2ndMultiplier = 100; + +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- +// a transparent widget above all others in the viewport used only while resizing the document +// to be able to show the resize lines above everything else + +class kpOverlay : public QWidget +{ + public: + kpOverlay(QWidget *parent, kpViewScrollableContainer *container) + : QWidget(parent), m_container(container) + { + } + + void paintEvent(QPaintEvent *) override + { + m_container->drawResizeLines(); + } + + private: + kpViewScrollableContainer *m_container; + +}; + +//--------------------------------------------------------------------- + +const int kpGrip::Size = 5; + +//--------------------------------------------------------------------- + +kpGrip::kpGrip (GripType type, QWidget *parent) + : QWidget(parent), + m_type (type), + m_startPoint (KP_INVALID_POINT), + m_currentPoint (KP_INVALID_POINT), + m_shouldReleaseMouseButtons (false) +{ + setCursor(cursorForType(m_type)); + + setMouseTracking(true); // mouseMoveEvent's even when no mousebtn down + + setAutoFillBackground(true); + setBackgroundRole(QPalette::Highlight); + + setFixedSize(kpGrip::Size, kpGrip::Size); +} + +//--------------------------------------------------------------------- + +// public +kpGrip::GripType kpGrip::type () const +{ + return m_type; +} + +//--------------------------------------------------------------------- + +// public static +QCursor kpGrip::cursorForType (GripType type) +{ + switch (type) + { + case kpGrip::Bottom: + return Qt::SizeVerCursor; + + case kpGrip::Right: + return Qt::SizeHorCursor; + + case kpGrip::BottomRight: + return Qt::SizeFDiagCursor; + } + + return Qt::ArrowCursor; +} + +//--------------------------------------------------------------------- + +// public +bool kpGrip::containsCursor() +{ + return isVisible() && + QRect(mapToGlobal(rect().topLeft()), + mapToGlobal(rect().bottomRight())).contains(QCursor::pos()); +} + +//--------------------------------------------------------------------- + +// public +bool kpGrip::isDrawing () const +{ + return (m_startPoint != KP_INVALID_POINT); +} + +//--------------------------------------------------------------------- + +// public +QString kpGrip::haventBegunDrawUserMessage () const +{ + return i18n ("Left drag the handle to resize the image."); +} + +//--------------------------------------------------------------------- + +// public +QString kpGrip::userMessage () const +{ + return m_userMessage; +} + +//--------------------------------------------------------------------- + +// public +void kpGrip::setUserMessage (const QString &message) +{ + // Don't do NOP checking here since another grip might have changed + // the message so an apparent NOP for this grip is not a NOP in the + // global sense (kpViewScrollableContainer::slotGripStatusMessageChanged()). + + m_userMessage = message; + emit statusMessageChanged (message); +} + +//--------------------------------------------------------------------- + +// protected +void kpGrip::cancel () +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "kpGrip::cancel()"; +#endif + if (m_currentPoint == KP_INVALID_POINT) { + return; + } + + m_startPoint = KP_INVALID_POINT; + m_currentPoint = KP_INVALID_POINT; + + setUserMessage (i18n ("Resize Image: Let go of all the mouse buttons.")); + setCursor (Qt::ArrowCursor); + m_shouldReleaseMouseButtons = true; + + emit cancelledDraw (); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpGrip::keyReleaseEvent (QKeyEvent *e) +{ + if (m_startPoint != KP_INVALID_POINT && + e->key () == Qt::Key_Escape) + { + cancel (); + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpGrip::mousePressEvent (QMouseEvent *e) +{ + if (m_startPoint == KP_INVALID_POINT && + (e->buttons () & Qt::MouseButtonMask) == Qt::LeftButton) + { + m_startPoint = e->pos (); + m_currentPoint = e->pos (); + emit beganDraw (); + setFocus(); // allow to receive keyboard events to be able to handle ESC + + setUserMessage (i18n ("Resize Image: Right click to cancel.")); + setCursor (cursorForType (m_type)); + } + else + { + if (m_startPoint != KP_INVALID_POINT) { + cancel (); + } + } +} + +//--------------------------------------------------------------------- + +// public +QPoint kpGrip::viewDeltaPoint () const +{ + if (m_startPoint == KP_INVALID_POINT) { + return KP_INVALID_POINT; + } + + const QPoint point = mapFromGlobal (QCursor::pos ()); + + // TODO: this is getting out of sync with m_currentPoint + + return {(m_type & kpGrip::Right) ? point.x () - m_startPoint.x () : 0, + (m_type & kpGrip::Bottom) ? point.y () - m_startPoint.y () : 0}; + +} + +//--------------------------------------------------------------------- + +// public +void kpGrip::mouseMovedTo (const QPoint &point, bool dueToDragScroll) +{ + if (m_startPoint == KP_INVALID_POINT) { + return; + } + + m_currentPoint = point; + + emit continuedDraw (((m_type & kpGrip::Right) ? point.x () - m_startPoint.x () : 0), + ((m_type & kpGrip::Bottom) ? point.y () - m_startPoint.y () : 0), + dueToDragScroll); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpGrip::mouseMoveEvent (QMouseEvent *e) +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "kpGrip::mouseMoveEvent() m_startPoint=" << m_startPoint + << " stateAfter: buttons=" << (int *) (int) e->buttons (); +#endif + + if (m_startPoint == KP_INVALID_POINT) + { + if ((e->buttons () & Qt::MouseButtonMask) == 0) { + setUserMessage (haventBegunDrawUserMessage ()); + } + return; + } + + mouseMovedTo (e->pos (), false/*not due to drag scroll*/); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpGrip::mouseReleaseEvent (QMouseEvent *e) +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "kpGrip::mouseReleaseEvent() m_startPoint=" << m_startPoint + << " stateAfter: buttons=" << (int *) (int) e->buttons (); +#endif + + if (m_startPoint != KP_INVALID_POINT) + { + const int dx = m_currentPoint.x () - m_startPoint.x (), + dy = m_currentPoint.y () - m_startPoint.y (); + + m_currentPoint = KP_INVALID_POINT; + m_startPoint = KP_INVALID_POINT; + + emit endedDraw ((m_type & kpGrip::Right) ? dx : 0, + (m_type & kpGrip::Bottom) ? dy : 0); + } + + if ((e->buttons () & Qt::MouseButtonMask) == 0) + { + m_shouldReleaseMouseButtons = false; + setUserMessage(QString()); + setCursor (cursorForType (m_type)); + + emit releasedAllButtons (); + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +void kpGrip::enterEvent (QEnterEvent * /*e*/) +#else +void kpGrip::enterEvent (QEvent * /*e*/) +#endif +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "kpGrip::enterEvent()" + << " m_startPoint=" << m_startPoint + << " shouldReleaseMouseButtons=" + << m_shouldReleaseMouseButtons; +#endif + + if (m_startPoint == KP_INVALID_POINT && + !m_shouldReleaseMouseButtons) + { + #if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "\tsending message"; + #endif + setUserMessage (haventBegunDrawUserMessage ()); + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpGrip::leaveEvent (QEvent * /*e*/) +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "kpGrip::leaveEvent()" + << " m_startPoint=" << m_startPoint + << " shouldReleaseMouseButtons=" + << m_shouldReleaseMouseButtons; +#endif + if (m_startPoint == KP_INVALID_POINT && + !m_shouldReleaseMouseButtons) + { + setUserMessage(QString()); + } +} + +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- +//--------------------------------------------------------------------- + +// TODO: Are we checking for m_view == 0 often enough? Also an issue in KDE 3. +kpViewScrollableContainer::kpViewScrollableContainer(QWidget *parent) + : QScrollArea(parent), + m_view(nullptr), m_overlay(new kpOverlay(viewport(), this)), + m_docResizingGrip (nullptr), + m_dragScrollTimer (new QTimer (this)), + m_zoomLevel (100), + m_scrollTimerRunOnce (false), + m_resizeRoundedLastViewX (-1), m_resizeRoundedLastViewY (-1), + m_resizeRoundedLastViewDX (0), m_resizeRoundedLastViewDY (0), + m_haveMovedFromOriginalDocSize (false) + +{ + // the base widget holding the documents view plus the resize grips + setWidget(new QWidget(viewport())); + + m_bottomGrip = new kpGrip(kpGrip::Bottom, widget()); + m_rightGrip = new kpGrip(kpGrip::Right, widget()); + m_bottomRightGrip = new kpGrip(kpGrip::BottomRight, widget()); + + m_bottomGrip->setObjectName(QStringLiteral("Bottom Grip")); + m_rightGrip->setObjectName(QStringLiteral("Right Grip")); + m_bottomRightGrip->setObjectName(QStringLiteral("BottomRight Grip")); + + m_bottomGrip->hide (); + connectGripSignals (m_bottomGrip); + + m_rightGrip->hide (); + connectGripSignals (m_rightGrip); + + m_bottomRightGrip->hide (); + connectGripSignals (m_bottomRightGrip); + + + connect (horizontalScrollBar(), &QScrollBar::valueChanged, + this, &kpViewScrollableContainer::slotContentsMoved); + + connect (verticalScrollBar(), &QScrollBar::valueChanged, + this, &kpViewScrollableContainer::slotContentsMoved); + + connect (m_dragScrollTimer, &QTimer::timeout, this, [this]{slotDragScroll();}); + + m_overlay->hide(); +} + +//--------------------------------------------------------------------- + +// protected +void kpViewScrollableContainer::connectGripSignals (kpGrip *grip) +{ + connect (grip, &kpGrip::beganDraw, + this, &kpViewScrollableContainer::slotGripBeganDraw); + + connect (grip, &kpGrip::continuedDraw, + this, &kpViewScrollableContainer::slotGripContinuedDraw); + + connect (grip, &kpGrip::cancelledDraw, + this, &kpViewScrollableContainer::slotGripCancelledDraw); + + connect (grip, &kpGrip::endedDraw, + this, &kpViewScrollableContainer::slotGripEndedDraw); + + connect (grip, &kpGrip::statusMessageChanged, + this, &kpViewScrollableContainer::slotGripStatusMessageChanged); + + connect (grip, &kpGrip::releasedAllButtons, + this, &kpViewScrollableContainer::recalculateStatusMessage); +} + +//--------------------------------------------------------------------- + +// public +QSize kpViewScrollableContainer::newDocSize () const +{ + return newDocSize (m_resizeRoundedLastViewDX, + m_resizeRoundedLastViewDY); +} + +//--------------------------------------------------------------------- + +// public +bool kpViewScrollableContainer::haveMovedFromOriginalDocSize () const +{ + return m_haveMovedFromOriginalDocSize; +} + +//--------------------------------------------------------------------- + +// public +QString kpViewScrollableContainer::statusMessage () const +{ + return m_gripStatusMessage; +} + +//--------------------------------------------------------------------- + +// public +void kpViewScrollableContainer::clearStatusMessage () +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER && 1 + qCDebug(kpLogMisc) << "kpViewScrollableContainer::clearStatusMessage()"; +#endif + m_bottomRightGrip->setUserMessage(QString()); + m_bottomGrip->setUserMessage(QString()); + m_rightGrip->setUserMessage(QString()); +} + +//--------------------------------------------------------------------- + +// protected +QSize kpViewScrollableContainer::newDocSize (int viewDX, int viewDY) const +{ + if (!m_view) { + return {}; + } + + if (!docResizingGrip ()) { + return {}; + } + + const int docX = static_cast (m_view->transformViewToDocX (m_view->width () + viewDX)); + const int docY = static_cast (m_view->transformViewToDocY (m_view->height () + viewDY)); + + return {qMax (1, docX), qMax (1, docY)}; +} + +//--------------------------------------------------------------------- + +// protected +void kpViewScrollableContainer::calculateDocResizingGrip () +{ + if (m_bottomRightGrip->isDrawing ()) { + m_docResizingGrip = m_bottomRightGrip; + } + else if (m_bottomGrip->isDrawing ()) { + m_docResizingGrip = m_bottomGrip; + } + else if (m_rightGrip->isDrawing ()) { + m_docResizingGrip = m_rightGrip; + } + else { + m_docResizingGrip = nullptr; + } +} + +//--------------------------------------------------------------------- + +// protected +kpGrip *kpViewScrollableContainer::docResizingGrip () const +{ + return m_docResizingGrip; +} + +//--------------------------------------------------------------------- + +// protected +int kpViewScrollableContainer::bottomResizeLineWidth () const +{ + if (!docResizingGrip ()) { + return -1; + } + + if (!m_view) { + return -1; + } + + if (docResizingGrip ()->type () & kpGrip::Bottom) { + return qMax (m_view->zoomLevelY () / 100, 1); + } + + return 1; +} + +//--------------------------------------------------------------------- + +// protected +int kpViewScrollableContainer::rightResizeLineWidth () const +{ + if (!docResizingGrip ()) { + return -1; + } + + if (!m_view) { + return -1; + } + + if (docResizingGrip ()->type () & kpGrip::Right) { + return qMax (m_view->zoomLevelX () / 100, 1); + } + + return 1; +} + +//--------------------------------------------------------------------- + +// protected +QRect kpViewScrollableContainer::bottomResizeLineRect () const +{ + if (m_resizeRoundedLastViewX < 0 || m_resizeRoundedLastViewY < 0) { + return {}; + } + + QRect visibleArea = QRect(QPoint(horizontalScrollBar()->value(),verticalScrollBar()->value()), viewport()->size()); + + return QRect (QPoint (0, + m_resizeRoundedLastViewY), + QPoint (m_resizeRoundedLastViewX - 1, + m_resizeRoundedLastViewY + bottomResizeLineWidth () - 1)).intersected(visibleArea); +} + +//--------------------------------------------------------------------- + +// protected +QRect kpViewScrollableContainer::rightResizeLineRect () const +{ + if (m_resizeRoundedLastViewX < 0 || m_resizeRoundedLastViewY < 0) { + return {}; + } + + QRect visibleArea = QRect(QPoint(horizontalScrollBar()->value(),verticalScrollBar()->value()), viewport()->size()); + + return QRect (QPoint (m_resizeRoundedLastViewX, + 0), + QPoint (m_resizeRoundedLastViewX + rightResizeLineWidth () - 1, + m_resizeRoundedLastViewY - 1)).intersected(visibleArea); +} + +//--------------------------------------------------------------------- + +// protected +QRect kpViewScrollableContainer::bottomRightResizeLineRect () const +{ + if (m_resizeRoundedLastViewX < 0 || m_resizeRoundedLastViewY < 0) { + return {}; + } + + QRect visibleArea = QRect(QPoint(horizontalScrollBar()->value(),verticalScrollBar()->value()), viewport()->size()); + + return QRect (QPoint (m_resizeRoundedLastViewX, + m_resizeRoundedLastViewY), + QPoint (m_resizeRoundedLastViewX + rightResizeLineWidth () - 1, + m_resizeRoundedLastViewY + bottomResizeLineWidth () - 1)).intersected(visibleArea); +} + +//--------------------------------------------------------------------- + +// private +QRect kpViewScrollableContainer::mapViewToViewport (const QRect &viewRect) +{ + if (!viewRect.isValid ()) { + return {}; + } + + QRect ret = viewRect; + ret.translate (-horizontalScrollBar()->value() - viewport()->x(), -verticalScrollBar()->value() - viewport()->y()); + return ret; +} + +//--------------------------------------------------------------------- + +void kpViewScrollableContainer::drawResizeLines () +{ + static const char *stipple[] = + { + "8 8 2 1", + ". c #000000", + "# c #ffffff", + "....####", + "....####", + "....####", + "....####", + "####....", + "####....", + "####....", + "####...." + }; + + QPainter p(m_overlay); + p.setBackground(QPixmap(stipple)); + + const QRect rightRect = rightResizeLineRect(); + if ( rightRect.isValid() ) + { + QRect rect = mapViewToViewport(rightRect); + p.setBrushOrigin(rect.x(), rect.y()); + p.eraseRect(rect); + } + + const QRect bottomRect = bottomResizeLineRect(); + if ( bottomRect.isValid() ) + { + QRect rect = mapViewToViewport(bottomRect); + p.setBrushOrigin(rect.x(), rect.y()); + p.eraseRect(rect); + } + + const QRect bottomRightRect = bottomRightResizeLineRect (); + if ( bottomRightRect.isValid() ) + { + QRect rect = mapViewToViewport(bottomRightRect); + p.setBrushOrigin(rect.x(), rect.y()); + p.eraseRect(rect); + } +} + +//--------------------------------------------------------------------- + +// protected +void kpViewScrollableContainer::updateResizeLines (int viewX, int viewY, + int viewDX, int viewDY) +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER && 0 + qCDebug(kpLogMisc) << "kpViewScrollableContainer::updateResizeLines(" + << viewX << "," << viewY << ")" + << " oldViewX=" << m_resizeRoundedLastViewX + << " oldViewY=" << m_resizeRoundedLastViewY + << " viewDX=" << viewDX + << " viewDY=" << viewDY; +#endif + + + if (viewX >= 0 && viewY >= 0) + { + m_resizeRoundedLastViewX = + static_cast (m_view->transformDocToViewX (m_view->transformViewToDocX (viewX))); + + m_resizeRoundedLastViewY = + static_cast (m_view->transformDocToViewY (m_view->transformViewToDocY (viewY))); + + m_resizeRoundedLastViewDX = viewDX; + m_resizeRoundedLastViewDY = viewDY; + } + else + { + m_resizeRoundedLastViewX = -1; + m_resizeRoundedLastViewY = -1; + + m_resizeRoundedLastViewDX = 0; + m_resizeRoundedLastViewDY = 0; + } + + m_overlay->update(); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpViewScrollableContainer::slotGripBeganDraw () +{ + if (!m_view) { + return; + } + + m_overlay->resize(viewport()->size()); // make it cover whole viewport + m_overlay->move(viewport()->pos()); + m_overlay->show(); + m_overlay->raise(); // make it top-most + + calculateDocResizingGrip (); + + m_haveMovedFromOriginalDocSize = false; + + updateResizeLines (m_view->width (), m_view->height (), + 0/*viewDX*/, 0/*viewDY*/); + + emit beganDocResize (); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpViewScrollableContainer::slotGripContinuedDraw (int inViewDX, int inViewDY, + bool dueToDragScroll) +{ + int viewDX = inViewDX, + viewDY = inViewDY; + +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "kpViewScrollableContainer::slotGripContinuedDraw(" + << viewDX << "," << viewDY << ") size=" + << newDocSize (viewDX, viewDY) + << " dueToDragScroll=" << dueToDragScroll; +#endif + + if (!m_view) { + return; + } + + if (!dueToDragScroll && + beginDragScroll(m_view->zoomLevelX ())) + { + const QPoint newViewDeltaPoint = docResizingGrip ()->viewDeltaPoint (); + viewDX = newViewDeltaPoint.x (); + viewDY = newViewDeltaPoint.y (); + #if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "\tdrag scrolled - new view delta point=" + << newViewDeltaPoint; + #endif + } + + m_haveMovedFromOriginalDocSize = true; + + updateResizeLines (qMax (1, qMax (m_view->width () + viewDX, static_cast (m_view->transformDocToViewX (1)))), + qMax (1, qMax (m_view->height () + viewDY, static_cast (m_view->transformDocToViewY (1)))), + viewDX, viewDY); + + emit continuedDocResize (newDocSize ()); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpViewScrollableContainer::slotGripCancelledDraw () +{ + m_haveMovedFromOriginalDocSize = false; + + updateResizeLines (-1, -1, 0, 0); + + calculateDocResizingGrip (); + + emit cancelledDocResize (); + + endDragScroll (); + + m_overlay->hide(); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpViewScrollableContainer::slotGripEndedDraw (int viewDX, int viewDY) +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "kpViewScrollableContainer::slotGripEndedDraw(" + << viewDX << "," << viewDY << ") size=" + << newDocSize (viewDX, viewDY); +#endif + + if (!m_view) { + return; + } + + const QSize newSize = newDocSize (viewDX, viewDY); + + m_haveMovedFromOriginalDocSize = false; + + // must erase lines before view size changes + updateResizeLines (-1, -1, 0, 0); + + calculateDocResizingGrip (); + + emit endedDocResize (newSize); + + endDragScroll (); + + m_overlay->hide(); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpViewScrollableContainer::slotGripStatusMessageChanged (const QString &string) +{ + if (string == m_gripStatusMessage) { + return; + } + + m_gripStatusMessage = string; + emit statusMessageChanged (string); +} + +//--------------------------------------------------------------------- + +// public slot +void kpViewScrollableContainer::recalculateStatusMessage () +{ +#if DEBUG_KP_VIEW_SCROLLABLE_CONTAINER + qCDebug(kpLogMisc) << "kpViewScrollabelContainer::recalculateStatusMessage()"; + qCDebug(kpLogMisc) << "\tQCursor::pos=" << QCursor::pos () + << " global visibleRect=" + << kpWidgetMapper::toGlobal (this, + QRect(0, 0, viewport->width(), viewport->height())); +#endif + + // HACK: After dragging to a new size, handles move so that they are now + // under the mouse pointer but no mouseMoveEvent() is generated for + // any grip. This also handles the case of canceling over any + // grip. + // + if (kpWidgetMapper::toGlobal (this, + QRect(0, 0, viewport()->width(), viewport()->height())) + .contains (QCursor::pos ())) + { + if ( m_bottomRightGrip->containsCursor() ) + { + m_bottomRightGrip->setUserMessage (i18n ("Left drag the handle to resize the image.")); + } + else if ( m_bottomGrip->containsCursor() ) + { + m_bottomGrip->setUserMessage (i18n ("Left drag the handle to resize the image.")); + } + else if ( m_rightGrip->containsCursor() ) + { + m_rightGrip->setUserMessage (i18n ("Left drag the handle to resize the image.")); + } + else + { + clearStatusMessage (); + } + } + else + { + clearStatusMessage (); + } +} + +//--------------------------------------------------------------------- + +// protected slot +void kpViewScrollableContainer::slotContentsMoved () +{ + kpGrip *grip = docResizingGrip (); + if (grip) + { + grip->mouseMovedTo (grip->mapFromGlobal (QCursor::pos ()), + true/*moved due to drag scroll*/); + } + + m_overlay->move(viewport()->pos()); + m_overlay->update(); + + emit contentsMoved(); +} + +//--------------------------------------------------------------------- + +// protected +void kpViewScrollableContainer::disconnectViewSignals () +{ + disconnect (m_view, + static_cast(&kpView::sizeChanged), + this, &kpViewScrollableContainer::updateGrips); + + disconnect (m_view, &kpView::destroyed, + this, &kpViewScrollableContainer::slotViewDestroyed); +} + +//--------------------------------------------------------------------- + +// protected +void kpViewScrollableContainer::connectViewSignals () +{ + connect (m_view, + static_cast(&kpView::sizeChanged), + this, &kpViewScrollableContainer::updateGrips); + + connect (m_view, &kpView::destroyed, + this, &kpViewScrollableContainer::slotViewDestroyed); +} + +//--------------------------------------------------------------------- + +// public +kpView *kpViewScrollableContainer::view () const +{ + return m_view; +} + +//--------------------------------------------------------------------- + +// public +void kpViewScrollableContainer::setView (kpView *view) +{ + if (m_view == view) { + return; + } + + if (m_view) + { + disconnectViewSignals (); + } + + m_view = view; + + if ( m_view ) + { + m_view->setParent(widget()); + m_view->show(); + } + + updateGrips (); + + if (m_view) + { + connectViewSignals (); + } +} + +//--------------------------------------------------------------------- + +// public slot +void kpViewScrollableContainer::updateGrips () +{ + if (m_view) + { + widget()->resize(m_view->size() + m_bottomRightGrip->size()); + + // to make the grip more easily "touchable" make it as high as the view + m_rightGrip->setFixedHeight(m_view->height()); + m_rightGrip->move(m_view->width(), 0); + + // to make the grip more easily "touchable" make it as wide as the view + m_bottomGrip->setFixedWidth(m_view->width()); + m_bottomGrip->move(0, m_view->height ()); + + m_bottomRightGrip->move(m_view->width(), m_view->height()); + } + + m_bottomGrip->setHidden (m_view == nullptr); + m_rightGrip->setHidden (m_view == nullptr); + m_bottomRightGrip->setHidden (m_view == nullptr); + + recalculateStatusMessage (); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpViewScrollableContainer::slotViewDestroyed () +{ + m_view = nullptr; + updateGrips (); +} + +//--------------------------------------------------------------------- + +// public slot +bool kpViewScrollableContainer::beginDragScroll(int zoomLevel, bool *didSomething) +{ + if (didSomething) { + *didSomething = false; + } + + m_zoomLevel = zoomLevel; + + const QPoint p = mapFromGlobal (QCursor::pos ()); + + bool stopDragScroll = true; + bool scrolled = false; + + if (!noDragScrollRect ().contains (p)) + { + if (m_dragScrollTimer->isActive ()) + { + if (m_scrollTimerRunOnce) + { + scrolled = slotDragScroll (); + } + } + else + { + m_scrollTimerRunOnce = false; + m_dragScrollTimer->start (DragScrollInitialInterval); + } + + stopDragScroll = false; + } + + if (stopDragScroll) { + m_dragScrollTimer->stop (); + } + + if (didSomething) { + *didSomething = scrolled; + } + + return scrolled; +} + +//--------------------------------------------------------------------- + +// public slot +bool kpViewScrollableContainer::beginDragScroll(int zoomLevel) +{ + return beginDragScroll(zoomLevel, + nullptr/*don't want scrolled notification*/); +} + +//--------------------------------------------------------------------- + +// public slot +bool kpViewScrollableContainer::endDragScroll () +{ + if (m_dragScrollTimer->isActive ()) + { + m_dragScrollTimer->stop (); + return true; + } + + return false; +} + +//--------------------------------------------------------------------- + +static int distanceFromRectToMultiplier (int dist) +{ + if (dist < 0) { + return 0; + } + + if (dist < DragDistanceFromRectMaxFor1stMultiplier) { + return 1; + } + + if (dist < DragDistanceFromRectMaxFor2ndMultiplier) { + return 2; + } + + return 4; +} + +//--------------------------------------------------------------------- + +// protected slot +bool kpViewScrollableContainer::slotDragScroll (bool *didSomething) +{ + bool scrolled = false; + + if (didSomething) { + *didSomething = false; + } + + + const QRect rect = noDragScrollRect (); + const QPoint pos = mapFromGlobal (QCursor::pos ()); + + int dx = 0, dy = 0; + int dxMultiplier = 0, dyMultiplier = 0; + + if (pos.x () < rect.left ()) + { + dx = -DragScrollNumPixels; + dxMultiplier = distanceFromRectToMultiplier (rect.left () - pos.x ()); + } + else if (pos.x () > rect.right ()) + { + dx = +DragScrollNumPixels; + dxMultiplier = distanceFromRectToMultiplier (pos.x () - rect.right ()); + } + + if (pos.y () < rect.top ()) + { + dy = -DragScrollNumPixels; + dyMultiplier = distanceFromRectToMultiplier (rect.top () - pos.y ()); + } + else if (pos.y () > rect.bottom ()) + { + dy = +DragScrollNumPixels; + dyMultiplier = distanceFromRectToMultiplier (pos.y () - rect.bottom ()); + } + + dx *= dxMultiplier;// * qMax (1, m_zoomLevel / 100); + dy *= dyMultiplier;// * qMax (1, m_zoomLevel / 100); + + if (dx || dy) + { + const int oldContentsX = horizontalScrollBar()->value (), + oldContentsY = verticalScrollBar()->value (); + + horizontalScrollBar()->setValue(oldContentsX + dx); + verticalScrollBar()->setValue(oldContentsY + dy); + + scrolled = (oldContentsX != horizontalScrollBar()->value () || + oldContentsY != verticalScrollBar()->value ()); + + if (scrolled) + { + QRegion region = QRect (horizontalScrollBar()->value (), verticalScrollBar()->value (), + viewport()->width(), viewport()->height()); + region -= QRect (oldContentsX, oldContentsY, + viewport()->width(), viewport()->height()); + + // Repaint newly exposed region immediately to reduce tearing + // of scrollView. + m_view->repaint (region); + } + } + + m_dragScrollTimer->start (DragScrollInterval); + m_scrollTimerRunOnce = true; + + if (didSomething) { + *didSomething = scrolled; + } + + return scrolled; +} + + +//--------------------------------------------------------------------- + +// protected virtual +void kpViewScrollableContainer::wheelEvent (QWheelEvent *e) +{ + e->ignore (); + + if (m_view) { + m_view->wheelEvent (e); + } + + if ( !e->isAccepted() ) { + QScrollArea::wheelEvent(e); + } +} + +//--------------------------------------------------------------------------------- + +QRect kpViewScrollableContainer::noDragScrollRect () const +{ + return {DragScrollLeftTopMargin, DragScrollLeftTopMargin, + width () - DragScrollLeftTopMargin - DragScrollRightBottomMargin, + height () - DragScrollLeftTopMargin - DragScrollRightBottomMargin}; +} + +//--------------------------------------------------------------------- + +// protected virtual [base QScrollView] +void kpViewScrollableContainer::resizeEvent (QResizeEvent *e) +{ + QScrollArea::resizeEvent (e); + + emit resized (); +} + +//--------------------------------------------------------------------- + diff --git a/kpViewScrollableContainer.h b/kpViewScrollableContainer.h new file mode 100644 index 0000000..c579a5d --- /dev/null +++ b/kpViewScrollableContainer.h @@ -0,0 +1,217 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_VIEW_SCROLLABLE_CONTAINER_H +#define KP_VIEW_SCROLLABLE_CONTAINER_H + + +#include +#include +#include +#include + + +class QCursor; +class QEvent; +class QKeyEvent; +class QMouseEvent; +class QRect; +class QResizeEvent; +class QTimer; + +class kpView; +class kpOverlay; + + +//--------------------------------------------------------------------- + +// REFACTOR: refactor by sharing iface's with kpTool +class kpGrip : public QWidget +{ +Q_OBJECT + +public: + enum GripType + { + Right = 1, Bottom = 2, + BottomRight = Right | Bottom + }; + + kpGrip (GripType type, QWidget *parent); + + GripType type () const; + + static QCursor cursorForType (GripType type); + + bool containsCursor(); + + bool isDrawing () const; + + static const int Size; + +signals: + void beganDraw (); + void continuedDraw (int viewDX, int viewDY, bool dueToDragScroll); + void cancelledDraw (); + void endedDraw (int viewDX, int viewDY); + + void statusMessageChanged (const QString &string); + + void releasedAllButtons (); + +public: + QString haventBegunDrawUserMessage () const; + + QString userMessage () const; + void setUserMessage (const QString &message); + +protected: + void cancel (); + +protected: + void keyReleaseEvent (QKeyEvent *e) override; + void mousePressEvent (QMouseEvent *e) override; +public: + QPoint viewDeltaPoint () const; + void mouseMovedTo (const QPoint &point, bool dueToDragScroll); +protected: + void mouseMoveEvent (QMouseEvent *e) override; + void mouseReleaseEvent (QMouseEvent *e) override; + +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + void enterEvent (QEnterEvent *e) override; +#else + void enterEvent (QEvent *e) override; +#endif + void leaveEvent (QEvent *e) override; + +protected: + GripType m_type; + QPoint m_startPoint, m_currentPoint; + QString m_userMessage; + bool m_shouldReleaseMouseButtons; +}; + +//--------------------------------------------------------------------- + +class kpViewScrollableContainer : public QScrollArea +{ +Q_OBJECT + +public: + kpViewScrollableContainer(QWidget *parent); + + QSize newDocSize () const; + bool haveMovedFromOriginalDocSize () const; + QString statusMessage () const; + void clearStatusMessage (); + + kpView *view () const; + void setView (kpView *view); + + void drawResizeLines(); // public only for kpOverlay + +signals: + void contentsMoved(); + + void beganDocResize (); + void continuedDocResize (const QSize &size); + void cancelledDocResize (); + void endedDocResize (const QSize &size); + + // (string.isEmpty() if kpViewScrollableContainer has nothing to say) + void statusMessageChanged (const QString &string); + + void resized (); + +public slots: + void recalculateStatusMessage (); + + void updateGrips (); + + // TODO: Why the need for view's zoomLevel? We have the view() anyway. + bool beginDragScroll (int zoomLevel, + bool *didSomething); + bool beginDragScroll (int zoomLevel); + bool endDragScroll (); + +private: + void connectGripSignals (kpGrip *grip); + + QSize newDocSize (int viewDX, int viewDY) const; + + void calculateDocResizingGrip (); + kpGrip *docResizingGrip () const; + + int bottomResizeLineWidth () const; + int rightResizeLineWidth () const; + + QRect bottomResizeLineRect () const; + QRect rightResizeLineRect () const; + QRect bottomRightResizeLineRect () const; + + QRect mapViewToViewport (const QRect &viewRect); + + void updateResizeLines (int viewX, int viewY, + int viewDX, int viewDY); + + void disconnectViewSignals (); + void connectViewSignals (); + + QRect noDragScrollRect () const; + + void wheelEvent(QWheelEvent *e) override; + void resizeEvent(QResizeEvent *e) override; + +private slots: + void slotGripBeganDraw (); + void slotGripContinuedDraw (int viewDX, int viewDY, bool dueToScrollView); + void slotGripCancelledDraw (); + void slotGripEndedDraw (int viewDX, int viewDY); + + void slotGripStatusMessageChanged (const QString &string); + + void slotContentsMoved (); + void slotViewDestroyed (); + bool slotDragScroll (bool *didSomething = nullptr); + +private: + kpView *m_view; + kpOverlay *m_overlay; + kpGrip *m_bottomGrip, *m_rightGrip, *m_bottomRightGrip; + kpGrip *m_docResizingGrip; + QTimer *m_dragScrollTimer; + int m_zoomLevel; + bool m_scrollTimerRunOnce; + int m_resizeRoundedLastViewX, m_resizeRoundedLastViewY; + int m_resizeRoundedLastViewDX, m_resizeRoundedLastViewDY; + bool m_haveMovedFromOriginalDocSize; + QString m_gripStatusMessage; +}; + +#endif // KP_VIEW_SCROLLABLE_CONTAINER_H diff --git a/layers/selections/image/kpAbstractImageSelection.cpp b/layers/selections/image/kpAbstractImageSelection.cpp new file mode 100644 index 0000000..288dc92 --- /dev/null +++ b/layers/selections/image/kpAbstractImageSelection.cpp @@ -0,0 +1,589 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "layers/selections/image/kpAbstractImageSelection.h" + +#include +#include + +#include "kpLogCategories.h" + +//--------------------------------------------------------------------- + +// Returns whether can be set to have . +// In other words, this is the precondition for .setBaseImage(width () && + baseImage.height () == sel->height ()); +} + +//--------------------------------------------------------------------- + +struct kpAbstractImageSelectionPrivate +{ + kpImage baseImage; + + kpImageSelectionTransparency transparency; + + // The mask for the image, after selection transparency (a.k.a. background + // subtraction) is applied. + QBitmap transparencyMaskCache; // OPT: calculate lazily i.e. on-demand only +}; + +//--------------------------------------------------------------------- + +// protected +kpAbstractImageSelection::kpAbstractImageSelection ( + const kpImageSelectionTransparency &transparency) + : kpAbstractSelection (), + d (new kpAbstractImageSelectionPrivate ()) +{ + setTransparency (transparency); +} + +//--------------------------------------------------------------------- + +// protected +kpAbstractImageSelection::kpAbstractImageSelection (const QRect &rect, + const kpImage &baseImage, + const kpImageSelectionTransparency &transparency) + : kpAbstractSelection (rect), + d (new kpAbstractImageSelectionPrivate ()) +{ + // This also checks that and have compatible + // relative dimensions. + setBaseImage (baseImage); + + setTransparency (transparency); +} + +//--------------------------------------------------------------------- + +// protected +kpAbstractImageSelection::kpAbstractImageSelection (const QRect &rect, + const kpImageSelectionTransparency &transparency) + : kpAbstractSelection (rect), + d (new kpAbstractImageSelectionPrivate ()) +{ + setTransparency (transparency); +} + +//--------------------------------------------------------------------- + +// protected +kpAbstractImageSelection &kpAbstractImageSelection::operator= ( + const kpAbstractImageSelection &rhs) +{ + kpAbstractSelection::operator= (rhs); + + d->baseImage = rhs.d->baseImage; + + d->transparency = rhs.d->transparency; + d->transparencyMaskCache = rhs.d->transparencyMaskCache; + + return *this; +} + +//--------------------------------------------------------------------- + +// protected +kpAbstractImageSelection::~kpAbstractImageSelection () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// public virtual [base kpAbstractSelection] +bool kpAbstractImageSelection::readFromStream (QDataStream &stream) +{ + if (!kpAbstractSelection::readFromStream (stream )) { + return false; + } + + QImage qimage; + stream >> qimage; +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\timage: w=" << qimage.width () << " h=" << qimage.height () + << " depth=" << qimage.depth (); +#endif + + if (!qimage.isNull ()) + { + // Image size does not match the selection's dimensions? + // This call only accesses our superclass' fields, which have already + // been read in. + if (!::CanSetBaseImageTo (this, qimage)) + { + return false; + } + + d->baseImage = qimage; + } + // (was just a selection border in the clipboard, even though KolourPaint's + // GUI doesn't allow you to copy such a thing into the clipboard) + else { + d->baseImage = kpImage (); + } + + // TODO: Reset transparency mask? + // TODO: Concrete subclass need to emit changed()? + // [we can't since changed() must be called after all reading + // is complete and subclasses always call this method + // _before_ their reading logic] + return true; +} + +//--------------------------------------------------------------------- + +// public virtual [base kpAbstractSelection] +void kpAbstractImageSelection::writeToStream (QDataStream &stream) const +{ + kpAbstractSelection::writeToStream (stream); + + if (!d->baseImage.isNull ()) + { + const QImage image = d->baseImage; + #if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\twrote image rect=" << image.rect (); + #endif + stream << image; + } + else + { + #if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\twrote no image because no pixmap"; + #endif + stream << QImage (); + } +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +QString kpAbstractImageSelection::name () const +{ + return i18n ("Selection"); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpAbstractSelection] +kpCommandSize::SizeType kpAbstractImageSelection::size () const +{ + return kpAbstractSelection::size () + + kpCommandSize::ImageSize (d->baseImage) + + (d->transparencyMaskCache.width() * d->transparencyMaskCache.height()) / 8; +} + +//--------------------------------------------------------------------- + +// public +kpCommandSize::SizeType kpAbstractImageSelection::sizeWithoutImage () const +{ + return (size () - kpCommandSize::ImageSize (d->baseImage)); +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +int kpAbstractImageSelection::minimumWidth () const +{ + return 1; +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +int kpAbstractImageSelection::minimumHeight () const +{ + return 1; +} + +//--------------------------------------------------------------------- +// public virtual +QBitmap kpAbstractImageSelection::shapeBitmap (bool nullForRectangular) const +{ + (void) nullForRectangular; + + Q_ASSERT (boundingRect ().isValid ()); + + QBitmap maskBitmap (width (), height ()); + maskBitmap.fill (Qt::color0/*transparent*/); + + { + QPainter painter(&maskBitmap); + + painter.setPen (Qt::color1/*opaque*/); + painter.setBrush (Qt::color1/*opaque*/); + + QPolygon points = calculatePoints (); + points.translate (-x (), -y ()); + + // Unlike QPainter::drawRect(), this draws the points literally + // without being 1 pixel wider and higher. This requires a QPen + // or it will draw 1 pixel narrower and shorter. + painter.drawPolygon (points, Qt::OddEvenFill); + } + + return maskBitmap; +} + +//--------------------------------------------------------------------- + +// public +kpImage kpAbstractImageSelection::givenImageMaskedByShape (const kpImage &image) const +{ +#if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "kpAbstractImageSelection::givenImageMaskedByShape() boundingRect=" + << boundingRect () << endl; +#endif + Q_ASSERT (image.width () == width () && image.height () == height ()); + + if (isRectangular ()) { + return image; + } + + const QRegion mRegion = shapeRegion ().translated (-topLeft ()); + +#if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "\tshapeRegion=" << shapeRegion () + << " [rect=" << shapeRegion ().boundingRect () << "]" + << " calculatePoints=" << calculatePoints () + << " [rect=" << calculatePoints ().boundingRect () << "]" + << endl; +#endif + + kpImage retImage(width (), height (), QImage::Format_ARGB32_Premultiplied); + retImage.fill(0); // transparent + + QPainter painter(&retImage); + painter.setClipRegion(mRegion); + painter.drawImage(0, 0, image); + painter.end(); + + return retImage; +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +bool kpAbstractImageSelection::hasContent () const +{ + return !d->baseImage.isNull (); +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +void kpAbstractImageSelection::deleteContent () +{ + if (!hasContent ()) { + return; + } + + setBaseImage (kpImage ()); +} + +//--------------------------------------------------------------------- + + +// public +kpImage kpAbstractImageSelection::baseImage () const +{ + return d->baseImage; +} + +//--------------------------------------------------------------------- + +// public +void kpAbstractImageSelection::setBaseImage (const kpImage &baseImage) +{ + Q_ASSERT (::CanSetBaseImageTo (this, baseImage)); + + // qt doc: the image format must be set to Format_ARGB32Premultiplied or Format_ARGB32 + // for the composition modes to have any effect + d->baseImage = baseImage.convertToFormat(QImage::Format_ARGB32_Premultiplied); + + recalculateTransparencyMaskCache (); + + emit changed (boundingRect ()); +} + +//--------------------------------------------------------------------- + +// public +kpImageSelectionTransparency kpAbstractImageSelection::transparency () const +{ + return d->transparency; +} + +//--------------------------------------------------------------------- + +// public +bool kpAbstractImageSelection::setTransparency ( + const kpImageSelectionTransparency &transparency, + bool checkTransparentPixmapChanged) +{ + if (d->transparency == transparency) { + return false; + } + + d->transparency = transparency; + + bool haveChanged = true; + + QBitmap oldTransparencyMaskCache = d->transparencyMaskCache; + recalculateTransparencyMaskCache (); + + if ( oldTransparencyMaskCache.size() == d->transparencyMaskCache.size() ) + { + if (d->transparencyMaskCache.isNull ()) + { + #if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "\tboth old and new pixmaps are null - nothing changed"; + #endif + haveChanged = false; + } + else if (checkTransparentPixmapChanged) + { + QImage oldTransparencyMaskImage = oldTransparencyMaskCache.toImage(); + QImage newTransparencyMaskImage = d->transparencyMaskCache.toImage(); + + bool changed = false; + for (int y = 0; y < oldTransparencyMaskImage.height () && !changed; y++) + { + for (int x = 0; x < oldTransparencyMaskImage.width () && !changed; x++) + { + if (kpPixmapFX::getColorAtPixel (oldTransparencyMaskImage, x, y) != + kpPixmapFX::getColorAtPixel (newTransparencyMaskImage, x, y)) + { + #if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "\tdiffer at " << QPoint (x, y) + << " old=" << kpPixmapFX::getColorAtPixel (oldTransparencyMaskImage, x, y).toQRgb () + << " new=" << kpPixmapFX::getColorAtPixel (newTransparencyMaskImage, x, y).toQRgb () + << endl; + #endif + changed = true; + break; + } + } + } + + if (!changed) { + haveChanged = false; + } + } + } + + + if (haveChanged) { + emit changed (boundingRect ()); + } + + return haveChanged; +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractImageSelection::recalculateTransparencyMaskCache () +{ +#if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "kpAbstractImageSelection::recalculateTransparencyMaskCache()"; +#endif + + if (d->baseImage.isNull ()) + { + #if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "\tno image - no need for transparency mask"; + #endif + d->transparencyMaskCache = QBitmap (); + return; + } + + if (d->transparency.isOpaque ()) + { + #if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "\topaque - no need for transparency mask"; + #endif + d->transparencyMaskCache = QBitmap (); + return; + } + + d->transparencyMaskCache = QBitmap(d->baseImage.size()); + + QPainter transparencyMaskPainter (&d->transparencyMaskCache); + + bool hasTransparent = false; + for (int y = 0; y < d->baseImage.height (); y++) + { + for (int x = 0; x < d->baseImage.width (); x++) + { + const kpColor pixelCol = kpPixmapFX::getColorAtPixel (d->baseImage, x, y); + if (pixelCol == kpColor::Transparent || + pixelCol.isSimilarTo (d->transparency.transparentColor (), + d->transparency.processedColorSimilarity ())) + { + transparencyMaskPainter.setPen (Qt::color1/*transparent*/); + hasTransparent = true; + } + else + { + transparencyMaskPainter.setPen (Qt::color0/*opaque*/); + } + + transparencyMaskPainter.drawPoint (x, y); + } + } + + transparencyMaskPainter.end (); + + if (!hasTransparent) + { + #if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "\tcolour useless - completely opaque"; + #endif + d->transparencyMaskCache = QBitmap (); + return; + } +} + +//--------------------------------------------------------------------- + +// public +kpImage kpAbstractImageSelection::transparentImage () const +{ + kpImage image = baseImage (); + + if (!d->transparencyMaskCache.isNull ()) + { + QPainter painter(&image); + painter.setCompositionMode(QPainter::CompositionMode_Clear); + painter.drawPixmap(0, 0, d->transparencyMaskCache); + } + + return image; +} + +//--------------------------------------------------------------------- + +// public +void kpAbstractImageSelection::fill (const kpColor &color) +{ + QImage newImage(width(), height(), QImage::Format_ARGB32_Premultiplied); + newImage.fill(color.toQRgb()); + + // LOTODO: Maybe disable Image/Clear menu item if transparent color + if ( !color.isTransparent() ) + { + QPainter painter(&newImage); + painter.setCompositionMode(QPainter::CompositionMode_Clear); + painter.drawPixmap(0, 0, shapeBitmap()); + } + + setBaseImage (newImage); +} + +//--------------------------------------------------------------------- + +// public virtual +void kpAbstractImageSelection::flip (bool horiz, bool vert) +{ +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "kpAbstractImageSelection::flip(horiz=" << horiz + << ",vert=" << vert << ")"; +#endif + + if (!d->baseImage.isNull ()) + { + #if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\thave pixmap - flipping that"; + #endif + d->baseImage = d->baseImage.mirrored(horiz, vert); + } + + if (!d->transparencyMaskCache.isNull ()) + { + #if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\thave transparency mask - flipping that"; + #endif + QImage image = d->transparencyMaskCache.toImage().mirrored(horiz, vert); + d->transparencyMaskCache = QBitmap::fromImage(image); + } + + emit changed (boundingRect ()); +} + +//--------------------------------------------------------------------- + +static void Paint (const kpAbstractImageSelection *sel, const kpImage &srcImage, + QImage *destImage, const QRect &docRect) +{ + if (!srcImage.isNull ()) + { + kpPixmapFX::paintPixmapAt (destImage, + sel->topLeft () - docRect.topLeft (), + srcImage); + } +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +void kpAbstractImageSelection::paint (QImage *destImage, + const QRect &docRect) const +{ + ::Paint (this, transparentImage (), destImage, docRect); +} + +//--------------------------------------------------------------------- + +// public +void kpAbstractImageSelection::paintWithBaseImage (QImage *destImage, + const QRect &docRect) const +{ + ::Paint (this, baseImage (), destImage, docRect); +} + +//--------------------------------------------------------------------- + + diff --git a/layers/selections/image/kpAbstractImageSelection.h b/layers/selections/image/kpAbstractImageSelection.h new file mode 100644 index 0000000..de08597 --- /dev/null +++ b/layers/selections/image/kpAbstractImageSelection.h @@ -0,0 +1,266 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpAbstractImageSelection_H +#define kpAbstractImageSelection_H + + +#include "kpImageSelectionTransparency.h" +#include "layers/selections/kpAbstractSelection.h" +#include "imagelib/kpImage.h" + + +// +// An abstract selection with optional image content and background +// subtraction. If there is image content, it is known as a "floating +// selection" that hovers above the document. Otherwise, it is an +// image selection "border", that highlights pixels of the document, and +// may later be upgraded to a floating selection by giving it an image +// consisting of those pixels. +// +// The images passed to this class (known as "base images") should have all +// pixels, outside of the border, set to transparent. However, nothing +// enforces this. Pixels on, or inside, the border might be opaque or +// transparent, depending on the content. +// +// The "transparent image" is the base image with background subtraction +// (kpImageSelectionTransparency) applied. This is automatically computed. +// +// The boundingRect() is the size of the border. The base image must be of +// exactly the same size, except that the base image is allowed to be null +// (for a selection that only consists of a border). +// +// Instead of copying selections' images to the clipboard, we copy +// selections, to preserve the border across KolourPaint instances. +// Background subtraction is not copied to the clipboard so that the base +// image is affected by the background subtraction of the destination +// KolourPaint window. +// +class kpAbstractImageSelection : public kpAbstractSelection +{ +Q_OBJECT + +// +// Initialization +// + +protected: + // (Call these in subclass constructors) + kpAbstractImageSelection (const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpAbstractImageSelection (const QRect &rect, + const kpImage &baseImage = kpImage (), + const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpAbstractImageSelection (const QRect &rect, + const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + // (Call this in subclass implementations of operator=) + kpAbstractImageSelection &operator= (const kpAbstractImageSelection &rhs); + +public: + // (Covariant return-type specialization of superclass pure virtual method) + kpAbstractImageSelection *clone () const override = 0; + + ~kpAbstractImageSelection () override; + + +// +// Marshalling +// + +public: + // You must override this if you have extra serializable fields. + // Remember to call this base implementation before your code. + bool readFromStream (QDataStream &stream) override; + + // You must override this if you have extra serializable fields. + // Remember to call this base implementation before your code. + void writeToStream (QDataStream &stream) const override; + + +// +// General Queries +// + +public: + QString name () const override; + + // You must override this, if you have extra fields that take a + // non-constant amount of space, and add the size returned by this + // implementation. + kpCommandSize::SizeType size () const override; + + // Same as virtual size() (it even calls it) but subtracts the size of the + // baseImage(). + // + // kpCommand's store the kpImage's they are working on. These images may + // be from documents or selections. In the case of a selection, the + // selection's baseImage() is identical to that image, but takes no extra + // space due to kpImage's copy-on-write. This method fixes that + // double-counting of baseImage()'s size. + // + // The size of the internal transparency() mask is still included + // (see recalculateTransparencyMask()). + // + // sync: kpImage copy-on-write behavior + // + // TODO: Check all size() implementations are correct since we've + // started removing the old kpSelection::setPixmap(QPixmap()) + // (now kpAbstractImageSelection::setBaseImage(kpImage()) or + // kpAbstractImageSelection::deleteContent()) space saving hack. + kpCommandSize::SizeType sizeWithoutImage () const; + + +// +// Dimensions +// + +public: + int minimumWidth () const override; + int minimumHeight () const override; + + +// +// Shape Mask +// +// These methods do not access any class instance fields. +// + +public: + // Returns the mask corresponding to the shape of the selection. + // + // If is set, the method _may_ return a null + // bitmap if the selection is rectangular. + // + // This base implementation calls calculatePoints() and ignores + // . + // + // You should override this if you can implement it more efficiently or + // if you can honor . + // + // Note: This must be consistent with the outputs of calculatePoints() and + // shapeRegion(). + // + // TODO: Try to get rid of this method since it's slow. + virtual QBitmap shapeBitmap (bool nullForRectangular = false) const; + + // Returns the region corresponding to the shape of the selection + // e.g. elliptical region for an elliptical selection. + // + // Very slow. + // + // Note: This must be consistent with the outputs of calculatePoints() and + // shapeRegion(). + // + // OPT: QRegion is probably incredibly slow - cache + virtual QRegion shapeRegion () const = 0; + + // Returns the given with the pixels outside of the selection's + // shape set to transparent. + // + // Very slow. + // + // ASSUMPTION: The image has the same dimensions as the selection. + kpImage givenImageMaskedByShape (const kpImage &image) const; + + +// +// Content - Base Image +// + +public: + // Returns whether there's a non-null base image. + bool hasContent () const override; + + void deleteContent () override; + +public: + kpImage baseImage () const; + void setBaseImage (const kpImage &baseImage); + + +// +// Background Subtraction +// + +public: + kpImageSelectionTransparency transparency () const; + + // Returns whether or not the selection changed due to setting the + // transparency info. If is set, + // it will try harder to return false (although the check is + // expensive). + bool setTransparency (const kpImageSelectionTransparency &transparency, + bool checkTransparentPixmapChanged = false); + +private: + // Updates the selection transparency (a.k.a. background subtraction) mask + // so that transparentImage() will work. + // + // Called when the base image or selection transparency changes. + void recalculateTransparencyMaskCache (); + +public: + // Returns baseImage() after applying kpImageSelectionTransparency + kpImage transparentImage () const; + + +// +// Mutation - Effects +// + +public: + // Overwrites the base image with the selection's shape (e.g. ellipse) + // filled in with . See shapeBitmap(). + void fill (const kpColor &color); + + virtual void flip (bool horiz, bool vert); + + +// +// Rendering +// + +public: + // (using transparent image) + void paint (QImage *destPixmap, const QRect &docRect) const override; + + // (using base image) + void paintWithBaseImage (QImage *destPixmap, const QRect &docRect) const; + + +private: + struct kpAbstractImageSelectionPrivate * const d; +}; + + +#endif // kpAbstractImageSelection_H diff --git a/layers/selections/image/kpEllipticalImageSelection.cpp b/layers/selections/image/kpEllipticalImageSelection.cpp new file mode 100644 index 0000000..ec475d0 --- /dev/null +++ b/layers/selections/image/kpEllipticalImageSelection.cpp @@ -0,0 +1,185 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "layers/selections/image/kpEllipticalImageSelection.h" + +#include +#include +#include + + +struct kpEllipticalImageSelectionPrivate +{ +}; + + +kpEllipticalImageSelection::kpEllipticalImageSelection ( + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (transparency), + d (new kpEllipticalImageSelectionPrivate ()) +{ +} + +kpEllipticalImageSelection::kpEllipticalImageSelection (const QRect &rect, + const kpImage &baseImage, + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (rect, baseImage, transparency), + d (new kpEllipticalImageSelectionPrivate ()) +{ +} + +kpEllipticalImageSelection::kpEllipticalImageSelection (const QRect &rect, + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (rect, transparency), + d (new kpEllipticalImageSelectionPrivate ()) +{ +} + +kpEllipticalImageSelection::kpEllipticalImageSelection (const kpEllipticalImageSelection &rhs) + : kpAbstractImageSelection (), + d (new kpEllipticalImageSelectionPrivate ()) +{ + *this = rhs; +} + +kpEllipticalImageSelection &kpEllipticalImageSelection::operator= ( + const kpEllipticalImageSelection &rhs) +{ + kpAbstractImageSelection::operator= (rhs); + + return *this; +} + +kpEllipticalImageSelection *kpEllipticalImageSelection::clone () const +{ + kpEllipticalImageSelection *sel = new kpEllipticalImageSelection (); + *sel = *this; + return sel; +} + +kpEllipticalImageSelection::~kpEllipticalImageSelection () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +int kpEllipticalImageSelection::serialID () const +{ + return SerialID; +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +bool kpEllipticalImageSelection::isRectangular () const +{ + return false; +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +QPolygon kpEllipticalImageSelection::calculatePoints () const +{ + Q_ASSERT (boundingRect ().isValid ()); + + if (width () == 1 && height () == 1) + { + QPolygon ret; + ret.append (topLeft ()); + return ret; + } + + QPainterPath path; + if (width () == 1 || height () == 1) + { + path.moveTo (x (), y ()); + // This does not work when the width _and_ height are 1 since lineTo() + // would not move at all. This is why we have a separate case for that + // at the top of the method. + path.lineTo (x () + width () - 1, y () + height () - 1); + } + else + { + // The adjusting is to fight QPainterPath::addEllipse() making + // the ellipse 1 pixel higher and wider than specified. + path.addEllipse (boundingRect ().adjusted (0, 0, -1, -1)); + } + + const QList polygons = path.toSubpathPolygons (); + Q_ASSERT (polygons.size () == 1); + + const QPolygonF& firstPolygonF = polygons.first (); + return firstPolygonF.toPolygon (); +} + +//--------------------------------------------------------------------- + + +// protected virtual [kpAbstractImageSelection] +QRegion kpEllipticalImageSelection::shapeRegion () const +{ + QRegion reg(calculatePoints()); + return reg; +} + +//--------------------------------------------------------------------- + + +// public virtual [kpAbstractSelection] +bool kpEllipticalImageSelection::contains (const QPoint &point) const +{ + if (!boundingRect ().contains (point)) { + return false; + } + + return shapeRegion ().contains (point); +} + +//--------------------------------------------------------------------- + + +// public virtual [kpAbstractSelection] +void kpEllipticalImageSelection::paintBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const +{ + if ( !boundingRect().isValid() ) { + return; + } + + paintPolygonalBorder (calculatePoints (), + destPixmap, docRect, + selectionFinished); +} + + diff --git a/layers/selections/image/kpEllipticalImageSelection.h b/layers/selections/image/kpEllipticalImageSelection.h new file mode 100644 index 0000000..688141f --- /dev/null +++ b/layers/selections/image/kpEllipticalImageSelection.h @@ -0,0 +1,118 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEllipticalImageSelection_H +#define kpEllipticalImageSelection_H + + +#include "layers/selections/image/kpAbstractImageSelection.h" + + +class kpEllipticalImageSelection : public kpAbstractImageSelection +{ +Q_OBJECT + +public: + kpEllipticalImageSelection (const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpEllipticalImageSelection (const QRect &rect, + const kpImage &baseImage = kpImage (), + const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpEllipticalImageSelection (const QRect &rect, + const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpEllipticalImageSelection (const kpEllipticalImageSelection &rhs); + + kpEllipticalImageSelection &operator= (const kpEllipticalImageSelection &rhs); + + kpEllipticalImageSelection *clone () const override; + + ~kpEllipticalImageSelection () override; + + +// +// Marshalling +// + +public: + static const int SerialID = 1; + int serialID () const override; + + +// +// General Queries +// + +public: + bool isRectangular () const override; + + +// +// Position & Dimensions +// + +public: + QPolygon calculatePoints () const override; + + +// +// Shape Mask +// + +public: + QRegion shapeRegion () const override; + + +// +// Point Testing +// + +public: + bool contains (const QPoint &point) const override; + + +// +// Rendering +// + +public: + void paintBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const override; + + +private: + struct kpEllipticalImageSelectionPrivate * const d; +}; + + + +#endif // kpEllipticalImageSelection_H diff --git a/layers/selections/image/kpFreeFormImageSelection.cpp b/layers/selections/image/kpFreeFormImageSelection.cpp new file mode 100644 index 0000000..1268fe2 --- /dev/null +++ b/layers/selections/image/kpFreeFormImageSelection.cpp @@ -0,0 +1,394 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "layers/selections/image/kpFreeFormImageSelection.h" + +#include "kpLogCategories.h" + +#include "imagelib/kpPainter.h" + + +struct kpFreeFormImageSelectionPrivate +{ + QPolygon orgPoints; + + // Various Qt methods that take a QPolygon interpolate points differently + // (e.g. QPainter::drawPolygon() vs QRegion(QPolygon)) when given consecutive + // points that are not cardinally adjacent e.g. these 2 points: + // + // # + // # + // + // are diagonally, but not cardinally, adjacent. They are rendered + // inconsistently. Also, points which are not adjacent at all definitely + // require interpolation and are inconsistently rendered: + // + // # + // # + // + // So, we only pass cardinally interpolated points to those methods to + // avoid this issue: + // + // ## + // # + // + // These interpolated points are stored in . Regarding + // , see the APIDoc for cardinallyAdjacentPointsLoop(). + QPolygon cardPointsCache, cardPointsLoopCache; +}; + + +kpFreeFormImageSelection::kpFreeFormImageSelection ( + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (transparency), + d (new kpFreeFormImageSelectionPrivate ()) +{ +} + +kpFreeFormImageSelection::kpFreeFormImageSelection (const QPolygon &points, + const kpImage &baseImage, + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (points.boundingRect (), baseImage, transparency), + d (new kpFreeFormImageSelectionPrivate ()) +{ + d->orgPoints = points; + recalculateCardinallyAdjacentPoints (); +} + +kpFreeFormImageSelection::kpFreeFormImageSelection (const QPolygon &points, + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (points.boundingRect (), transparency), + d (new kpFreeFormImageSelectionPrivate ()) +{ + d->orgPoints = points; + recalculateCardinallyAdjacentPoints (); +} + +kpFreeFormImageSelection::kpFreeFormImageSelection (const kpFreeFormImageSelection &rhs) + : kpAbstractImageSelection (), + d (new kpFreeFormImageSelectionPrivate ()) +{ + *this = rhs; +} + +kpFreeFormImageSelection &kpFreeFormImageSelection::operator= (const kpFreeFormImageSelection &rhs) +{ + kpAbstractImageSelection::operator= (rhs); + + d->orgPoints = rhs.d->orgPoints; + d->cardPointsCache = rhs.d->cardPointsCache; + d->cardPointsLoopCache = rhs.d->cardPointsLoopCache; + + return *this; +} + +// public virtual [kpAbstractSelection] +kpFreeFormImageSelection *kpFreeFormImageSelection::clone () const +{ + kpFreeFormImageSelection *sel = new kpFreeFormImageSelection (); + *sel = *this; + return sel; +} + +kpFreeFormImageSelection::~kpFreeFormImageSelection () +{ + delete d; +} + + +// public virtual [kpAbstractSelection] +int kpFreeFormImageSelection::serialID () const +{ + return SerialID; +} + +// public virtual [base kpAbstractImageSelection] +bool kpFreeFormImageSelection::readFromStream (QDataStream &stream) +{ + if (!kpAbstractImageSelection::readFromStream (stream)) { + return false; + } + + stream >> d->orgPoints; + recalculateCardinallyAdjacentPoints (); + + return true; +} + +// public virtual [base kpAbstractImageSelection] +void kpFreeFormImageSelection::writeToStream (QDataStream &stream) const +{ + kpAbstractImageSelection::writeToStream (stream); + + stream << d->orgPoints; +} + + +// public virtual [base kpAbstractImageSelection] +kpCommandSize::SizeType kpFreeFormImageSelection::size () const +{ + return kpAbstractImageSelection::size () + + (kpCommandSize::PolygonSize (d->orgPoints) + + kpCommandSize::PolygonSize (d->cardPointsCache) + + kpCommandSize::PolygonSize (d->cardPointsLoopCache)); +} + +// public virtual [kpAbstractSelection] +bool kpFreeFormImageSelection::isRectangular () const +{ + return false; +} + +// public +QPolygon kpFreeFormImageSelection::originalPoints () const +{ + return d->orgPoints; +} + + +static QPolygon RecalculateCardinallyAdjacentPoints (const QPolygon &points) +{ +#if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "kpFreeFormImageSelection.cpp:RecalculateCardinallyAdjacentPoints()"; + qCDebug(kpLogLayers) << "\tpoints=" << points; +#endif + + // Filter out duplicates. + QPolygon noDups; + for (const auto &p : points) + { + if (!noDups.isEmpty () && p == noDups.last ()) { + continue; + } + + noDups.append (p); + } +#if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "\twithout dups=" << noDups; +#endif + + // Interpolate to ensure cardinal adjacency. + QPolygon cardPoints; + for (const auto &p : noDups) + { + if (!cardPoints.isEmpty () && + !kpPainter::pointsAreCardinallyAdjacent (p, cardPoints.last ())) + { + const QPoint lastPoint = cardPoints.last (); + + QList interpPoints = kpPainter::interpolatePoints ( + lastPoint, + p, + true/*cardinal adjacency*/); + + Q_ASSERT (interpPoints.size () >= 2); + Q_ASSERT (interpPoints [0] == lastPoint); + Q_ASSERT (interpPoints.last () == p); + + for (int i = 1/*skip already existing point*/; + i < interpPoints.size (); + i++) + { + cardPoints.append (interpPoints [i]); + } + } + else { + cardPoints.append (p); + } + } +#if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "\tcardinally adjacent=" << cardPoints; +#endif + + return cardPoints; +} + +// protected +void kpFreeFormImageSelection::recalculateCardinallyAdjacentPoints () +{ + d->cardPointsCache = ::RecalculateCardinallyAdjacentPoints (d->orgPoints); + + + QPolygon pointsLoop = d->cardPointsCache; + if (!pointsLoop.isEmpty ()) { + pointsLoop.append (pointsLoop.first ()); + } + + // OPT: We know this method only needs to act on the last 2 points of + // "pointLoop", since the previous points are definitely cardinally + // adjacent. + d->cardPointsLoopCache = ::RecalculateCardinallyAdjacentPoints (pointsLoop); +} + +// public +QPolygon kpFreeFormImageSelection::cardinallyAdjacentPoints () const +{ + return d->cardPointsCache; +} + +// public +QPolygon kpFreeFormImageSelection::cardinallyAdjacentPointsLoop () const +{ + return d->cardPointsLoopCache; +} + + +// public virtual [kpAbstractSelection] +QPolygon kpFreeFormImageSelection::calculatePoints () const +{ + return d->cardPointsLoopCache; +} + + +// protected virtual [kpAbstractSelection] +QRegion kpFreeFormImageSelection::shapeRegion () const +{ + const QRegion region = QRegion (d->cardPointsLoopCache, Qt::OddEvenFill); + + // In Qt4, while QPainter::drawRect() gives you rectangles 1 pixel + // wider and higher, QRegion(QPolygon) gives you regions 1 pixel + // narrower and shorter! Compensate for this by merging shifted + // versions of the region. This seems to be consistent with shapeBitmap() + // but I am a bit worried. + // + // Regarding alternative solutions: + // 1. Instead of doing this region shifting and merging, if we were to + // construct a QRegion simply from a point array with 4 points for + // every point in "d->cardPointsLoopCache" (4 points = original point + 3 + // translations below), it probably wouldn't work because the order of + // the points in any point array matter for the odd-even fill + // algorithm. This would probably manifest as problems with + // self-intersecting borders. + // 2. Constructing a QRegion from QBitmap (from shapeBitmap()) is probably + // very slow since it would have to read each pixel of the QBitmap. + // Having said that, this is probably the safest option as region shifting + // is dodgy. Also, this would guarantee that shapeBitmap() and shapeRegion() + // are consistent and we wouldn't need cardinally adjacent points either + // (d->cardPointsCache and d->cardPointsLoopCache). + const QRegion regionX = region.translated (1, 0); + const QRegion regionY = region.translated (0, 1); + const QRegion regionXY = region.translated (1, 1); + + return region.united (regionX).united (regionY).united (regionXY); +} + + +// public virtual [kpAbstractSelection] +bool kpFreeFormImageSelection::contains (const QPoint &point) const +{ + if (!boundingRect ().contains (point)) { + return false; + } + + // We can't use the baseImage() (when non-null) and get the transparency of + // the pixel at , instead of this region test, as the pixel may be + // transparent but still within the border. + return shapeRegion ().contains (point); +} + + +// public virtual [base kpAbstractSelection] +void kpFreeFormImageSelection::moveBy (int dx, int dy) +{ + d->orgPoints.translate (dx, dy); + + d->cardPointsCache.translate (dx, dy); + d->cardPointsLoopCache.translate (dx, dy); + + // Call base last since it fires the changed() signal and we only + // want that to fire at the very end of this method, after all + // the selection state has been changed. + kpAbstractImageSelection::moveBy (dx, dy); +} + +//--------------------------------------------------------------------- + +static void FlipPoints (QPolygon *points, + bool horiz, bool vert, + const QRect &oldRect) +{ + points->translate (-oldRect.x (), -oldRect.y ()); + + const QTransform matrix (horiz ? -1 : +1, // m11 + 0, // m12 + 0, // m21 + vert ? -1 : +1, // m22 + horiz ? (oldRect.width() - 1) : 0, // dx + vert ? (oldRect.height() - 1) : 0); // dy + +#if !defined (QT_NO_DEBUG) && !defined (NDEBUG) + QPolygon oldPoints = *points; +#endif + + *points = matrix.map (*points); + +#if !defined (QT_NO_DEBUG) && !defined (NDEBUG) + // Sanity check: flipping the points twice gives us the original points. + Q_ASSERT (oldPoints == matrix.map (*points)); +#endif + + points->translate (oldRect.x (), oldRect.y ()); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpAbstractImageSelection] +void kpFreeFormImageSelection::flip (bool horiz, bool vert) +{ + ::FlipPoints (&d->orgPoints, horiz, vert, boundingRect ()); + + ::FlipPoints (&d->cardPointsCache, horiz, vert, boundingRect ()); + ::FlipPoints (&d->cardPointsLoopCache, horiz, vert, boundingRect ()); + + + // Call base last since it fires the changed() signal and we only + // want that to fire at the very end of this method, after all + // the selection state has been changed. + kpAbstractImageSelection::flip (horiz, vert); +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +void kpFreeFormImageSelection::paintBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const +{ + if (selectionFinished) { + paintPolygonalBorder (cardinallyAdjacentPointsLoop (), + destPixmap, docRect, selectionFinished); + } + else { + paintPolygonalBorder (cardinallyAdjacentPoints (), + destPixmap, docRect, selectionFinished); + } +} + + diff --git a/layers/selections/image/kpFreeFormImageSelection.h b/layers/selections/image/kpFreeFormImageSelection.h new file mode 100644 index 0000000..05c2f2f --- /dev/null +++ b/layers/selections/image/kpFreeFormImageSelection.h @@ -0,0 +1,159 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpFreeFormImageSelection_H +#define kpFreeFormImageSelection_H + + +#include "layers/selections/image/kpAbstractImageSelection.h" + + +class kpFreeFormImageSelection : public kpAbstractImageSelection +{ +Q_OBJECT + +public: + kpFreeFormImageSelection (const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpFreeFormImageSelection (const QPolygon &points, + const kpImage &baseImage = kpImage (), + const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpFreeFormImageSelection (const QPolygon &points, + const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpFreeFormImageSelection (const kpFreeFormImageSelection &rhs); + + kpFreeFormImageSelection &operator= (const kpFreeFormImageSelection &rhs); + + kpFreeFormImageSelection *clone () const override; + + ~kpFreeFormImageSelection () override; + + +// +// Marshalling +// + +public: + static const int SerialID = 2; + int serialID () const override; + + bool readFromStream (QDataStream &stream) override; + + void writeToStream (QDataStream &stream) const override; + + +// +// General Queries +// + +public: + kpCommandSize::SizeType size () const override; + + bool isRectangular () const override; + + // (as passed to the constructor) + QPolygon originalPoints () const; + + +// +// Cardinally Adjacent Points +// + +protected: + void recalculateCardinallyAdjacentPoints (); + +public: + // Returns the originalPoints() interpolated to be cardinally adjacent. + QPolygon cardinallyAdjacentPoints () const; + + // Returns cardinallyAdjacentPoints() but with extra points interpolated + // from the last point to the first point (the original points are + // thought of as a polygon where the first and last points are connected, + // rather than as a string of points). + // + // As used by the shape mask methods. + QPolygon cardinallyAdjacentPointsLoop () const; + + +// +// Position & Dimensions +// + +public: + // Implements kpAbstractSelection interface - same as + // cardinallyAdjacentPointsLoop (). + // This implementation is fast. + QPolygon calculatePoints () const override; + + +// +// Shape Mask +// + +public: + QRegion shapeRegion () const override; + + +// +// Point Testing +// + +public: + bool contains (const QPoint &point) const override; + + +// +// Mutation +// + +public: + void moveBy (int dx, int dy) override; + + void flip (bool horiz, bool vert) override; + + +// +// Rendering +// + +public: + void paintBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const override; + + +private: + struct kpFreeFormImageSelectionPrivate * const d; +}; + + +#endif // kpFreeFormImageSelection_H diff --git a/layers/selections/image/kpImageSelectionTransparency.cpp b/layers/selections/image/kpImageSelectionTransparency.cpp new file mode 100644 index 0000000..4a7f835 --- /dev/null +++ b/layers/selections/image/kpImageSelectionTransparency.cpp @@ -0,0 +1,205 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION_TRANSPARENCY 0 + + +#include "layers/selections/image/kpImageSelectionTransparency.h" + +#include "kpLogCategories.h" + +#include "widgets/colorSimilarity/kpColorSimilarityHolder.h" + + +//--------------------------------------------------------------------- + +kpImageSelectionTransparency::kpImageSelectionTransparency () + : m_isOpaque (true) +{ + setColorSimilarity (0); +} + +//--------------------------------------------------------------------- + +kpImageSelectionTransparency::kpImageSelectionTransparency (const kpColor &transparentColor, double colorSimilarity) + : m_isOpaque (false), + m_transparentColor (transparentColor) +{ + setColorSimilarity (colorSimilarity); +} + +//--------------------------------------------------------------------- + +kpImageSelectionTransparency::kpImageSelectionTransparency (bool isOpaque, const kpColor &transparentColor, + double colorSimilarity) + : m_isOpaque (isOpaque), + m_transparentColor (transparentColor) +{ + setColorSimilarity (colorSimilarity); +} + +//--------------------------------------------------------------------- + +bool kpImageSelectionTransparency::operator== (const kpImageSelectionTransparency &rhs) const +{ +#if DEBUG_KP_SELECTION_TRANSPARENCY && 0 + qCDebug(kpLogLayers) << "kpImageSelectionTransparency::operator==()"; +#endif + + if (m_isOpaque != rhs.m_isOpaque) + { + #if DEBUG_KP_SELECTION_TRANSPARENCY && 0 + qCDebug(kpLogLayers) << "\tdifferent opacity: lhs=" << m_isOpaque + << " rhs=" << rhs.m_isOpaque + << endl; + #endif + return false; + } + + if (m_isOpaque) + { + #if DEBUG_KP_SELECTION_TRANSPARENCY && 0 + qCDebug(kpLogLayers) << "\tboth opaque - eq"; + #endif + return true; + } + +#if DEBUG_KP_SELECTION_TRANSPARENCY && 0 + qCDebug(kpLogLayers) << "\tcolours: lhs=" << (int *) m_transparentColor.toQRgb () + << " rhs=" << (int *) rhs.m_transparentColor.toQRgb () + << endl; + qCDebug(kpLogLayers) << "\tcolour similarity: lhs=" << m_colorSimilarity + << " rhs=" << rhs.m_colorSimilarity + << endl; +#endif + + return (m_transparentColor == rhs.m_transparentColor && + m_colorSimilarity == rhs.m_colorSimilarity); +} + +//--------------------------------------------------------------------- + +bool kpImageSelectionTransparency::operator!= (const kpImageSelectionTransparency &rhs) const +{ + return !(*this == rhs); +} + +//--------------------------------------------------------------------- + +kpImageSelectionTransparency::~kpImageSelectionTransparency () = default; + +//--------------------------------------------------------------------- + +// public +bool kpImageSelectionTransparency::isOpaque () const +{ + return m_isOpaque; +} + +//--------------------------------------------------------------------- + +// public +bool kpImageSelectionTransparency::isTransparent () const +{ + return !isOpaque (); +} + +//--------------------------------------------------------------------- + +// public +void kpImageSelectionTransparency::setOpaque (bool yes) +{ + m_isOpaque = yes; +} + +//--------------------------------------------------------------------- + +// public +void kpImageSelectionTransparency::setTransparent (bool yes) +{ + setOpaque (!yes); +} + +//--------------------------------------------------------------------- + + +// public +kpColor kpImageSelectionTransparency::transparentColor () const +{ + if (m_isOpaque) + { + // There are legitimate uses for this so no qCCritical(kpLogLayers) + qCDebug(kpLogLayers) << "kpImageSelectionTransparency::transparentColor() " + "getting transparent color even though opaque"; + } + + return m_transparentColor; +} + +//--------------------------------------------------------------------- + +// public +void kpImageSelectionTransparency::setTransparentColor (const kpColor &transparentColor) +{ + m_transparentColor = transparentColor; +} + +//--------------------------------------------------------------------- + + +// public +double kpImageSelectionTransparency::colorSimilarity () const +{ + if (m_colorSimilarity < 0 || + m_colorSimilarity > kpColorSimilarityHolder::MaxColorSimilarity) + { + qCCritical(kpLogLayers) << "kpImageSelectionTransparency::colorSimilarity() invalid colorSimilarity"; + return 0; + } + + return m_colorSimilarity; +} + +//--------------------------------------------------------------------- + +// pubulic +void kpImageSelectionTransparency::setColorSimilarity (double colorSimilarity) +{ + m_colorSimilarity = colorSimilarity; + m_processedColorSimilarity = kpColor::processSimilarity (colorSimilarity); +} + +//--------------------------------------------------------------------- + +// public +int kpImageSelectionTransparency::processedColorSimilarity () const +{ + return m_processedColorSimilarity; +} + +//--------------------------------------------------------------------- diff --git a/layers/selections/image/kpImageSelectionTransparency.h b/layers/selections/image/kpImageSelectionTransparency.h new file mode 100644 index 0000000..69ffc1f --- /dev/null +++ b/layers/selections/image/kpImageSelectionTransparency.h @@ -0,0 +1,82 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_IMAGE_SELECTION_TRANSPARENCY_H +#define KP_IMAGE_SELECTION_TRANSPARENCY_H + + +#include "imagelib/kpColor.h" + + +// This does not apply to the Text Tool. Use kpTextStyle for that. +class kpImageSelectionTransparency +{ +public: + // Opaque selection + kpImageSelectionTransparency (); + // Selection that's transparent at pixels with + kpImageSelectionTransparency (const kpColor &transparentColor, double colorSimilarity); + // If , is allowed to be anything + // (including invalid) as the color would have no effect. + // However, you are encouraged to set it as you would if !, + // because setTransparent(true) might be called later, after which + // the would suddenly become important. + // + // It is a similar case with , although + // must be in-range (see kpColorSimilarityHolder). + kpImageSelectionTransparency (bool isOpaque, const kpColor &transparentColor, double colorSimilarity); + // Returns whether they are visually equivalent. + // This is the same as a memcmp() except that if they are both opaque, + // this function will return true regardless of the transparentColor's. + bool operator== (const kpImageSelectionTransparency &rhs) const; + bool operator!= (const kpImageSelectionTransparency &rhs) const; + ~kpImageSelectionTransparency (); + + bool isOpaque () const; + bool isTransparent () const; + void setOpaque (bool yes = true); + void setTransparent (bool yes = true); + + // If isOpaque(), transparentColor() is generally not called because + // the transparent color would have no effect. + kpColor transparentColor () const; + void setTransparentColor (const kpColor &transparentColor); + + double colorSimilarity () const; + void setColorSimilarity (double colorSimilarity); + int processedColorSimilarity () const; + +private: + bool m_isOpaque; + kpColor m_transparentColor; + double m_colorSimilarity; + int m_processedColorSimilarity; +}; + + +#endif // KP_IMAGE_SELECTION_TRANSPARENCY_H diff --git a/layers/selections/image/kpRectangularImageSelection.cpp b/layers/selections/image/kpRectangularImageSelection.cpp new file mode 100644 index 0000000..e219c8e --- /dev/null +++ b/layers/selections/image/kpRectangularImageSelection.cpp @@ -0,0 +1,149 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "layers/selections/image/kpRectangularImageSelection.h" + +#include +#include + + +struct kpRectangularImageSelectionPrivate +{ +}; + + +kpRectangularImageSelection::kpRectangularImageSelection ( + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (transparency), + d (new kpRectangularImageSelectionPrivate ()) +{ +} + +kpRectangularImageSelection::kpRectangularImageSelection (const QRect &rect, + const kpImage &baseImage, + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (rect, baseImage, transparency), + d (new kpRectangularImageSelectionPrivate ()) +{ +} + +kpRectangularImageSelection::kpRectangularImageSelection (const QRect &rect, + const kpImageSelectionTransparency &transparency) + : kpAbstractImageSelection (rect, transparency), + d (new kpRectangularImageSelectionPrivate ()) +{ +} + +kpRectangularImageSelection::kpRectangularImageSelection (const kpRectangularImageSelection &rhs) + : kpAbstractImageSelection (), + d (new kpRectangularImageSelectionPrivate ()) +{ + *this = rhs; +} + +kpRectangularImageSelection &kpRectangularImageSelection::operator= ( + const kpRectangularImageSelection &rhs) +{ + kpAbstractImageSelection::operator= (rhs); + + return *this; +} + +kpRectangularImageSelection *kpRectangularImageSelection::clone () const +{ + kpRectangularImageSelection *sel = new kpRectangularImageSelection (); + *sel = *this; + return sel; +} + +kpRectangularImageSelection::~kpRectangularImageSelection () +{ + delete d; +} + + +// public virtual [kpAbstractSelection] +int kpRectangularImageSelection::serialID () const +{ + return SerialID; +} + + +// public virtual [kpAbstractSelection] +bool kpRectangularImageSelection::isRectangular () const +{ + return true; +} + + +// public virtual [kpAbstractSelection] +QPolygon kpRectangularImageSelection::calculatePoints () const +{ + return kpAbstractImageSelection::CalculatePointsForRectangle (boundingRect ()); +} + + +// public virtual [base kpAbstractImageSelection] +QBitmap kpRectangularImageSelection::shapeBitmap (bool nullForRectangular) const +{ + Q_ASSERT (boundingRect ().isValid ()); + + if (nullForRectangular) { + return {}; + } + + QBitmap maskBitmap (width (), height ()); + maskBitmap.fill (Qt::color1/*opaque*/); + return maskBitmap; +} + +// public virtual [kpAbstractImageSelection] +QRegion kpRectangularImageSelection::shapeRegion () const +{ + return QRegion (boundingRect (), QRegion::Rectangle); +} + + +// public virtual [kpAbstractSelection] +bool kpRectangularImageSelection::contains (const QPoint &point) const +{ + return boundingRect ().contains (point); +} + + +// public virtual [kpAbstractSelection] +void kpRectangularImageSelection::paintBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const +{ + paintRectangularBorder (destPixmap, docRect, selectionFinished); +} + + diff --git a/layers/selections/image/kpRectangularImageSelection.h b/layers/selections/image/kpRectangularImageSelection.h new file mode 100644 index 0000000..836e30b --- /dev/null +++ b/layers/selections/image/kpRectangularImageSelection.h @@ -0,0 +1,119 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpRectangularImageSelection_H +#define kpRectangularImageSelection_H + + +#include "layers/selections/image/kpAbstractImageSelection.h" + + +class kpRectangularImageSelection : public kpAbstractImageSelection +{ +Q_OBJECT + +public: + kpRectangularImageSelection (const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpRectangularImageSelection (const QRect &rect, + const kpImage &baseImage = kpImage (), + const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpRectangularImageSelection (const QRect &rect, + const kpImageSelectionTransparency &transparency = + kpImageSelectionTransparency ()); + + kpRectangularImageSelection (const kpRectangularImageSelection &rhs); + + kpRectangularImageSelection &operator= (const kpRectangularImageSelection &rhs); + + kpRectangularImageSelection *clone () const override; + + ~kpRectangularImageSelection () override; + + +// +// Marshalling +// + +public: + static const int SerialID = 0; + int serialID () const override; + + +// +// General Queries +// + +public: + bool isRectangular () const override; + + +// +// Position & Dimensions +// + +public: + QPolygon calculatePoints () const override; + + +// +// Shape Mask +// + +public: + QBitmap shapeBitmap (bool nullForRectangular = false) const override; + + QRegion shapeRegion () const override; + + +// +// Point Testing +// + +public: + bool contains (const QPoint &point) const override; + + +// +// Rendering +// + +public: + void paintBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const override; + + +private: + struct kpRectangularImageSelectionPrivate * const d; +}; + + +#endif // kpRectangularImageSelection_H diff --git a/layers/selections/kpAbstractSelection.cpp b/layers/selections/kpAbstractSelection.cpp new file mode 100644 index 0000000..f8f09b0 --- /dev/null +++ b/layers/selections/kpAbstractSelection.cpp @@ -0,0 +1,315 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "layers/selections/kpAbstractSelection.h" + +#include +#include + +#include "kpLogCategories.h" + +struct kpAbstractSelectionPrivate +{ + QRect rect; +}; + + +// protected +kpAbstractSelection::kpAbstractSelection () + : QObject (), + d (new kpAbstractSelectionPrivate ()) +{ + d->rect = QRect (); +} + +// protected +kpAbstractSelection::kpAbstractSelection (const QRect &rect) + : QObject (), + d (new kpAbstractSelectionPrivate ()) +{ + d->rect = rect; +} + +// protected +kpAbstractSelection &kpAbstractSelection::operator= (const kpAbstractSelection &rhs) +{ + if (this == &rhs) { + return *this; + } + + d->rect = rhs.d->rect; + + return *this; +} + +// protected +kpAbstractSelection::~kpAbstractSelection () +{ + delete d; +} + + +// public virtual +bool kpAbstractSelection::readFromStream (QDataStream &stream) +{ + stream >> d->rect; + + return true; +} + +// public virtual +void kpAbstractSelection::writeToStream (QDataStream &stream) const +{ + stream << d->rect; +} + +// friend +QDataStream &operator<< (QDataStream &stream, const kpAbstractSelection &selection) +{ +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "kpAbstractSelection::operator<<(sel: rect=" << + selection.boundingRect (); +#endif + stream << selection.serialID (); + selection.writeToStream (stream); + return stream; +} + + +// public virtual +kpCommandSize::SizeType kpAbstractSelection::size () const +{ + return 0/*constant size*/; +} + + +// public +QSize kpAbstractSelection::minimumSize () const +{ + return {minimumWidth (), minimumHeight ()}; +} + + +// public +int kpAbstractSelection::x () const +{ + return d->rect.x (); +} + +// public +int kpAbstractSelection::y () const +{ + return d->rect.y (); +} + +// public +QPoint kpAbstractSelection::topLeft () const +{ + return d->rect.topLeft (); +} + + +// public +int kpAbstractSelection::width () const +{ + return boundingRect ().width (); +} + +// public +int kpAbstractSelection::height () const +{ + return boundingRect ().height (); +} + +// public +QRect kpAbstractSelection::boundingRect () const +{ + return d->rect; +} + +// public static +QPolygon kpAbstractSelection::CalculatePointsForRectangle (const QRect &rect) +{ + QPolygon points; + + // OPT: not space optimal - current code adds duplicate corner points. + + // top + for (int x = 0; x < rect.width (); x++) { + points.append (QPoint (rect.x () + x, rect.top ())); + } + + // right + for (int y = 0; y < rect.height (); y++) { + points.append (QPoint (rect.right (), rect.y () + y)); + } + + // bottom + for (int x = rect.width () - 1; x >= 0; x--) { + points.append (QPoint (rect.x () + x, rect.bottom ())); + } + + // left + for (int y = rect.height () - 1; y >= 0; y--) { + points.append (QPoint (rect.left (), rect.y () + y)); + } + + return points; +} + + +// public +bool kpAbstractSelection::contains (int x, int y) const +{ + return contains (QPoint (x, y)); +} + + +// public virtual +void kpAbstractSelection::moveBy (int dx, int dy) +{ +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "kpAbstractSelection::moveBy(" << dx << "," << dy << ")"; +#endif + + if (dx == 0 && dy == 0) { + return; + } + + QRect oldRect = boundingRect (); + +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\toldRect=" << oldRect; +#endif + + d->rect.translate (dx, dy); +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\tnewRect=" << d->rect; +#endif + + emit changed (oldRect); + emit changed (boundingRect ()); +} + +// public +void kpAbstractSelection::moveTo (int dx, int dy) +{ + moveTo (QPoint (dx, dy)); +} + +// public +void kpAbstractSelection::moveTo (const QPoint &topLeftPoint) +{ +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "kpAbstractSelection::moveTo(" << topLeftPoint << ")"; +#endif + QRect oldBoundingRect = boundingRect (); +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\toldBoundingRect=" << oldBoundingRect; +#endif + if (topLeftPoint == oldBoundingRect.topLeft ()) { + return; + } + + QPoint delta (topLeftPoint - oldBoundingRect.topLeft ()); + moveBy (delta.x (), delta.y ()); +} + +//--------------------------------------------------------------------- + +// protected +void kpAbstractSelection::paintRectangularBorder (QImage *destPixmap, + const QRect &docRect, + bool selectionFinished) const +{ + (void) selectionFinished; + +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "kpAbstractSelection::paintRectangularBorder() boundingRect=" + << boundingRect (); +#endif + +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\tselection border = rectangle"; + qCDebug(kpLogLayers) << "\t\tx=" << boundingRect ().x () - docRect.x () + << " y=" << boundingRect ().y () - docRect.y () + << " w=" << boundingRect ().width () + << " h=" << boundingRect ().height (); +#endif + kpPixmapFX::drawStippleRect(destPixmap, + boundingRect ().x () - docRect.x (), + boundingRect ().y () - docRect.y (), + boundingRect ().width (), + boundingRect ().height (), + kpColor::Blue, + kpColor::Yellow); +} + +//--------------------------------------------------------------------- + +// protected +void kpAbstractSelection::paintPolygonalBorder (const QPolygon &points, + QImage *destPixmap, + const QRect &docRect, + bool selectionFinished) const +{ +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "kpAbstractSelection::paintPolygonalBorder() boundingRect=" + << boundingRect (); +#endif + + QPolygon pointsTranslated = points; + pointsTranslated.translate (-docRect.x (), -docRect.y ()); + + if ( !selectionFinished ) + { + kpPixmapFX::drawPolyline(destPixmap, + pointsTranslated, kpColor::Blue, 1/*pen width*/, kpColor::Yellow); + } + else + { + kpPixmapFX::drawPolygon(destPixmap, + pointsTranslated, + kpColor::Blue, 1/*pen width*/, + kpColor::Invalid/*no background*/, + true/*is final*/, + kpColor::Yellow); + + kpPixmapFX::drawStippleRect(destPixmap, + boundingRect ().x () - docRect.x (), + boundingRect ().y () - docRect.y (), + boundingRect ().width (), + boundingRect ().height (), + kpColor::LightGray, + kpColor::DarkGray); + } +} + diff --git a/layers/selections/kpAbstractSelection.h b/layers/selections/kpAbstractSelection.h new file mode 100644 index 0000000..adbee89 --- /dev/null +++ b/layers/selections/kpAbstractSelection.h @@ -0,0 +1,278 @@ + +// OPT: The selection classes should use copy-on-write. + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KPABSTRACTSELECTION_H +#define KPABSTRACTSELECTION_H + + +#include + +#include "commands/kpCommandSize.h" +#include "pixmapfx/kpPixmapFX.h" + + +class QImage; +class QPolygon; +class QPoint; +class QRect; +class QSize; + + +// +// Abstract base class for selections. +// +// Selections consist of: +// +// 1. Bounding rectangle (provided by this base class) relative to the +// source document +// 2. Border (must be on, or inside, the bounding rectangle and does not +// have to be rectangular) +// 3. Optional content (e.g. image or text). +// +// A selection without content is a selection border. +// +// Any content outside the border should not be rendered i.e. the selection +// is transparent in all areas outside of the border. Pixels on, or inside, +// the border are considered to be renderable content. Parts, or all, of +// this content can be transparent. +// +class kpAbstractSelection : public QObject +{ +Q_OBJECT + +// +// Initialization +// + +protected: + // (Call these in subclass constructors) + kpAbstractSelection (); + kpAbstractSelection (const QRect &rect); + + // (Call this in subclass implementations of operator=) + kpAbstractSelection &operator= (const kpAbstractSelection &rhs); + +public: + // To implement, create an instance of your type and then call your + // implementation of operator=(). + virtual kpAbstractSelection *clone () const = 0; + + ~kpAbstractSelection () override; + + +// +// Marshalling +// + +public: + // Returns a unique ID for this type of selection, use for marshalling. + virtual int serialID () const = 0; + + // This is called after your object has been created with the default + // constructor. + // + // Reads the object marshalled in the and returns whether it + // succeeded. This is called by kpSelectionFactory so the serialID() + // has already been read and removed from the . + // + // You must override this. Remember to call this base implementation + // before your code. + virtual bool readFromStream (QDataStream &stream); + + // Marshalls the object into the . This is called by + // operator<<() so the serialID() has already been written into the + // . + // + // You must override this. Remember to call this base implementation + // before your code. + virtual void writeToStream (QDataStream &stream) const; + + // Writes the serialID() of the to the and then + // calls writeToStream() to do the remaining marshalling. + // + // (kpSelectionFactory::FromStream() is the ">>" replacement) + friend QDataStream &operator<< (QDataStream &stream, + const kpAbstractSelection &selection); + + +// +// General Queries +// + +public: + // Returns e.g. i18n ("Selection") or i18n ("Text"). + virtual QString name () const = 0; + + // Returns the memory usage of the selection (like kpCommand's), + // _not_ its dimensions. + // + // You must override this and add the size returned by this implementation. + virtual kpCommandSize::SizeType size () const; + +public: + // e.g. return false for an elliptical selection. + virtual bool isRectangular () const = 0; + + +// +// Position & Dimensions +// + +public: + // Returns the minimum allowed dimensions of your selection type. + // Usually this is 1x1 pixels by pixels. + virtual int minimumWidth () const = 0; + virtual int minimumHeight () const = 0; + QSize minimumSize () const; + +public: + // (in document coordinates) + int x () const; + int y () const; + QPoint topLeft () const; + +public: + // (in document coordinates) + + // Returns the width of the bounding rectangle. + int width () const; + + // Returns the height of the bounding rectangle. + int height () const; + + // Returns the bounding rectangle. + QRect boundingRect () const; + +public: + // Use this to implement calculatePoints() for rectangular selections. + static QPolygon CalculatePointsForRectangle (const QRect &rect); + + // Returns the border. This may be recalculated for every call so + // may be slow. + virtual QPolygon calculatePoints () const = 0; + + +// +// Point Testing +// + +public: + // Returns whether the given is on or inside the -- possibly, + // non-rectangular -- border of the selection. + // + // (for non-rectangular selections, may return false even if + // kpView::onSelectionResizeHandle()) + virtual bool contains (const QPoint &point) const = 0; + bool contains (int x, int y) const; + + +// +// Content +// + +public: + // i.e. Has an image or text - not just a border. + virtual bool hasContent () const = 0; + + // Deletes the content, changing the selection back into a border. + // If the selection has no content, it does nothing. + virtual void deleteContent () = 0; + + +// +// Mutation - Movement +// + +public: + // (You only need to override this if you store your own border + // coordinates) + virtual void moveBy (int dx, int dy); + + // (These call moveBy() so if you only reimplement moveBy(), that should + // be sufficient) + void moveTo (int dx, int dy); + void moveTo (const QPoint &topLeftPoint); + + +// +// Rendering +// + +public: + // Renders the selection on top of <*destPixmap>. This does not render + // the border. + // + // is the document rectangle that <*destPixmap> represents. + // + // You need to clip to boundingRect() or if you are a non-rectangular + // selection, an even smaller region, + // + // However, there is no need to do any explicit clipping to , + // since any drawing outside the bounds of is discarded. + // However, you may choose to clip for whatever reason e.g. performance. + virtual void paint (QImage *destPixmap, const QRect &docRect) const = 0; + + +protected: + // Use this to implement paintBorder() for rectangular selections. + void paintRectangularBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const; + + // Use this to implement paintBorder() for non-rectangular selections + // (this calls calculatePoints()). + // + // If , this also draws a bounding rectangular box. + void paintPolygonalBorder (const QPolygon &points, + QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const; + +public: + // Renders the selection border on top of <*destPixmap>. + // + // is the same as for paint(). + // + // If is false, the user is still dragging out the + // selection border so it may be drawn differently. + virtual void paintBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const = 0; + + +signals: + // Signals that a view update is required in the document region , + // due to the selection changing. + void changed (const QRect &docRect); + + +private: + struct kpAbstractSelectionPrivate * const d; +}; + + +#endif // KPABSTRACTSELECTION_H diff --git a/layers/selections/kpSelectionDrag.cpp b/layers/selections/kpSelectionDrag.cpp new file mode 100644 index 0000000..439dab8 --- /dev/null +++ b/layers/selections/kpSelectionDrag.cpp @@ -0,0 +1,166 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION_DRAG 0 + + +#include "kpSelectionDrag.h" + +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include "kpSelectionFactory.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "layers/selections/image/kpRectangularImageSelection.h" + +//--------------------------------------------------------------------- + +// public static +const char * const kpSelectionDrag::SelectionMimeType = + "application/x-kolourpaint-selection-400"; + +//--------------------------------------------------------------------- + +kpSelectionDrag::kpSelectionDrag (const kpAbstractImageSelection &sel) +{ +#if DEBUG_KP_SELECTION_DRAG && 1 + qCDebug(kpLogLayers) << "kpSelectionDrag() w=" << sel.width () + << " h=" << sel.height (); +#endif + + Q_ASSERT (sel.hasContent ()); + + // Store as selection. + QByteArray ba; + { + QDataStream stream (&ba, QIODevice::WriteOnly); + stream << sel; + } + setData (kpSelectionDrag::SelectionMimeType, ba); + + // Store as image (so that QMimeData::hasImage()) works). + // OPT: an awful waste of memory storing image in both selection and QImage + const QImage image = sel.baseImage (); +#if DEBUG_KP_SELECTION_DRAG && 1 + qCDebug(kpLogLayers) << "\timage: w=" << image.width () + << " h=" << image.height (); +#endif + if (image.isNull ()) + { + // TODO: proper error handling. + qCCritical(kpLogLayers) << "kpSelectionDrag::setSelection() could not convert to image"; + } + else { + setImageData (image); + } +} + +//--------------------------------------------------------------------- +// public static + +bool kpSelectionDrag::canDecode(const QMimeData *mimeData) +{ + Q_ASSERT(mimeData); + +#if DEBUG_KP_SELECTION_DRAG + qCDebug(kpLogLayers) << "kpSelectionDrag::canDecode()" + << "hasSel=" << mimeData->hasFormat(kpSelectionDrag::SelectionMimeType) + << "hasImage=" << mimeData->hasImage(); +#endif + + // mimeData->hasImage() would not check if the data is a valid image + return mimeData->hasFormat(kpSelectionDrag::SelectionMimeType) || + !qvariant_cast(mimeData->imageData()).isNull(); +} + +//--------------------------------------------------------------------- +// public static + +kpAbstractImageSelection *kpSelectionDrag::decode(const QMimeData *mimeData) +{ +#if DEBUG_KP_SELECTION_DRAG + qCDebug(kpLogLayers) << "kpSelectionDrag::decode(kpAbstractSelection)"; +#endif + Q_ASSERT (mimeData); + + if (mimeData->hasFormat (kpSelectionDrag::SelectionMimeType)) + { + #if DEBUG_KP_SELECTION_DRAG + qCDebug(kpLogLayers) << "\tmimeSource hasFormat selection - just return it in QByteArray"; + #endif + QByteArray data = mimeData->data (kpSelectionDrag::SelectionMimeType); + QDataStream stream (&data, QIODevice::ReadOnly); + + return kpSelectionFactory::FromStream (stream); + } + + +#if DEBUG_KP_SELECTION_DRAG + qCDebug(kpLogLayers) << "\tmimeSource doesn't provide selection - try image"; +#endif + + QImage image = qvariant_cast (mimeData->imageData ()); + if (!image.isNull ()) + { +#if DEBUG_KP_SELECTION_DRAG + qCDebug(kpLogLayers) << "\tok w=" << image.width () << " h=" << image.height (); +#endif + + return new kpRectangularImageSelection ( + QRect (0, 0, image.width (), image.height ()), image); + } + + if ( mimeData->hasUrls() ) // no image, check for path to local image file + { + QList urls = mimeData->urls(); + + if ( urls.count() && urls[0].isLocalFile() ) + { + image.load(urls[0].toLocalFile()); + + if ( !image.isNull() ) + { + return new kpRectangularImageSelection( + QRect(0, 0, image.width(), image.height()), image); + } + } + } + + #if DEBUG_KP_SELECTION_DRAG + qCDebug(kpLogLayers) << "kpSelectionDrag::decode(kpAbstractSelection) mimeSource had no sel " + "and could not decode to image"; + #endif + return nullptr; + +} + +//--------------------------------------------------------------------- diff --git a/layers/selections/kpSelectionDrag.h b/layers/selections/kpSelectionDrag.h new file mode 100644 index 0000000..1da2d3f --- /dev/null +++ b/layers/selections/kpSelectionDrag.h @@ -0,0 +1,52 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_SELECTION_DRAG_H +#define KP_SELECTION_DRAG_H + +#include + +class kpAbstractImageSelection; + + +class kpSelectionDrag : public QMimeData +{ + Q_OBJECT + + public: + static const char * const SelectionMimeType; + + // ASSUMPTION: has content (is not just a border). + kpSelectionDrag(const kpAbstractImageSelection &sel); + + public: + static bool canDecode(const QMimeData *mimeData); + static kpAbstractImageSelection *decode(const QMimeData *mimeData); +}; + + +#endif // KP_SELECTION_DRAG_H diff --git a/layers/selections/kpSelectionFactory.cpp b/layers/selections/kpSelectionFactory.cpp new file mode 100644 index 0000000..1c6bba3 --- /dev/null +++ b/layers/selections/kpSelectionFactory.cpp @@ -0,0 +1,93 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "kpSelectionFactory.h" + +#include + +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "layers/selections/image/kpEllipticalImageSelection.h" +#include "layers/selections/image/kpFreeFormImageSelection.h" + +//--------------------------------------------------------------------- + +// public static +// TODO: KolourPaint has not been tested against invalid or malicious +// clipboard data [Bug #28]. +kpAbstractImageSelection *kpSelectionFactory::FromStream (QDataStream &stream) +{ +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "kpSelectionFactory::FromStream()"; +#endif + int serialID; + stream >> serialID; + +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "\tserialID=" << serialID; +#endif + + // Only image selections are marshalled. + // + // Text selections are only ever seen in the clipboard as ordinary text, + // not selections, since copying text formatting over the clipboard doesn't + // seem compelling. + kpAbstractImageSelection *imageSel = nullptr; + switch (serialID) + { + case kpRectangularImageSelection::SerialID: + imageSel = new kpRectangularImageSelection (); + break; + + case kpEllipticalImageSelection::SerialID: + imageSel = new kpEllipticalImageSelection (); + break; + + case kpFreeFormImageSelection::SerialID: + imageSel = new kpFreeFormImageSelection (); + break; + } + + // Unknown selection type? + if (imageSel == nullptr) + { + return nullptr; + } + + if (!imageSel->readFromStream (stream)) + { + delete imageSel; + return nullptr; + } + + return imageSel; +} + +//--------------------------------------------------------------------- diff --git a/layers/selections/kpSelectionFactory.h b/layers/selections/kpSelectionFactory.h new file mode 100644 index 0000000..b492c5b --- /dev/null +++ b/layers/selections/kpSelectionFactory.h @@ -0,0 +1,48 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpSelectionFactory_H +#define kpSelectionFactory_H + + +#include "pixmapfx/kpPixmapFX.h" + + +class QDataStream; + +class kpAbstractImageSelection; + + +class kpSelectionFactory +{ +public: + static kpAbstractImageSelection *FromStream (QDataStream &stream); +}; + + +#endif // kpSelectionFactory_H diff --git a/layers/selections/text/kpPreeditText.cpp b/layers/selections/text/kpPreeditText.cpp new file mode 100644 index 0000000..f5348d8 --- /dev/null +++ b/layers/selections/text/kpPreeditText.cpp @@ -0,0 +1,142 @@ + +/* + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "layers/selections/text/kpPreeditText.h" + +//--------------------------------------------------------------------- + +bool attributeLessThan (const QInputMethodEvent::Attribute &a1, const QInputMethodEvent::Attribute &a2) +{ + return a1.start < a2.start; +} + +//--------------------------------------------------------------------- + +kpPreeditText::kpPreeditText () + : m_cursorPosition (0), m_cursorColor (Qt::transparent), + m_selectionStart (0), m_selectionLength (0), + m_position (-1, -1) +{ +} + +//--------------------------------------------------------------------- + +kpPreeditText::kpPreeditText (const QInputMethodEvent *event) + : m_cursorPosition (0), m_cursorColor (Qt::transparent), + m_selectionStart (0), m_selectionLength (0), + m_position (-1, -1) +{ + m_preeditString = event->preeditString (); + for (const auto &attr : event->attributes ()) + { + switch (attr.type) + { + case QInputMethodEvent::TextFormat: + m_textFormatList.append (attr); + break; + case QInputMethodEvent::Cursor: + m_cursorPosition = attr.start; + if (attr.length > 0) + { + m_cursorColor = attr.value.value (); + } + break; + case QInputMethodEvent::Selection: + m_selectionStart = attr.start; + m_selectionLength = attr.length; + break; + default: + break; + } + } + std::sort(m_textFormatList.begin(), m_textFormatList.end(), attributeLessThan); +} + +//--------------------------------------------------------------------- + +bool kpPreeditText::isEmpty () const +{ + return m_preeditString.isEmpty (); +} + +//--------------------------------------------------------------------- + +const QString &kpPreeditText::preeditString () const +{ + return m_preeditString; +} + +//--------------------------------------------------------------------- + +int kpPreeditText::cursorPosition () const +{ + return m_cursorPosition; +} + +//--------------------------------------------------------------------- + +const QColor &kpPreeditText::cursorColor () const +{ + return m_cursorColor; +} + +//--------------------------------------------------------------------- + +int kpPreeditText::selectionStart () const +{ + return m_selectionStart; +} + +//--------------------------------------------------------------------- + +int kpPreeditText::selectionLength () const +{ + return m_selectionLength; +} + +//--------------------------------------------------------------------- + +const QList &kpPreeditText::textFormatList () const +{ + return m_textFormatList; +} + +//--------------------------------------------------------------------- + +const QPoint &kpPreeditText::position () const +{ + return m_position; +} + +//--------------------------------------------------------------------- + +void kpPreeditText::setPosition (const QPoint &position) +{ + m_position = position; +} + +//--------------------------------------------------------------------- diff --git a/layers/selections/text/kpPreeditText.h b/layers/selections/text/kpPreeditText.h new file mode 100644 index 0000000..2870a19 --- /dev/null +++ b/layers/selections/text/kpPreeditText.h @@ -0,0 +1,65 @@ + +/* + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpPreeditText_H +#define kpPreeditText_H + +#include +#include +#include + +class kpPreeditText +{ +public: + kpPreeditText (); + kpPreeditText (const QInputMethodEvent *event); + + bool isEmpty () const; + + const QString &preeditString () const; + int cursorPosition () const; + bool cursorVisible () const; + const QColor &cursorColor () const; + int selectionStart () const; + int selectionLength () const; + const QList &textFormatList () const; + + const QPoint &position () const; + void setPosition (const QPoint &position); + +private: + QString m_preeditString; + int m_cursorPosition; + QColor m_cursorColor; + int m_selectionStart; + int m_selectionLength; + QList m_textFormatList; + QPoint m_position; +}; + +#endif // kpPreeditText_H diff --git a/layers/selections/text/kpTextSelection.cpp b/layers/selections/text/kpTextSelection.cpp new file mode 100644 index 0000000..fec26ec --- /dev/null +++ b/layers/selections/text/kpTextSelection.cpp @@ -0,0 +1,346 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "kpTextSelection.h" +#include "kpTextSelectionPrivate.h" + +#include "kpDefs.h" +#include "kpTextStyle.h" + +#include "kpLogCategories.h" + +#include +#include + + +// public +kpTextSelection::kpTextSelection (const QRect &rect, + const kpTextStyle &textStyle) + : kpAbstractSelection (rect), + d (new kpTextSelectionPrivate ()) +{ + d->textStyle = textStyle; +} + +// public +kpTextSelection::kpTextSelection (const QRect &rect, + const QList &textLines, + const kpTextStyle &textStyle) + : kpAbstractSelection (rect), + d (new kpTextSelectionPrivate ()) +{ + d->textLines = textLines; + d->textStyle = textStyle; +} + +// public +kpTextSelection::kpTextSelection (const kpTextSelection &rhs) + : kpAbstractSelection (), + d (new kpTextSelectionPrivate ()) +{ + *this = rhs; +} + +// public +kpTextSelection &kpTextSelection::operator= (const kpTextSelection &rhs) +{ + kpAbstractSelection::operator= (rhs); + + d->textLines = rhs.d->textLines; + d->textStyle = rhs.d->textStyle; + d->preeditText = rhs.d->preeditText; + + return *this; +} + +// public virtual [base kpAbstractSelection] +kpTextSelection *kpTextSelection::clone () const +{ + kpTextSelection *sel = new kpTextSelection (); + *sel = *this; + return sel; +} + +// public +kpTextSelection *kpTextSelection::resized (int newWidth, int newHeight) const +{ + return new kpTextSelection (QRect (x (), y (), newWidth, newHeight), + d->textLines, + d->textStyle); +} + +// public +kpTextSelection::~kpTextSelection () +{ + delete d; +} + + +// public virtual [kpAbstractSelection] +int kpTextSelection::serialID () const +{ + Q_ASSERT (!"Marshalling not supported"); + return -1; +} + +// public virtual [base kpAbstractSelection] +bool kpTextSelection::readFromStream (QDataStream &stream) +{ + (void) stream; + + Q_ASSERT (!"Marshalling not supported"); + return false; +} + +// public virtual [base kpAbstractSelection] +void kpTextSelection::writeToStream (QDataStream &stream) const +{ + (void) stream; + + Q_ASSERT (!"Marshalling not supported"); +} + + +// public virtual [kpAbstractSelection] +QString kpTextSelection::name () const +{ + return i18n ("Text"); +} + + +// public virtual [base kpAbstractSelection] +kpCommandSize::SizeType kpTextSelection::size () const +{ + return kpAbstractSelection::size () + + kpCommandSize::StringSize (text ()); +} + + +// public virtual [kpAbstractSelection] +bool kpTextSelection::isRectangular () const +{ + return true; +} + + +// public static +int kpTextSelection::MinimumWidthForTextStyle (const kpTextStyle &) +{ + return (kpTextSelection::TextBorderSize () * 2 + 5); +} + +// public static +int kpTextSelection::MinimumHeightForTextStyle (const kpTextStyle &) +{ + return (kpTextSelection::TextBorderSize () * 2 + 5); +} + +// public static +QSize kpTextSelection::MinimumSizeForTextStyle (const kpTextStyle &textStyle) +{ + return {kpTextSelection::MinimumWidthForTextStyle (textStyle), + kpTextSelection::MinimumHeightForTextStyle (textStyle)}; +} + + +// public virtual [kpAbstractSelection] +int kpTextSelection::minimumWidth () const +{ + return kpTextSelection::MinimumWidthForTextStyle (textStyle ()); +} + +// public virtual [kpAbstractSelection] +int kpTextSelection::minimumHeight () const +{ + return kpTextSelection::MinimumHeightForTextStyle (textStyle ()); +} + + +// public static +int kpTextSelection::PreferredMinimumWidthForTextStyle (const kpTextStyle &textStyle) +{ + const int about15CharsWidth = + textStyle.fontMetrics().horizontalAdvance(QLatin1String("1234567890abcde")); + + const int preferredMinWidth = + qMax (150, + kpTextSelection::TextBorderSize () * 2 + about15CharsWidth); + + return qMax (kpTextSelection::MinimumWidthForTextStyle (textStyle), + qMin (250, preferredMinWidth)); +} + +// public static +int kpTextSelection::PreferredMinimumHeightForTextStyle (const kpTextStyle &textStyle) +{ + const int preferredMinHeight = + kpTextSelection::TextBorderSize () * 2 + textStyle.fontMetrics ().height (); + + return qMax (kpTextSelection::MinimumHeightForTextStyle (textStyle), + qMin (150, preferredMinHeight)); +} + +// public static +QSize kpTextSelection::PreferredMinimumSizeForTextStyle (const kpTextStyle &textStyle) +{ + return {kpTextSelection::PreferredMinimumWidthForTextStyle (textStyle), + kpTextSelection::PreferredMinimumHeightForTextStyle (textStyle)}; +} + + +// public static +int kpTextSelection::TextBorderSize () +{ + return 1; +} + +// public +QRect kpTextSelection::textAreaRect () const +{ + return {x () + kpTextSelection::TextBorderSize (), + y () + kpTextSelection::TextBorderSize (), + width () - kpTextSelection::TextBorderSize () * 2, + height () - kpTextSelection::TextBorderSize () * 2}; +} + + +// public virtual [kpAbstractSelection] +QPolygon kpTextSelection::calculatePoints () const +{ + return kpAbstractSelection::CalculatePointsForRectangle (boundingRect ()); +} + + +// public virtual [kpAbstractSelection] +bool kpTextSelection::contains (const QPoint &point) const +{ + return boundingRect ().contains (point); +} + + +// public +bool kpTextSelection::pointIsInTextBorderArea (const QPoint &point) const +{ + return (boundingRect ().contains (point) && !pointIsInTextArea (point)); +} + +// public +bool kpTextSelection::pointIsInTextArea (const QPoint &point) const +{ + return textAreaRect ().contains (point); +} + + +// public virtual [kpAbstractSelection] +bool kpTextSelection::hasContent () const +{ + return !d->textLines.isEmpty (); +} + +// public virtual [kpAbstractSelection] +void kpTextSelection::deleteContent () +{ + if (!hasContent ()) { + return; + } + + setTextLines (QList ()); +} + + +// public +QList kpTextSelection::textLines () const +{ + return d->textLines; +} + +// public +void kpTextSelection::setTextLines (const QList &textLines_) +{ + d->textLines = textLines_; + + emit changed (boundingRect ()); +} + +//-------------------------------------------------------------------------------- + +// public static +QString kpTextSelection::textForTextLines(const QList &textLines) +{ + if (textLines.isEmpty ()) + return QString(); + + QString bigString = textLines[0]; + + for (int i = 1; i < textLines.count(); i++) + { + bigString += QLatin1String("\n"); + bigString += textLines[i]; + } + + return bigString; +} + +//-------------------------------------------------------------------------------- + +// public +QString kpTextSelection::text () const +{ + return kpTextSelection::textForTextLines (d->textLines); +} + + +// public +kpTextStyle kpTextSelection::textStyle () const +{ + return d->textStyle; +} + +// public +void kpTextSelection::setTextStyle (const kpTextStyle &textStyle) +{ + d->textStyle = textStyle; + + emit changed (boundingRect ()); +} + +kpPreeditText kpTextSelection::preeditText () const +{ + return d->preeditText; +} + +void kpTextSelection::setPreeditText (const kpPreeditText &preeditText) +{ + d->preeditText = preeditText; + emit changed (boundingRect ()); +} + diff --git a/layers/selections/text/kpTextSelection.h b/layers/selections/text/kpTextSelection.h new file mode 100644 index 0000000..40b50f6 --- /dev/null +++ b/layers/selections/text/kpTextSelection.h @@ -0,0 +1,294 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTextSelection_H +#define kpTextSelection_H + + +#include "layers/selections/kpAbstractSelection.h" +#include "imagelib/kpImage.h" +#include "layers/selections/text/kpTextStyle.h" +#include "layers/selections/text/kpPreeditText.h" + +// +// A rectangular text box containing lines of text, rendered in a given text +// style. +// +// A text selection with an empty list of text lines is just a text box +// border and contains no content. +// +// The minimal text selection that is considered to contain content consists +// of a single empty text line. +// +// The rendered elements are as follows: +// +// ############### +// # # +// # * *---------- Text Border +// # | # +// #####|######### +// | +// | +// Text Area +// (text lines are rendered on top of here; the parts of the lines +// that don't fit here are not rendered) +// +// The text style determines how the text box is drawn. +// +// The foreground color determines the color of the text. Transparent +// foreground text means that the text box is see-through for the pixels +// of the text, exposing the document pixels below. It does not mean +// that the transparent color is drawn onto the document. In other +// words, we are "painting" transparent pixels -- not "setting" them. +// +// If the background color is opaque, the text is drawn on top of a +// filled-in rectangle and the rectangle completely overwrites any +// document pixels below. +// +// Consistent with the behavior of a transparent foreground color, a +// transparent background color does not mean that a transparent-colored +// rectangle is drawn onto the document. Instead, it means that the +// text box background is see-through so that text is drawn directly on +// top of the document pixels. No rectangle is drawn in this case. +// +// A text box with transparent foreground and background colors is +// completely invisible since both the text and background are see-through. +// +// A rendered text cursor is controlled separately by kpViewManager, as +// cursors are only a view concept so do not belong in this document-based +// class. +// +// Marshalling, for copying text selections to the clipboard, is not +// currently supported. This is because generally, users are only interested +// in the text itself, not the border nor formatting. +// +class kpTextSelection : public kpAbstractSelection +{ +Q_OBJECT + +// +// Initialization +// + +public: + kpTextSelection (const QRect &rect = QRect (), + const kpTextStyle &textStyle = kpTextStyle ()); + kpTextSelection (const QRect &rect, const QList &textLines, + const kpTextStyle &textStyle); + kpTextSelection (const kpTextSelection &rhs); + + kpTextSelection &operator= (const kpTextSelection &rhs); + + kpTextSelection *clone () const override; + + // Returns a copy of the text selection but with new dimensions + // x . + kpTextSelection *resized (int newWidth, int newHeight) const; + + ~kpTextSelection () override; + + +// +// Marshalling +// + +public: + int serialID () const override; + + bool readFromStream (QDataStream &stream) override; + + void writeToStream (QDataStream &stream) const override; + + +// +// General Queries +// + +public: + QString name () const override; + + kpCommandSize::SizeType size () const override; + +public: + bool isRectangular () const override; + + +// +// Position & Dimensions +// + +public: + // Returns the absolute minimum size that a textbox must be if it is of + // the given . + // + // This leaves enough room for the border on all 4 sides and also a + // text area big enough to fit a character in an extremely small font. + static int MinimumWidthForTextStyle (const kpTextStyle &textStyle); + static int MinimumHeightForTextStyle (const kpTextStyle &textStyle); + static QSize MinimumSizeForTextStyle (const kpTextStyle &textStyle); + + // REFACTOR: Enforce in kpTextSelection, not just in kpToolSelection & + // when pasting (in kpMainWindow). + // + // Otherwise, if enforcement fails, e.g. textAreaRect() will + // not work. + int minimumWidth () const override; + int minimumHeight () const override; + +public: + // Returns the suggested minimum size that a textbox should be if it is of + // the given . + // + // This leaves enough room for the border on all 4 sides and also for + // a small line of the text in the given text style. + static int PreferredMinimumWidthForTextStyle (const kpTextStyle &textStyle); + static int PreferredMinimumHeightForTextStyle (const kpTextStyle &textStyle); + static QSize PreferredMinimumSizeForTextStyle (const kpTextStyle &textStyle); + +public: + // Returns the size of the text border. Constant. + static int TextBorderSize (); + + // Returns the rectangle that text lines are drawn on top of. + // This will be a sub-rectangle of boundingRect() and is therefore, + // in document coordinates like everything else in this class. + QRect textAreaRect () const; + +public: + QPolygon calculatePoints () const override; + + +// +// Point Testing +// + +public: + bool contains (const QPoint &point) const override; + +public: + bool pointIsInTextBorderArea (const QPoint &point) const; + bool pointIsInTextArea (const QPoint &point) const; + + +// +// Content +// + +public: + // (see class header comment) + bool hasContent () const override; + + void deleteContent () override; + +public: + QList textLines () const; + void setTextLines (const QList &textLines); + + static QString textForTextLines (const QList &textLines); + // Returns textLines() as one long newline-separated string. + // If the last text line is not empty, there is no trailing newline. + QString text () const; + + +// +// Text Style +// + +public: + kpTextStyle textStyle () const; + void setTextStyle (const kpTextStyle &textStyle); + + +// +// Preedit Text +// + +public: + kpPreeditText preeditText () const; + void setPreeditText (const kpPreeditText &preeditText); + +// +// Cursor +// +// A text cursor position is the row and column of a character in +// textLines(), that it is to the left of. As a result, a column value +// of 1 character past the last character of a text line is allowed. +// + +public: + // If the given point is in the text area, it returns the closest + // row/column (in textLines()) for the point. + // + // If the given point is not in the text area, it returns -1. + int closestTextRowForPoint (const QPoint &point) const; + int closestTextColForPoint (const QPoint &point) const; + + // Given a valid row and column in textLines(), returns the top-left + // point of where the text cursor should be rendered. + // TODO: Code is not symmetric to closestTest{Row,Col}ForPoint() + // [look at the Y/row value calculations] + // + // If the row and column is not inside textLines(), it returns + // KP_INVALID_POINT. + QPoint pointForTextRowCol (int row, int col) const; + + +// +// Rendering +// + +private: + void drawPreeditString(QPainter &painter, int &x, int y, const kpPreeditText &preeditText) const; + +public: + void paint(QImage *destPixmap, const QRect &docRect) const override; + + void paintBorder(QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const override; + +public: + // Returns an image that contains the painted text (without a border). + // + // If the text box has a see-through background, the image will be given + // an arbitrarily neutral background (currently, the transparent color). + // As a result, the returned image will be an approximation since text + // boxes are normally rendered -- and antialiased with -- a different + // background, namely the document image. Therefore, it is invalid to + // stamp the returned image onto the document image and expect it to look + // like stamping this text selection onto the document image (the latter + // is achieved via kpDocument::selectionPushOntoDocument(), antialiases + // and is more correct). + kpImage approximateImage () const; + + +private: + struct kpTextSelectionPrivate * const d; +}; + + +#endif // kpTextSelection_H diff --git a/layers/selections/text/kpTextSelectionPrivate.h b/layers/selections/text/kpTextSelectionPrivate.h new file mode 100644 index 0000000..6f3cbed --- /dev/null +++ b/layers/selections/text/kpTextSelectionPrivate.h @@ -0,0 +1,47 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTextSelectionPrivate_H +#define kpTextSelectionPrivate_H + + +#include + +#include "imagelib/kpImage.h" +#include "layers/selections/text/kpTextStyle.h" +#include "layers/selections/text/kpPreeditText.h" + +struct kpTextSelectionPrivate +{ + QList textLines; + kpTextStyle textStyle; + kpPreeditText preeditText; +}; + + +#endif // kpTextSelectionPrivate_H diff --git a/layers/selections/text/kpTextSelection_Cursor.cpp b/layers/selections/text/kpTextSelection_Cursor.cpp new file mode 100644 index 0000000..8db5b78 --- /dev/null +++ b/layers/selections/text/kpTextSelection_Cursor.cpp @@ -0,0 +1,129 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "kpTextSelection.h" +#include "kpTextSelectionPrivate.h" + +#include "kpDefs.h" +#include "kpTextStyle.h" +#include "kpPreeditText.h" + +#include "kpLogCategories.h" + +#include +#include + + +// public +int kpTextSelection::closestTextRowForPoint (const QPoint &point) const +{ + if (!pointIsInTextArea (point)) { + return -1; + } + + const QFontMetrics fontMetrics (d->textStyle.fontMetrics ()); + + int row = (point.y () - textAreaRect ().y ()) / + fontMetrics.lineSpacing (); + if (row >= static_cast (d->textLines.size ())) { + row = d->textLines.size () - 1; + } + + return row; +} + +// public +int kpTextSelection::closestTextColForPoint (const QPoint &point) const +{ + int row = closestTextRowForPoint (point); + if (row < 0 || row >= static_cast (d->textLines.size ())) { + return -1; + } + + const int localX = point.x () - textAreaRect ().x (); + + const QFontMetrics fontMetrics (d->textStyle.fontMetrics ()); + + // (should be 0 but call just in case) + int charLocalLeft = fontMetrics.horizontalAdvance(d->textLines [row], 0); + + // OPT: binary search or guess location then move + for (int col = 0; col < static_cast (d->textLines [row].length ()); col++) + { + // OPT: fontMetrics::charWidth() might be faster + const int nextCharLocalLeft = fontMetrics.horizontalAdvance(d->textLines [row], col + 1); + if (localX <= (charLocalLeft + nextCharLocalLeft) / 2) { + return col; + } + + charLocalLeft = nextCharLocalLeft; + } + + return d->textLines [row].length ()/*past end of line*/; +} + +//--------------------------------------------------------------------- + +// public +QPoint kpTextSelection::pointForTextRowCol (int row, int col) const +{ + kpPreeditText preeditText = d->preeditText; + if ((row < 0 || col < 0) || + (preeditText.isEmpty () && + (row >= static_cast (d->textLines.size ()) || col > static_cast (d->textLines [row].length ())))) + { +#if DEBUG_KP_SELECTION && 1 + qCDebug(kpLogLayers) << "kpTextSelection::pointForTextRowCol(" + << row << "," + << col << ") out of range" + << " textLines='" + << text () + << "'"; +#endif + return KP_INVALID_POINT; + } + + const QFontMetrics fontMetrics (d->textStyle.fontMetrics ()); + + QString line = (d->textLines.count () > row) ? d->textLines[row] : QString (); + if (row == preeditText.position ().y ()) + { + line.insert (preeditText.position ().x (), preeditText.preeditString ()); + } + const int x = fontMetrics.horizontalAdvance(line.left(col)); + const int y = row * fontMetrics.height () + + (row >= 1 ? row * fontMetrics.leading () : 0); + + return textAreaRect ().topLeft () + QPoint (x, y); +} + +//--------------------------------------------------------------------- diff --git a/layers/selections/text/kpTextSelection_Paint.cpp b/layers/selections/text/kpTextSelection_Paint.cpp new file mode 100644 index 0000000..e68c182 --- /dev/null +++ b/layers/selections/text/kpTextSelection_Paint.cpp @@ -0,0 +1,274 @@ + +// REFACTOR: Move into kpPainter + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION 0 + + +#include "kpTextSelection.h" +#include "kpTextSelectionPrivate.h" + +#include "kpTextStyle.h" +#include "kpPreeditText.h" +#include "pixmapfx/kpPixmapFX.h" + +#include "kpLogCategories.h" + +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------- + +void kpTextSelection::drawPreeditString(QPainter &painter, int &x, int y, const kpPreeditText &preeditText) const +{ + int i = 0; + const QString& preeditString = preeditText.preeditString (); + QString str; + for (const auto &attr : preeditText.textFormatList ()) + { + int start = attr.start; + int length = attr.length; + QTextCharFormat format = qvariant_cast (attr.value).toCharFormat (); + + if (i > start) + { + length = length - i + start; + start = i; + } + if (length <= 0) { + continue; + } + + if (i < start) + { + str = preeditString.mid (i, start - i); + painter.drawText (x, y, str); + x += painter.fontMetrics().horizontalAdvance(str); + } + + painter.save(); + str = preeditString.mid (start, length); + int width = painter.fontMetrics().horizontalAdvance(str); + if (format.background ().color () != Qt::black) + { + painter.save (); + painter.setPen (format.background ().color ()); + painter.setBrush (format.background()); + painter.drawRect (x, y - painter.fontMetrics ().ascent (), width, painter.fontMetrics ().height ()); + painter.restore (); + } + if (format.foreground ().color () != Qt::black) + { + painter.setBrush (format.foreground ()); + painter.setPen (format.foreground ().color ()); + } + if (format.underlineStyle ()) + { + painter.drawLine (x, y + painter.fontMetrics ().descent (), x + width, y + painter.fontMetrics ().descent ()); + } + painter.drawText (x, y, str); + + x += width; + painter.restore (); + + i = start + length; + } + if (i < preeditString.length ()) + { + str = preeditString.mid (i); + painter.drawText (x, y, str); + x += painter.fontMetrics().horizontalAdvance(str); + } +} + +//--------------------------------------------------------------------- + +// public virtual [kpAbstractSelection] +void kpTextSelection::paint(QImage *destPixmap, const QRect &docRect) const +{ +#if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "kpTextSelection::paint() textStyle: fcol=" + << (int *) d->textStyle.foregroundColor ().toQRgb () + << " bcol=" + << (int *) d->textStyle.backgroundColor ().toQRgb (); +#endif + + // Drawing text is slow so if the text box will be rendered completely + // outside of , don't bother rendering it at all. + const QRect modifyingRect = docRect.intersected (boundingRect ()); + if (modifyingRect.isEmpty ()) { + return; + } + + + // Is the text box completely invisible? + if (textStyle ().foregroundColor ().isTransparent () && + textStyle ().backgroundColor ().isTransparent ()) + { + return; + } + + kpImage floatImage(modifyingRect.size(), QImage::Format_ARGB32_Premultiplied); + floatImage.fill(0); + + QRect theWholeAreaRect, theTextAreaRect; + theWholeAreaRect = boundingRect ().translated (-modifyingRect.topLeft ()); + theTextAreaRect = textAreaRect ().translated (-modifyingRect.topLeft ()); + + QList theTextLines = textLines(); + kpTextStyle theTextStyle = textStyle(); + + const QFontMetrics fontMetrics (theTextStyle.font ()); + +#if DEBUG_KP_SELECTION + qCDebug(kpLogLayers) << "kpTextSelection_Paint.cpp:DrawTextHelper"; + qCDebug(kpLogLayers) << "\theight=" << fontMetrics.height () + << " leading=" << fontMetrics.leading () + << " ascent=" << fontMetrics.ascent () + << " descent=" << fontMetrics.descent () + << " lineSpacing=" << fontMetrics.lineSpacing (); +#endif + + QPainter painter(&floatImage); + + // Fill in the background using the transparent/opaque tool setting + if ( theTextStyle.isBackgroundTransparent() ) { + painter.fillRect(theWholeAreaRect, Qt::transparent); + } + else { + painter.fillRect(theWholeAreaRect, theTextStyle.backgroundColor().toQColor()); + } + + painter.setClipRect(theWholeAreaRect); + painter.setPen(theTextStyle.foregroundColor().toQColor()); + painter.setFont(theTextStyle.font()); + + if ( theTextStyle.foregroundColor().toQColor().alpha() < 255 ) + { + // if the foreground color has an alpha channel, we want to + // see through the background, so we first need to punch holes + // into the background where the text is + painter.setCompositionMode(QPainter::CompositionMode_Clear); + + int baseLine = theTextAreaRect.y () + fontMetrics.ascent (); + for (const auto &str : theTextLines) + { + painter.drawText (theTextAreaRect.x (), baseLine, str); + baseLine += fontMetrics.lineSpacing (); + + // if the next textline would already be below the visible text area, stop drawing + if ( (baseLine - fontMetrics.ascent()) > (theTextAreaRect.y() + theTextAreaRect.height()) ) { + break; + } + } + // the next text drawing will now blend the text foreground color with + // what is really below the text background + painter.setCompositionMode(QPainter::CompositionMode_SourceOver); + } + + // Draw a line at a time instead of using QPainter::drawText(QRect,...). + // Else, the line heights become >QFontMetrics::height() if you type Chinese + // characters (!) and then the cursor gets out of sync. + int baseLine = theTextAreaRect.y () + fontMetrics.ascent (); + + kpPreeditText thePreeditText = preeditText(); + + if ( theTextLines.isEmpty() ) + { + if ( ! thePreeditText.isEmpty() ) + { + int x = theTextAreaRect.x(); + drawPreeditString(painter, x, baseLine, thePreeditText); + } + } + else + { + int i = 0; + int row = thePreeditText.position().y(); + int col = thePreeditText.position().x(); + for (const auto &str : theTextLines) + { + if (row == i && !thePreeditText.isEmpty()) + { + QString left = str.left(col); + QString right = str.mid(col); + int x = theTextAreaRect.x(); + painter.drawText(x, baseLine, left); + x += fontMetrics.horizontalAdvance(left); + drawPreeditString(painter, x, baseLine, thePreeditText); + + painter.drawText(x, baseLine, right); + } + else + { + painter.drawText(theTextAreaRect.x (), baseLine, str); + } + baseLine += fontMetrics.lineSpacing(); + i++; + + // if the next textline would already be below the visible text area, stop drawing + if ( (baseLine - fontMetrics.ascent()) > (theTextAreaRect.y() + theTextAreaRect.height()) ) { + break; + } + } + } + + // ... convert that into "painting" transparent pixels on top of + // the document. + kpPixmapFX::paintPixmapAt (destPixmap, + modifyingRect.topLeft () - docRect.topLeft (), + floatImage); +} + +//--------------------------------------------------------------------- + + +// public virtual [kpAbstractSelection] +void kpTextSelection::paintBorder (QImage *destPixmap, const QRect &docRect, + bool selectionFinished) const +{ + paintRectangularBorder (destPixmap, docRect, selectionFinished); +} + +//--------------------------------------------------------------------- + +// public +kpImage kpTextSelection::approximateImage () const +{ + kpImage retImage (width (), height (), QImage::Format_ARGB32_Premultiplied); + retImage.fill(0); + paint (&retImage, boundingRect ()); + return retImage; +} + +//--------------------------------------------------------------------- diff --git a/layers/selections/text/kpTextStyle.cpp b/layers/selections/text/kpTextStyle.cpp new file mode 100644 index 0000000..5b05caf --- /dev/null +++ b/layers/selections/text/kpTextStyle.cpp @@ -0,0 +1,267 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "layers/selections/text/kpTextStyle.h" + +#include +#include +#include + + +kpTextStyle::kpTextStyle () + : m_fontSize (0), + m_isBold (false), m_isItalic (false), + m_isUnderline (false), m_isStrikeThru (false), + m_isBackgroundOpaque (true) +{ +} + +kpTextStyle::kpTextStyle (const QString &fontFamily, + int fontSize, + bool isBold, bool isItalic, + bool isUnderline, bool isStrikeThru, + const kpColor &fcolor, const kpColor &bcolor, + bool isBackgroundOpaque) + : m_fontFamily (fontFamily), + m_fontSize (fontSize), + m_isBold (isBold), m_isItalic (isItalic), + m_isUnderline (isUnderline), m_isStrikeThru (isStrikeThru), + m_foregroundColor (fcolor), m_backgroundColor (bcolor), + m_isBackgroundOpaque (isBackgroundOpaque) +{ +} + +kpTextStyle::~kpTextStyle () = default; + + +// friend +QDataStream &operator<< (QDataStream &stream, const kpTextStyle &textStyle) +{ + stream << textStyle.m_fontFamily; + stream << textStyle.m_fontSize; + + stream << int (textStyle.m_isBold) << int (textStyle.m_isItalic) + << int (textStyle.m_isUnderline) << int (textStyle.m_isStrikeThru); + + stream << textStyle.m_foregroundColor << textStyle.m_backgroundColor; + + stream << int (textStyle.m_isBackgroundOpaque); + + return stream; +} + +// friend +QDataStream &operator>> (QDataStream &stream, kpTextStyle &textStyle) +{ + stream >> textStyle.m_fontFamily; + stream >> textStyle.m_fontSize; + + int a, b, c, d; + stream >> a >> b >> c >> d; + textStyle.m_isBold = a; + textStyle.m_isItalic = b; + textStyle.m_isUnderline = c; + textStyle.m_isStrikeThru = d; + + stream >> textStyle.m_foregroundColor >> textStyle.m_backgroundColor; + + int e; + stream >> e; + textStyle.m_isBackgroundOpaque = e; + + return stream; +} + +// public +bool kpTextStyle::operator== (const kpTextStyle &rhs) const +{ + return (m_fontFamily == rhs.m_fontFamily && + m_fontSize == rhs.m_fontSize && + m_isBold == rhs.m_isBold && + m_isItalic == rhs.m_isItalic && + m_isUnderline == rhs.m_isUnderline && + m_isStrikeThru == rhs.m_isStrikeThru && + m_foregroundColor == rhs.m_foregroundColor && + m_backgroundColor == rhs.m_backgroundColor && + m_isBackgroundOpaque == rhs.m_isBackgroundOpaque); +} + +// public +bool kpTextStyle::operator!= (const kpTextStyle &rhs) const +{ + return !(*this == rhs); +} + + +// public +QString kpTextStyle::fontFamily () const +{ + return m_fontFamily; +} + +// public +void kpTextStyle::setFontFamily (const QString &f) +{ + m_fontFamily = f; +} + + +// public +int kpTextStyle::fontSize () const +{ + return m_fontSize; +} + +// public +void kpTextStyle::setFontSize (int s) +{ + m_fontSize = s; +} + + +// public +bool kpTextStyle::isBold () const +{ + return m_isBold; +} + +// public +void kpTextStyle::setBold (bool yes) +{ + m_isBold = yes; +} + + +// public +bool kpTextStyle::isItalic () const +{ + return m_isItalic; +} + +// public +void kpTextStyle::setItalic (bool yes) +{ + m_isItalic = yes; +} + + +// public +bool kpTextStyle::isUnderline () const +{ + return m_isUnderline; +} + +// public +void kpTextStyle::setUnderline (bool yes) +{ + m_isUnderline = yes; +} + + +// public +bool kpTextStyle::isStrikeThru () const +{ + return m_isStrikeThru; +} + +// public +void kpTextStyle::setStrikeThru (bool yes) +{ + m_isStrikeThru = yes; +} + + +// public +kpColor kpTextStyle::foregroundColor () const +{ + return m_foregroundColor; +} + +// public +void kpTextStyle::setForegroundColor (const kpColor &fcolor) +{ + m_foregroundColor = fcolor; +} + + +// public +kpColor kpTextStyle::backgroundColor () const +{ + return m_backgroundColor; +} + +// public +void kpTextStyle::setBackgroundColor (const kpColor &bcolor) +{ + m_backgroundColor = bcolor; +} + + +// public +bool kpTextStyle::isBackgroundOpaque () const +{ + return m_isBackgroundOpaque; +} + +// public +void kpTextStyle::setBackgroundOpaque (bool yes) +{ + m_isBackgroundOpaque = yes; +} + + +// public +bool kpTextStyle::isBackgroundTransparent () const +{ + return !m_isBackgroundOpaque; +} + +// public +void kpTextStyle::setBackgroundTransparent (bool yes) +{ + m_isBackgroundOpaque = !yes; +} + + +// public +QFont kpTextStyle::font () const +{ + QFont fnt (m_fontFamily, m_fontSize); + fnt.setBold (m_isBold); + fnt.setItalic (m_isItalic); + fnt.setUnderline (m_isUnderline); + fnt.setStrikeOut (m_isStrikeThru); + + return fnt; +} + +// public +QFontMetrics kpTextStyle::fontMetrics () const +{ + return QFontMetrics (font ()); +} diff --git a/layers/selections/text/kpTextStyle.h b/layers/selections/text/kpTextStyle.h new file mode 100644 index 0000000..c7ebfa2 --- /dev/null +++ b/layers/selections/text/kpTextStyle.h @@ -0,0 +1,107 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TEXT_STYLE_H +#define KP_TEXT_STYLE_H + + +#include + +#include "imagelib/kpColor.h" + + +class QDataStream; +class QFont; +class QFontMetrics; + + +class kpTextStyle +{ +public: + kpTextStyle (); + kpTextStyle (const QString &fontFamily, + int fontSize, + bool isBold, bool isItalic, + bool isUnderline, bool isStrikeThru, + const kpColor &fcolor, + const kpColor &bcolor, + bool isBackgroundOpaque); + ~kpTextStyle (); + + + friend QDataStream &operator<< (QDataStream &stream, const kpTextStyle &textStyle); + friend QDataStream &operator>> (QDataStream &stream, kpTextStyle &textStyle); + bool operator== (const kpTextStyle &rhs) const; + bool operator!= (const kpTextStyle &rhs) const; + + + QString fontFamily () const; + void setFontFamily (const QString &f); + + int fontSize () const; + void setFontSize (int s); + + bool isBold () const; + void setBold (bool yes = true); + + bool isItalic () const; + void setItalic (bool yes = true); + + bool isUnderline () const; + void setUnderline (bool yes = true); + + bool isStrikeThru () const; + void setStrikeThru (bool yes = true); + + kpColor foregroundColor () const; + void setForegroundColor (const kpColor &fcolor); + + // Note: This is the _input_ backgroundColor + kpColor backgroundColor () const; + void setBackgroundColor (const kpColor &bcolor); + + bool isBackgroundOpaque () const; + void setBackgroundOpaque (bool yes = true); + + bool isBackgroundTransparent () const; + void setBackgroundTransparent (bool yes = true); + + + QFont font () const; + QFontMetrics fontMetrics () const; + +private: + QString m_fontFamily; + int m_fontSize; + bool m_isBold, m_isItalic, m_isUnderline, m_isStrikeThru; + kpColor m_foregroundColor, m_backgroundColor; + bool m_isBackgroundOpaque; +}; + + +#endif // KP_TEXT_STYLE_H diff --git a/layers/tempImage/kpTempImage.cpp b/layers/tempImage/kpTempImage.cpp new file mode 100644 index 0000000..32d9b35 --- /dev/null +++ b/layers/tempImage/kpTempImage.cpp @@ -0,0 +1,218 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "layers/tempImage/kpTempImage.h" + +#include "pixmapfx/kpPixmapFX.h" +#include "views/manager/kpViewManager.h" + +#include + +//--------------------------------------------------------------------- + +kpTempImage::kpTempImage (bool isBrush, RenderMode renderMode, + const QPoint &topLeft, const kpImage &image) + : m_isBrush (isBrush), + m_renderMode (renderMode), + m_topLeft (topLeft), + m_image (image), + m_width (image.width ()), m_height (image.height ()), + m_userFunction (nullptr), + m_userData (nullptr) +{ + // Use below constructor for that. + Q_ASSERT (renderMode != UserFunction); +} + +//--------------------------------------------------------------------- + +kpTempImage::kpTempImage (bool isBrush, const QPoint &topLeft, + UserFunctionType userFunction, void *userData, + int width, int height) + : m_isBrush (isBrush), + m_renderMode (UserFunction), + m_topLeft (topLeft), + m_width (width), m_height (height), + m_userFunction (userFunction), + m_userData (userData) +{ + Q_ASSERT (m_userFunction); +} + +//--------------------------------------------------------------------- + +kpTempImage::kpTempImage (const kpTempImage &rhs) + : m_isBrush (rhs.m_isBrush), + m_renderMode (rhs.m_renderMode), + m_topLeft (rhs.m_topLeft), + m_image (rhs.m_image), + m_width (rhs.m_width), m_height (rhs.m_height), + m_userFunction (rhs.m_userFunction), + m_userData (rhs.m_userData) +{ +} + +//--------------------------------------------------------------------- + +kpTempImage &kpTempImage::operator= (const kpTempImage &rhs) +{ + if (this == &rhs) { + return *this; + } + + m_isBrush = rhs.m_isBrush; + m_renderMode = rhs.m_renderMode; + m_topLeft = rhs.m_topLeft; + m_image = rhs.m_image; + m_width = rhs.m_width; + m_height = rhs.m_height; + m_userFunction = rhs.m_userFunction; + m_userData = rhs.m_userData; + + return *this; +} + +//--------------------------------------------------------------------- + +// public +bool kpTempImage::isBrush () const +{ + return m_isBrush; +} + +//--------------------------------------------------------------------- + +// public +kpTempImage::RenderMode kpTempImage::renderMode () const +{ + return m_renderMode; +} + +//--------------------------------------------------------------------- + +// public +QPoint kpTempImage::topLeft () const +{ + return m_topLeft; +} + +//--------------------------------------------------------------------- + +// public +kpImage kpTempImage::image () const +{ + return m_image; +} + +//--------------------------------------------------------------------- + +// public +kpTempImage::UserFunctionType kpTempImage::userFunction () const +{ + return m_userFunction; +} + +//--------------------------------------------------------------------- + +// public +void *kpTempImage::userData () const +{ + return m_userData; +} + +//--------------------------------------------------------------------- + +// public +bool kpTempImage::isVisible (const kpViewManager *vm) const +{ + return m_isBrush ? static_cast (vm->viewUnderCursor ()) : true; +} + +//--------------------------------------------------------------------- + +// public +QRect kpTempImage::rect () const +{ + return {m_topLeft.x (), m_topLeft.y (), m_width, m_height}; +} + +//--------------------------------------------------------------------- + +// public +int kpTempImage::width () const +{ + return m_width; +} + +//--------------------------------------------------------------------- + +// public +int kpTempImage::height () const +{ + return m_height; +} + +//--------------------------------------------------------------------- + +// public +bool kpTempImage::paintMayAddMask () const +{ + return (m_renderMode == SetImage || + m_renderMode == UserFunction); +} + +//--------------------------------------------------------------------- + +// public +void kpTempImage::paint (kpImage *destImage, const QRect &docRect) const +{ + const QPoint REL_TOP_LEFT = m_topLeft - docRect.topLeft (); + + switch (m_renderMode) + { + case SetImage: + { + kpPixmapFX::setPixmapAt(destImage, REL_TOP_LEFT, m_image); + break; + } + + case PaintImage: + { + kpPixmapFX::paintPixmapAt(destImage, REL_TOP_LEFT, m_image); + break; + } + + case UserFunction: + { + m_userFunction(destImage, REL_TOP_LEFT, m_userData); + break; + } + } +} + +//--------------------------------------------------------------------- diff --git a/layers/tempImage/kpTempImage.h b/layers/tempImage/kpTempImage.h new file mode 100644 index 0000000..331f11e --- /dev/null +++ b/layers/tempImage/kpTempImage.h @@ -0,0 +1,110 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// REFACTOR: maybe make us and kpAbstractSelection share a new kpLayer base? + + +#ifndef kpTempImage_H +#define kpTempImage_H + + +#include + +#include "imagelib/kpImage.h" + + +class kpViewManager; + + +class kpTempImage +{ +public: + // REFACTOR: Extract into class hierarchy. + enum RenderMode + { + SetImage, + PaintImage, + UserFunction + }; + + // REFACTOR: Function pointers imply a need for a proper class hierarchy. + typedef void (*UserFunctionType) (kpImage * /*destImage*/, + const QPoint & /*topLeft*/, + void * /*userData*/); + + /* + * Specifies that its visibility is dependent on whether or + * not the mouse cursor is inside a view. If false, the + * image is always displayed. + * + * This is the only way of specifying the "UserFunction" + * . must not draw outside + * the claimed rectangle. + */ + kpTempImage (bool isBrush, RenderMode renderMode, const QPoint &topLeft, const kpImage &image); + kpTempImage (bool isBrush, const QPoint &topLeft, + UserFunctionType userFunction, void *userData, + int width, int height); + kpTempImage (const kpTempImage &rhs); + kpTempImage &operator= (const kpTempImage &rhs); + + bool isBrush () const; + RenderMode renderMode () const; + QPoint topLeft () const; + kpImage image () const; + UserFunctionType userFunction () const; + void *userData () const; + + bool isVisible (const kpViewManager *vm) const; + QRect rect () const; + int width () const; + int height () const; + + + // Returns whether a call to paint() may add a mask to <*destImage>. + bool paintMayAddMask () const; + + /* + * Draws itself onto <*destImage>, given that <*destImage> represents + * the unzoomed of the kpDocument. You should check for + * visibility before calling this function. + */ + void paint (kpImage *destImage, const QRect &docRect) const; + +private: + bool m_isBrush; + RenderMode m_renderMode; + QPoint m_topLeft; + kpImage m_image; + // == m_image.{width,height}() unless m_renderMode == UserFunction. + int m_width, m_height; + UserFunctionType m_userFunction; + void *m_userData; +}; + + +#endif // kpTempImage_H diff --git a/lgpl/CMakeLists.txt b/lgpl/CMakeLists.txt new file mode 100644 index 0000000..8789eba --- /dev/null +++ b/lgpl/CMakeLists.txt @@ -0,0 +1,36 @@ +# +# LGPL Library +# +# This MUST be a dynamic link library to avoid LGPL license infection. +# + +include(GenerateExportHeader) + +set(kolourpaint_lgpl_SRCS + generic/kpUrlFormatter.cpp + generic/kpColorCollection.cpp + generic/widgets/kpColorCellsBase.cpp +) + +add_library(kolourpaint_lgpl SHARED ${kolourpaint_lgpl_SRCS}) + +set(kolourpaint_lgpl_version 5) + +target_link_libraries(kolourpaint_lgpl + KF5::I18n + KF5::GuiAddons + KF5::WidgetsAddons + KF5::KIOCore + KF5::JobWidgets + Qt${QT_MAJOR_VERSION}::Widgets +) + +set_target_properties(kolourpaint_lgpl + PROPERTIES + VERSION ${kolourpaint_lgpl_version} + DEFINE_SYMBOL MAKE_KOLOURPAINT4_LGPL_LIB +) + +generate_export_header(kolourpaint_lgpl BASE_NAME kolourpaint_lgpl) + +install(TARGETS kolourpaint_lgpl ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/lgpl/generic/kpColorCollection.cpp b/lgpl/generic/kpColorCollection.cpp new file mode 100644 index 0000000..116cd03 --- /dev/null +++ b/lgpl/generic/kpColorCollection.cpp @@ -0,0 +1,518 @@ + +// REFACT0R: Remote open/save file logic is duplicated in kpDocument. +// HITODO: Test when remote file support in KDE 4 stabilizes + +/* This file is part of the KDE libraries + Copyright (C) 1999 Waldo Bastian (bastian@kde.org) + Copyright (C) 2007 Clarence Dang (dang@kde.org) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +//----------------------------------------------------------------------------- +// KDE color collection + +#define DEBUG_KP_COLOR_COLLECTION 0 + +#include "kpColorCollection.h" + +#include "kpUrlFormatter.h" + +#include +#include +#include +#include +#include +#include "kpLogCategories.h" +#include + +#include +#include +#include +#include +#include +#include +#include + +struct ColorNode +{ + ColorNode(const QColor &c, const QString &n) + : color(c), name(n) {} + + QColor color; + QString name; +}; + +//--------------------------------------------------------------------- + +Q_LOGGING_CATEGORY(kpLogColorCollection, "kp.colorCollection") + +//BEGIN kpColorCollectionPrivate +class kpColorCollectionPrivate +{ +public: + kpColorCollectionPrivate(); + kpColorCollectionPrivate(const kpColorCollectionPrivate&); + + QList colorList; + QString name; + QString desc; + kpColorCollection::Editable editable; +}; + +kpColorCollectionPrivate::kpColorCollectionPrivate() + : editable(kpColorCollection::Yes) +{ +} + +kpColorCollectionPrivate::kpColorCollectionPrivate(const kpColorCollectionPrivate& p) + : colorList(p.colorList), name(p.name), desc(p.desc), editable(p.editable) +{ +} +//END kpColorCollectionPrivate + +//--------------------------------------------------------------------- + +QStringList +kpColorCollection::installedCollections() +{ + QStringList paletteList; + + QStringList paths = QStandardPaths::locateAll(QStandardPaths::GenericConfigLocation, QStringLiteral("colors"), + QStandardPaths::LocateDirectory); + for (const auto &path : paths) { + paletteList.append(QDir(path).entryList(QStringList(), QDir::Files)); + } + + return paletteList; +} + +kpColorCollection::kpColorCollection() +{ + d = new kpColorCollectionPrivate(); +} + +kpColorCollection::kpColorCollection(const kpColorCollection &p) +{ + d = new kpColorCollectionPrivate(*p.d); +} + +kpColorCollection::~kpColorCollection() +{ + // Need auto-save? + delete d; +} + +static void CouldNotOpenDialog (const QUrl &url, QWidget *parent) +{ + KMessageBox::sorry (parent, + i18n ("Could not open color palette \"%1\".", + kpUrlFormatter::PrettyFilename (url))); +} + +// TODO: Set d->editable? +bool +kpColorCollection::open(const QUrl &url, QWidget *parent) +{ + if (url.isEmpty()) { + return false; + } + + KIO::StoredTransferJob *job = KIO::storedGet (url); + KJobWidgets::setWindow (job, parent); + + if (!job->exec ()) + { +#if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "\tcould not download"; +#endif + ::CouldNotOpenDialog (url, parent); + return false; + } + + const QByteArray &data = job->data(); + QTextStream stream(data); + + // Read first line + // Expected "GIMP Palette" or "KDE RGB Palette" or "KDE RGBA Palette" + QString line = stream.readLine(); + if (line.indexOf(QLatin1String(" Palette")) == -1) + { + KMessageBox::sorry (parent, + i18n ("Could not open color palette \"%1\" - unsupported format.\n" + "The file may be corrupt.", + kpUrlFormatter::PrettyFilename (url))); + return false; + } + + bool hasAlpha = line == QLatin1String("KDE RGBA Palette"); // new format includes alpha + + QList newColorList; + QString newDesc; + + while( !stream.atEnd() ) + { + line = stream.readLine(); + if ( !line.isEmpty() && (line[0] == '#') ) + { + // This is a comment line + line = line.mid(1); // Strip '#' + line = line.trimmed(); // Strip remaining white space.. + if (!line.isEmpty()) + { + newDesc += line+'\n'; // Add comment to description + } + } + else + { + // This is a color line, hopefully + line = line.trimmed(); + if (line.isEmpty()) continue; + int r, g, b, a = 255; + int pos = 0; + bool ok = false; + + if ( hasAlpha ) + ok = (sscanf(line.toLatin1(), "%d %d %d %d%n", &r, &g, &b, &a, &pos) >= 4); + else + ok = (sscanf(line.toLatin1(), "%d %d %d%n", &r, &g, &b, &pos) >= 3); + + if ( ok ) + { + r = qBound(0, r, 255); + g = qBound(0, g, 255); + b = qBound(0, b, 255); + a = qBound(0, a, 255); + QString name = line.mid(pos).trimmed(); + newColorList.append(ColorNode(QColor(r, g, b, a), name)); + } + } + } + + d->colorList = newColorList; + d->name.clear (); + d->desc = newDesc; + + return true; +} + +static void CouldNotOpenKDEDialog (const QString &name, QWidget *parent) +{ + KMessageBox::sorry (parent, + i18n ("Could not open KDE color palette \"%1\".", name)); +} + +bool +kpColorCollection::openKDE(const QString &name, QWidget *parent) +{ +#if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "name=" << name; +#endif + + if (name.isEmpty()) + { + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "name.isEmpty"; + #endif + ::CouldNotOpenKDEDialog (name, parent); + return false; + } + + QString filename = QStandardPaths::locate(QStandardPaths::GenericConfigLocation, + "colors/" + name); + if (filename.isEmpty()) + { + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "could not find file"; + #endif + ::CouldNotOpenKDEDialog (name, parent); + return false; + } + + // (this will pop up an error dialog on failure) + if (!open (QUrl::fromLocalFile (filename), parent)) + { + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "could not open"; + #endif + return false; + } + + d->name = name; +#if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "opened"; +#endif + return true; +} + +static void CouldNotSaveDialog (const QUrl &url, QWidget *parent) +{ + // TODO: use file.errorString() + KMessageBox::error (parent, + i18n ("Could not save color palette as \"%1\".", + kpUrlFormatter::PrettyFilename (url))); +} + +static void SaveToFile (kpColorCollectionPrivate *d, QIODevice *device) +{ + // HITODO: QTextStream can fail but does not report errors. + // Bug in KColorCollection too. + QTextStream str (device); + + QString description = d->desc.trimmed(); + description = '#' + description.split('\n', Qt::KeepEmptyParts).join(QLatin1String("\n#")); + + str << "KDE RGBA Palette\n"; + str << description << "\n"; + for (const auto &node : d->colorList) + { + // Added for KolourPaint. + if ( !node.color.isValid() ) + continue; + + int r, g, b, a; + node.color.getRgb(&r, &g, &b, &a); + str << r << " " << g << " " << b << " " << a << " " << node.name << "\n"; + } + + str.flush(); +} + +bool +kpColorCollection::saveAs(const QUrl &url, QWidget *parent) const +{ + if (url.isLocalFile ()) + { + const QString filename = url.toLocalFile (); + + // sync: All failure exit paths _must_ call QSaveFile::cancelWriting() or + // else, the QSaveFile destructor will overwrite the file, + // , despite the failure. + QSaveFile atomicFileWriter (filename); + { + if (!atomicFileWriter.open (QIODevice::WriteOnly)) + { + // We probably don't need this as has not been + // opened. + atomicFileWriter.cancelWriting (); + + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "\treturning false because could not open QSaveFile" + << " error=" << atomicFileWriter.error (); + #endif + ::CouldNotSaveDialog (url, parent); + return false; + } + + // Write to local temporary file. + ::SaveToFile (d, &atomicFileWriter); + + // Atomically overwrite local file with the temporary file + // we saved to. + if (!atomicFileWriter.commit ()) + { + atomicFileWriter.cancelWriting (); + + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "\tcould not close QSaveFile"; + #endif + ::CouldNotSaveDialog (url, parent); + return false; + } + } // sync QSaveFile.cancelWriting() + } + // Remote file? + else + { + // Create temporary file that is deleted when the variable goes + // out of scope. + QTemporaryFile tempFile; + if (!tempFile.open ()) + { + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "\treturning false because could not open tempFile"; + #endif + ::CouldNotSaveDialog (url, parent); + return false; + } + + // Write to local temporary file. + ::SaveToFile (d, &tempFile); + + // Collect name of temporary file now, as QTemporaryFile::fileName() + // stops working after close() is called. + const QString tempFileName = tempFile.fileName (); + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "\ttempFileName='" << tempFileName << "'"; + #endif + Q_ASSERT (!tempFileName.isEmpty ()); + + tempFile.close (); + if (tempFile.error () != QFile::NoError) + { + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "\treturning false because could not close"; + #endif + ::CouldNotSaveDialog (url, parent); + return false; + } + + // Copy local temporary file to overwrite remote. + KIO::FileCopyJob *job = KIO::file_copy (QUrl::fromLocalFile (tempFileName), + url, + -1, + KIO::Overwrite); + KJobWidgets::setWindow (job, parent); + if (!job->exec ()) + { + #if DEBUG_KP_COLOR_COLLECTION + qCDebug(kpLogColorCollection) << "\treturning false because could not upload"; + #endif + ::CouldNotSaveDialog (url, parent); + return false; + } + } + + d->name.clear (); + return true; +} + +QString kpColorCollection::description() const +{ + return d->desc; +} + +void kpColorCollection::setDescription(const QString &desc) +{ + d->desc = desc; +} + +QString kpColorCollection::name() const +{ + return d->name; +} + +void kpColorCollection::setName(const QString &name) +{ + d->name = name; +} + +kpColorCollection::Editable kpColorCollection::editable() const +{ + return d->editable; +} + +void kpColorCollection::setEditable(Editable editable) +{ + d->editable = editable; +} + +int kpColorCollection::count() const +{ + return (int) d->colorList.count(); +} + +void kpColorCollection::resize(int newCount) +{ + if (newCount == count()) + return; + else if (newCount < count()) + { + d->colorList.erase(d->colorList.begin() + newCount, d->colorList.end()); + } + else if (newCount > count()) + { + while(newCount > count()) + { + const int ret = addColor(QColor(), QString()/*color name*/); + Q_ASSERT(ret == count() - 1); + } + } +} + +kpColorCollection& +kpColorCollection::operator=( const kpColorCollection &p) +{ + if (&p == this) return *this; + d->colorList = p.d->colorList; + d->name = p.d->name; + d->desc = p.d->desc; + d->editable = p.d->editable; + return *this; +} + +QColor +kpColorCollection::color(int index) const +{ + if ((index < 0) || (index >= count())) + return {}; + + return d->colorList[index].color; +} + +int +kpColorCollection::findColor(const QColor &color) const +{ + for (int i = 0; i < d->colorList.size(); ++i) + { + if (d->colorList[i].color == color) + return i; + } + return -1; +} + +QString +kpColorCollection::name(int index) const +{ + if ((index < 0) || (index >= count())) + return {}; + + return d->colorList[index].name; +} + +QString kpColorCollection::name(const QColor &color) const +{ + return name(findColor(color)); +} + +int +kpColorCollection::addColor(const QColor &newColor, const QString &newColorName) +{ + d->colorList.append(ColorNode(newColor, newColorName)); + return count() - 1; +} + +int +kpColorCollection::changeColor(int index, + const QColor &newColor, + const QString &newColorName) +{ + if ((index < 0) || (index >= count())) + return -1; + + ColorNode& node = d->colorList[index]; + node.color = newColor; + node.name = newColorName; + + return index; +} + +int kpColorCollection::changeColor(const QColor &oldColor, + const QColor &newColor, + const QString &newColorName) +{ + return changeColor( findColor(oldColor), newColor, newColorName); +} + diff --git a/lgpl/generic/kpColorCollection.h b/lgpl/generic/kpColorCollection.h new file mode 100644 index 0000000..2455084 --- /dev/null +++ b/lgpl/generic/kpColorCollection.h @@ -0,0 +1,254 @@ + +// SYNC: Periodically merge in changes from: +// +// trunk/KDE/kdelibs/kdeui/colors/kcolorcollection.{h,cpp} +// +// which this is a fork of. +// +// Our changes can be merged back into KDE (grep for "Added for KolourPaint" and similar). + +/* This file is part of the KDE libraries + Copyright (C) 1999 Waldo Bastian (bastian@kde.org) + Copyright (C) 2007 Clarence Dang (dang@kde.org) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; version + 2 of the License. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +//----------------------------------------------------------------------------- +// KDE color collection. + +#ifndef kpColorCollection_H +#define kpColorCollection_H + +#include + +#include +#include +#include +#include +#include + +class QUrl; + +/** + * Class for handling color collections ("palettes"). + * + * This class makes it easy to handle color collections, sometimes referred to + * as "palettes". This class can read and write collections from and to a file. + * + * Collections that are managed by KDE have a non-empty name(). Collections + * stored in regular files have an empty name(). + * + * This class uses the "GIMP" palette file format. + * + * @author Waldo Bastian (bastian@kde.org), Clarence Dang (dang@kde.org) + **/ +class KOLOURPAINT_LGPL_EXPORT kpColorCollection +{ +public: + /** + * Query which KDE color collections are installed. + * + * @return A list with installed color collection names. + */ + static QStringList installedCollections(); + + /** + * kpColorCollection constructor + * + * argument removed for KolourPaint. + * Use openKDE() instead, which also has error handling. + **/ + explicit kpColorCollection(); + + /** + * kpColorCollection copy constructor. + **/ + kpColorCollection(const kpColorCollection &); + + /** + * kpColorCollection destructor. + **/ + ~kpColorCollection(); + + /** + * kpColorCollection assignment operator + **/ + kpColorCollection& operator=( const kpColorCollection &); + + // On failure, this prints an error dialog and returns false. + // On success, it sets the name() to an empty string and returns true. + // + // Added for KolourPaint. + bool open(const QUrl &url, QWidget *parent); + + // Same as open() but is given the name of a KDE palette, not a filename. + // + // @param name The name of collection as returned by installedCollections(). + // name() is set to this. + // + // Added for KolourPaint. + bool openKDE(const QString &name, QWidget *parent); + + // On failure, this prints an error dialog and returns false. + // If the user cancels any presented overwrite dialog, it also returns false. + // On success, it returns true. + // + // The file can be overwritten without displaying any warning dialog, if + // is set to false. + // + // name() is set to an empty string. + // + // Added for KolourPaint. + bool saveAs(const QUrl &url, QWidget *parent) const; + + /** + * Get the description of the collection. + * @return the description of the collection. + **/ + QString description() const; + + /** + * Set the description of the collection. + * @param desc the new description + **/ + void setDescription(const QString &desc); + + /** + * Get the name of the collection. + * @return the name of the collection + **/ + QString name() const; + + /** + * Set the name of the collection. + * @param name the name of the collection + **/ + void setName(const QString &name); + + /** + * Used to specify whether a collection may be edited. + * @see editable() + * @see setEditable() + */ + enum Editable { Yes, ///< Collection may be edited + No, ///< Collection may not be edited + Ask ///< Ask user before editing + }; + + /** + * Returns whether the collection may be edited. + * @return the state of the collection + **/ + Editable editable() const; + + /** + * Change whether the collection may be edited. + * @param editable the state of the collection + **/ + void setEditable(Editable editable); + + /** + * Return the number of colors in the collection. + * @return the number of colors + **/ + int count() const; + + /** + * Adds invalid colors or removes colors so that there will be @p newCount + * colors in the color collection. + * + * @param target number of colors + * + * Added for KolourPaint. + */ + void resize(int newCount); + + /** + * Find color by index. + * @param index the index of the desired color + * @return The @p index -th color of the collection, null if not found. + **/ + QColor color(int index) const; + + /** + * Find index by @p color. + * @param color the color to find + * @return The index of the color in the collection or -1 if the + * color is not found. + **/ + int findColor(const QColor &color) const; + + /** + * Find color name by @p index. + * @param index the index of the color + * @return The name of the @p index -th color. + * Note that not all collections have named the colors. Null is + * returned if the color does not exist or has no name. + **/ + QString name(int index) const; + + /** + * Find color name by @p color. + * @return The name of color according to this collection. + * Note that not all collections have named the colors. + * Note also that each collection can give the same color + * a different name. + **/ + QString name(const QColor &color) const; + + /** + * Add a color. + * @param newColor The color to add. + * @param newColorName The name of the color, null to remove + * the name. + * @return The index of the added color. + **/ + int addColor(const QColor &newColor, + const QString &newColorName = QString()); + + /** + * Change a color. + * @param index Index of the color to change + * @param newColor The new color. + * @param newColorName The new color name, null to remove + * the name. + * @return The index of the new color or -1 if the color couldn't + * be changed. + **/ + int changeColor(int index, + const QColor &newColor, + const QString &newColorName = QString()); + + /** + * Change a color. + * @param oldColor The original color + * @param newColor The new color. + * @param newColorName The new color name, null to remove + * the name. + * @return The index of the new color or -1 if the color couldn't + * be changed. + **/ + int changeColor(const QColor &oldColor, + const QColor &newColor, + const QString &newColorName = QString()); + +private: + class kpColorCollectionPrivate *d; +}; + + +#endif // kpColorCollection_H + diff --git a/lgpl/generic/kpUrlFormatter.cpp b/lgpl/generic/kpUrlFormatter.cpp new file mode 100644 index 0000000..1ee98c4 --- /dev/null +++ b/lgpl/generic/kpUrlFormatter.cpp @@ -0,0 +1,65 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpUrlFormatter.h" + +#include +#include + +//--------------------------------------------------------------------- + +// public static +QString kpUrlFormatter::PrettyUrl (const QUrl &url) +{ + if (url.isEmpty ()) + { + return i18n ("Untitled"); + } + + return url.url (QUrl::PreferLocalFile); +} + +//--------------------------------------------------------------------- + +// public static +QString kpUrlFormatter::PrettyFilename (const QUrl &url) +{ + if (url.isEmpty ()) + { + return i18n ("Untitled"); + } + + if (url.fileName ().isEmpty ()) + { + return kpUrlFormatter::PrettyUrl (url); // better than the name "" + } + + return url.fileName (); +} + +//--------------------------------------------------------------------- diff --git a/lgpl/generic/kpUrlFormatter.h b/lgpl/generic/kpUrlFormatter.h new file mode 100644 index 0000000..5465450 --- /dev/null +++ b/lgpl/generic/kpUrlFormatter.h @@ -0,0 +1,57 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +// +// This class is in the lpgl/ folder because other code in the folder needs +// to access it. But it is not under the LPGL. +// + + +#ifndef kpUrlFormatter_H +#define kpUrlFormatter_H + +#include + + +class QString; + +class QUrl; + + +class KOLOURPAINT_LGPL_EXPORT kpUrlFormatter +{ +public: + // (will convert: empty Url --> "Untitled") + static QString PrettyUrl (const QUrl &url); + + // (will convert: empty Url --> "Untitled") + static QString PrettyFilename (const QUrl &url); +}; + + +#endif // kpUrlFormatter_H diff --git a/lgpl/generic/widgets/kpColorCellsBase.cpp b/lgpl/generic/widgets/kpColorCellsBase.cpp new file mode 100644 index 0000000..c9c041c --- /dev/null +++ b/lgpl/generic/widgets/kpColorCellsBase.cpp @@ -0,0 +1,563 @@ + +/* This file is part of the KDE libraries + Copyright (C) 1997 Martin Jones (mjones@kde.org) + Copyright (C) 2007 Roberto Raggi (roberto@kdevelop.org) + Copyright (C) 2007 Clarence Dang (dang@kde.org) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +//----------------------------------------------------------------------------- + +#define DEBUG_KP_COLOR_CELLS_BASE 0 + +#include "kpColorCellsBase.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "kpLogCategories.h" + +#include + + +class kpColorCellsBase::kpColorCellsBasePrivate +{ +public: + kpColorCellsBasePrivate(kpColorCellsBase *q): q(q) + { + colors = nullptr; + inMouse = false; + selected = -1; + shade = false; + acceptDrags = false; + cellsResizable = true; + } + + kpColorCellsBase *q; + + // Note: This is a good thing and is _not_ data duplication with the + // colors of QTableWidget cells, for the following reasons: + // + // 1. QColor in Qt4 is full-quality RGB. However, QTableWidget + // cells are lossy as their colors may be dithered on the screen. + // + // Eventually, this field will be changed to a kpColor. + // + // 2. We change the QTableWidget cells' colors when the widget is + // disabled (see changeEvent()). + // + // Therefore, do not remove this field without better reasons. + QColor *colors; + + QPoint mousePos; + int selected; + bool shade; + bool acceptDrags; + bool cellsResizable; + bool inMouse; +}; + +kpColorCellsBase::kpColorCellsBase( QWidget *parent, int rows, int cols ) + : QTableWidget( parent ), d(new kpColorCellsBasePrivate(this)) +{ + setItemDelegate(new QItemDelegate(this)); + + setFrameShape(QFrame::NoFrame); + d->shade = true; + setRowCount( rows ); + setColumnCount( cols ); + + verticalHeader()->setMinimumSectionSize(16); + verticalHeader()->hide(); + horizontalHeader()->setMinimumSectionSize(16); + horizontalHeader()->hide(); + + d->colors = new QColor [ rows * cols ]; + + d->selected = 0; + d->inMouse = false; + + // Drag'n'Drop + setAcceptDrops( true); + + setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); + setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); + viewport()->setBackgroundRole( QPalette::Window ); + setBackgroundRole( QPalette::Window ); +} + +kpColorCellsBase::~kpColorCellsBase() +{ + delete [] d->colors; + + delete d; +} + +void kpColorCellsBase::invalidateAllColors () +{ + for (int r = 0; r < rowCount (); r++) + for (int c = 0; c < columnCount (); c++) + d->colors [r * columnCount () + c] = QColor (); +} + +void kpColorCellsBase::clear() +{ + invalidateAllColors (); + QTableWidget::clear (); +} + +void kpColorCellsBase::clearContents() +{ + invalidateAllColors (); + QTableWidget::clearContents (); +} + +void kpColorCellsBase::setRowColumnCounts (int rows, int columns) +{ + const int oldRows = rowCount (), oldCols = columnCount (); + const int newRows = rows, newCols = columns; +#if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "oldRows=" << oldRows << "oldCols=" << oldCols + << "newRows=" << newRows << "newCols=" << newCols; +#endif + + if (oldRows == newRows && oldCols == newCols) + return; + + QTableWidget::setColumnCount (newCols); + QTableWidget::setRowCount (newRows); + + QColor *oldColors = d->colors; + d->colors = new QColor [newRows * newCols]; + + for (int r = 0; r < qMin (oldRows, newRows); r++) + for (int c = 0; c < qMin (oldCols, newCols); c++) + d->colors [r * newCols + c] = oldColors [r * oldCols + c]; + + delete [] oldColors; +} + +void kpColorCellsBase::setColumnCount (int newColumns) +{ + setRowColumnCounts (rowCount (), newColumns); +} + +void kpColorCellsBase::setRowCount (int newRows) +{ + setRowColumnCounts (newRows, columnCount ()); +} + +QColor kpColorCellsBase::color(int index) const +{ + return d->colors[index]; +} + +int kpColorCellsBase::count() const +{ + return rowCount() * columnCount(); +} + +void kpColorCellsBase::setShading(bool _shade) +{ + d->shade = _shade; +} + +void kpColorCellsBase::setAcceptDrags(bool _acceptDrags) +{ + d->acceptDrags = _acceptDrags; +} + +void kpColorCellsBase::setCellsResizable(bool yes) +{ + d->cellsResizable = yes; +} + +void kpColorCellsBase::setSelected(int index) +{ + Q_ASSERT( index >= 0 && index < count() ); + + d->selected = index; +} + +int kpColorCellsBase::selectedIndex() const +{ + return d->selected; +} + +//--------------------------------------------------------------------- + +static void TableWidgetItemSetColor (QTableWidgetItem *tableItem, const QColor &color) +{ + Q_ASSERT (tableItem); + QImage image(16, 16, QImage::Format_ARGB32_Premultiplied); + QPainter painter(&image); + const int StippleSize = 4; + QColor useColor; + + for (int dy = 0; dy < 16; dy += StippleSize) + { + for (int dx = 0; dx < 16; dx += StippleSize) + { + const bool parity = ((dy + dx) / StippleSize) % 2; + + if (!parity) + useColor = Qt::white; + else + useColor = Qt::lightGray; + + painter.fillRect(dx, dy, StippleSize, StippleSize, useColor); + } + } + + painter.fillRect(image.rect(), color); + painter.end(); + + tableItem->setData(Qt::BackgroundRole , QBrush(image)); +} + +//--------------------------------------------------------------------- + +void kpColorCellsBase::setColor( int column, const QColor &colorIn ) +{ + const int tableRow = column / columnCount(); + const int tableColumn = column % columnCount(); + + Q_ASSERT( tableRow >= 0 && tableRow < rowCount() ); + Q_ASSERT( tableColumn >= 0 && tableColumn < columnCount() ); + + QColor color = colorIn; + + d->colors[column] = color; + + QTableWidgetItem* tableItem = item(tableRow,tableColumn); + + if (color.isValid ()) + { + if ( tableItem == nullptr ) { + tableItem = new QTableWidgetItem(); + setItem(tableRow,tableColumn,tableItem); + } + + if (isEnabled ()) + ::TableWidgetItemSetColor (tableItem, color); + } + else + { + delete tableItem; + } + + emit colorChanged (column, color); +} + +void kpColorCellsBase::changeEvent( QEvent* event ) +{ + QTableWidget::changeEvent (event); + + if (event->type () != QEvent::EnabledChange) + return; + + for (int r = 0; r < rowCount (); r++) + { + for (int c = 0; c < columnCount (); c++) + { + const int index = r * columnCount () + c; + + QTableWidgetItem* tableItem = item(r, c); + + // See API Doc for this invariant. + Q_ASSERT (!!tableItem == d->colors [index].isValid ()); + + if (!tableItem) + continue; + + + QColor color; + if (isEnabled ()) + color = d->colors [index]; + else + color = palette ().color (backgroundRole ()); + + ::TableWidgetItemSetColor (tableItem, color); + } + } +} + +/*void kpColorCellsBase::paintCell( QPainter *painter, int row, int col ) +{ + painter->setRenderHint( QPainter::Antialiasing , true ); + + QBrush brush; + int w = 1; + + if (shade) + { + qDrawShadePanel( painter, 1, 1, cellWidth()-2, + cellHeight()-2, palette(), true, 1, &brush ); + w = 2; + } + QColor color = colors[ row * numCols() + col ]; + if (!color.isValid()) + { + if (!shade) return; + color = palette().color(backgroundRole()); + } + + const QRect colorRect( w, w, cellWidth()-w*2, cellHeight()-w*2 ); + painter->fillRect( colorRect, color ); + + if ( row * numCols() + col == selected ) { + painter->setPen( qGray(color.rgb())>=127 ? Qt::black : Qt::white ); + painter->drawLine( colorRect.topLeft(), colorRect.bottomRight() ); + painter->drawLine( colorRect.topRight(), colorRect.bottomLeft() ); + } +}*/ + +void kpColorCellsBase::resizeEvent( QResizeEvent* e ) +{ + if (d->cellsResizable) + { + // According to the Qt doc: + // If you need to set the width of a given column to a fixed value, call + // QHeaderView::resizeSection() on the table's {horizontal,vertical} + // header. + // Therefore we iterate over each row and column and set the header section + // size, as the sizeHint does indeed appear to be ignored in favor of a + // minimum size that is larger than what we want. + for ( int index = 0 ; index < columnCount() ; index++ ) + horizontalHeader()->resizeSection( index, sizeHintForColumn(index) ); + for ( int index = 0 ; index < rowCount() ; index++ ) + verticalHeader()->resizeSection( index, sizeHintForRow(index) ); + } + else + { + // Update scrollbars if they're forced on by a subclass. + // TODO: Should the d->cellsResizable path (from kdelibs) do this as well? + QTableWidget::resizeEvent (e); + } +} + +int kpColorCellsBase::sizeHintForColumn(int /*column*/) const +{ + // TODO: Should it be "(width() - frameWidth() * 2) / columnCount()"? + return width() / columnCount() ; +} + +int kpColorCellsBase::sizeHintForRow(int /*row*/) const +{ + // TODO: Should be "(height() - frameWidth() * 2) / rowCount()"? + return height() / rowCount() ; +} + +void kpColorCellsBase::mousePressEvent( QMouseEvent *e ) +{ + d->inMouse = true; + d->mousePos = e->pos(); +} + + +int kpColorCellsBase::positionToCell(const QPoint &pos, bool ignoreBorders, + bool allowEmptyCell) const +{ + //TODO ignoreBorders not yet handled + Q_UNUSED( ignoreBorders ) + + const int r = indexAt (pos).row (), c = indexAt (pos).column (); +#if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "r=" << r << "c=" << c; +#endif + + if (r == -1 || c == -1) + return -1; + + if (!allowEmptyCell && !itemAt(pos)) + return -1; + + const int cell = r * columnCount() + c; + + /*if (!ignoreBorders) + { + int border = 2; + int x = pos.x() - col * cellWidth(); + int y = pos.y() - row * cellHeight(); + if ( (x < border) || (x > cellWidth()-border) || + (y < border) || (y > cellHeight()-border)) + return -1; + }*/ + + return cell; +} + + +void kpColorCellsBase::mouseMoveEvent( QMouseEvent *e ) +{ + if( !(e->buttons() & Qt::LeftButton)) return; + + if(d->inMouse) { + int delay = QApplication::startDragDistance(); + if(e->x() > d->mousePos.x()+delay || e->x() < d->mousePos.x()-delay || + e->y() > d->mousePos.y()+delay || e->y() < d->mousePos.y()-delay){ + // Drag color object + int cell = positionToCell(d->mousePos); + if (cell != -1) + { + #if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "beginning drag from cell=" << cell + << "color: isValid=" << d->colors [cell].isValid () + << " rgba=" << (int *) d->colors [cell].rgba(); + #endif + Q_ASSERT (d->colors[cell].isValid()); + KColorMimeData::createDrag(d->colors[cell], this)->exec(Qt::CopyAction | Qt::MoveAction); + #if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "finished drag"; + #endif + } + } + } +} + + +// LOTODO: I'm not quite clear on how the drop actions logic is supposed +// to be done e.g.: +// +// 1. Who is supposed to call setDropAction(). +// 2. Which variant of accept(), setAccepted(), acceptProposedAction() etc. +// is supposed to be called to accept a move -- rather than copy -- +// action. +// +// Nevertheless, it appears to work -- probably because we restrict +// the non-Qt-default move/swap action to be intrawidget. +static void SetDropAction (QWidget *self, QDropEvent *event) +{ + // TODO: Would be nice to default to CopyAction if the destination cell + // is null. + if (event->source () == self && (event->keyboardModifiers () & Qt::ControlModifier) == 0) + event->setDropAction(Qt::MoveAction); + else + event->setDropAction(Qt::CopyAction); +} + +void kpColorCellsBase::dragEnterEvent( QDragEnterEvent *event) +{ +#if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "kpColorCellsBase::dragEnterEvent() acceptDrags=" + << d->acceptDrags + << " canDecode=" << KColorMimeData::canDecode(event->mimeData()); +#endif + event->setAccepted( d->acceptDrags && KColorMimeData::canDecode( event->mimeData())); + if (event->isAccepted ()) + ::SetDropAction (this, event); +} + +// Reimplemented to override QTableWidget's override. Else dropping doesn't work. +void kpColorCellsBase::dragMoveEvent (QDragMoveEvent *event) +{ +#if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "kpColorCellsBase::dragMoveEvent() acceptDrags=" + << d->acceptDrags + << " canDecode=" << KColorMimeData::canDecode(event->mimeData()); +#endif + // TODO: Disallow drag that isn't onto a cell. + event->setAccepted( d->acceptDrags && KColorMimeData::canDecode( event->mimeData())); + if (event->isAccepted ()) + ::SetDropAction (this, event); +} + +void kpColorCellsBase::dropEvent( QDropEvent *event) +{ + QColor c=KColorMimeData::fromMimeData(event->mimeData()); + + const int dragSourceCell = event->source () == this ? + positionToCell (d->mousePos, true) : + -1; +#if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "kpColorCellsBase::dropEvent()" + << "color: rgba=" << (const int *) c.rgba () << "isValid=" << c.isValid() + << "source=" << event->source () << "dragSourceCell=" << dragSourceCell; +#endif + if( c.isValid()) { + ::SetDropAction (this, event); + + int cell = positionToCell(event->pos(), true, true/*allow empty cell*/); + #if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "\tcell=" << cell; + #endif + // TODO: I believe kdelibs forgets to do this. + if (cell == -1) + return; + + // Avoid NOP. + if (cell == dragSourceCell) + return; + + QColor destOldColor = d->colors [cell]; + setColor(cell,c); + + #if DEBUG_KP_COLOR_CELLS_BASE + qCDebug(kpLogColorCollection) << "\tdropAction=" << event->dropAction () + << "destOldColor.rgba=" << (const int *) destOldColor.rgba (); + #endif + if (event->dropAction () == Qt::MoveAction && dragSourceCell != -1) { + setColor(dragSourceCell, destOldColor); + } + } +} + +void kpColorCellsBase::mouseReleaseEvent( QMouseEvent *e ) +{ + int cell = positionToCell(d->mousePos); + int currentCell = positionToCell(e->pos()); + + // If we release the mouse in another cell and we don't have + // a drag we should ignore this event. + if (currentCell != cell) + cell = -1; + + if ( (cell != -1) && (d->selected != cell) ) + { + d->selected = cell; + + const int newRow = cell/columnCount(); + const int newColumn = cell%columnCount(); + + clearSelection(); // we do not want old violet selected cells + + item(newRow,newColumn)->setSelected(true); + } + + d->inMouse = false; + if (cell != -1) + { + emit colorSelected( cell , color(cell) ); + emit colorSelectedWhitButton( cell , color(cell), e->button() ); + } +} + +void kpColorCellsBase::mouseDoubleClickEvent( QMouseEvent * /*e*/ ) +{ + int cell = positionToCell(d->mousePos, false, true/*allow empty cell*/); + + if (cell != -1) + emit colorDoubleClicked( cell , color(cell) ); +} + + diff --git a/lgpl/generic/widgets/kpColorCellsBase.h b/lgpl/generic/widgets/kpColorCellsBase.h new file mode 100644 index 0000000..e05b5d6 --- /dev/null +++ b/lgpl/generic/widgets/kpColorCellsBase.h @@ -0,0 +1,188 @@ + +// SYNC: Periodically merge in changes from: +// +// trunk/KDE/kdelibs/kdeui/colors/kcolordialog.{h,cpp} +// +// which this is a fork of. +// +// Our changes can be merged back into KDE (grep for "Added for KolourPaint" and similar). + +/* This file is part of the KDE libraries + Copyright (C) 1997 Martin Jones (mjones@kde.org) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +//---------------------------------------------------------------------- +// KDE color selection dialog. + +// layout management added Oct 1997 by Mario Weilguni +// + +#ifndef kpColorCellsBase_H +#define kpColorCellsBase_H + +#include + +#include +#include + +Q_DECLARE_LOGGING_CATEGORY(kpLogColorCollection) + +/** +* A table of editable color cells. +* +* @author Martin Jones +* +* Added for KolourPaint: +* +* If you have not called setColor() for a cell, its widget will not exist. +* So it is possible to have "holes" in this rectangular table of cells. +* You can delete a cell widget by calling setColor() with an invalid QColor. +* +* An invariant is that color() returns an invalid color iff the cells' widget +* does not exist. Note that: +* +* 1. You can double click on cells that don't contain a widget +* 2. You can drop onto -- but not drag from -- a cell that doesn't contain a +* widget +* +* If a color is dragged and dropped to-and-from the same instance of this +* widget, then the colors in the source and destination cells are swapped +* (this is a "move action"). +* +* If CTRL is held or they are not from the same instance, then the source +* cell's color is copied into the destination cell, without any change to +* the source cell (this is a "copy action"). +*/ +class KOLOURPAINT_LGPL_EXPORT kpColorCellsBase : public QTableWidget +{ + Q_OBJECT +public: + /** + * Constructs a new table of color cells, consisting of + * @p rows * @p columns colors. + * + * @param parent The parent of the new widget + * @param rows The number of rows in the table + * @param columns The number of columns in the table + * + * Specifying and was made optional for KolourPaint. + */ + kpColorCellsBase( QWidget *parent, int rows = 0, int columns = 0 ); + ~kpColorCellsBase() override; + +private: + /** Added for KolourPaint. */ + void invalidateAllColors (); + +public: + /** Added for KolourPaint. + WARNING: These are not virtual in QTableWidget. + */ + void clear (); + void clearContents (); + + /** Added for KolourPaint. */ + void setRowColumnCounts (int rows, int columns); + + /** Added for KolourPaint. + WARNING: These are not virtual in QTableWidget. + */ + void setColumnCount (int columns); + void setRowCount (int rows); + + /** Sets the color in the given index in the table. + + The following behavior change was added for KolourPaint: + + If is not valid, the cell widget at is deleted. + */ + void setColor( int index, const QColor &col ); + /** Returns the color at a given index in the table. + If a cell widget does not exist at , the invalid color is + returned. + */ + QColor color( int index ) const; + /** Returns the total number of color cells in the table */ + int count() const; + + void setShading(bool shade); + void setAcceptDrags(bool acceptDrags); + + /** Whether component cells should resize with the entire widget. + Default is true. + + Added for KolourPaint. + */ + void setCellsResizable(bool yes); + + /** Sets the currently selected cell to @p index */ + void setSelected(int index); + /** Returns the index of the cell which is currently selected */ + int selectedIndex() const; + +Q_SIGNALS: + /** Emitted when a color is selected in the table */ + void colorSelected( int index , const QColor& color ); + /** Emitted with the above. + + Added for KolourPaint. + */ + void colorSelectedWhitButton( int index , const QColor& color, Qt::MouseButton button ); + + /** Emitted when a color in the table is double-clicked */ + void colorDoubleClicked( int index , const QColor& color ); + + /** Emitted when setColor() is called. + This includes when a color is dropped onto the table, via drag-and-drop. + + Added for KolourPaint. + */ + void colorChanged( int index , const QColor& color ); + +protected: + /** Grays out the cells, when the object is disabled. + Added for KolourPaint. + */ + void changeEvent( QEvent* event ) override; + + // the three methods below are used to ensure equal column widths and row heights + // for all cells and to update the widths/heights when the widget is resized + int sizeHintForColumn(int column) const override; + int sizeHintForRow(int column) const override; + void resizeEvent( QResizeEvent* event ) override; + + void mouseReleaseEvent( QMouseEvent * ) override; + void mousePressEvent( QMouseEvent * ) override; + void mouseMoveEvent( QMouseEvent * ) override; + void dragEnterEvent( QDragEnterEvent * ) override; + void dragMoveEvent( QDragMoveEvent * ) override; + void dropEvent( QDropEvent *) override; + void mouseDoubleClickEvent( QMouseEvent * ) override; + + /** was added for KolourPaint. */ + int positionToCell(const QPoint &pos, bool ignoreBorders=false, + bool allowEmptyCell=false) const; + +private: + class kpColorCellsBasePrivate; + friend class kpColorCellsBasePrivate; + kpColorCellsBasePrivate *const d; + + Q_DISABLE_COPY(kpColorCellsBase) +}; + +#endif // kpColorCellsBase_H diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..ba290c4 Binary files /dev/null and b/logo.png differ diff --git a/mainWindow/kpMainWindow.cpp b/mainWindow/kpMainWindow.cpp new file mode 100644 index 0000000..04d06ed --- /dev/null +++ b/mainWindow/kpMainWindow.cpp @@ -0,0 +1,923 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpMainWindow.h" +#include "kpMainWindowPrivate.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "environments/commands/kpCommandEnvironment.h" +#include "environments/tools/kpToolEnvironment.h" +#include "widgets/kpColorCells.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "environments/document/kpDocumentEnvironment.h" +#include "layers/selections/kpSelectionDrag.h" +#include "kpThumbnail.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" +#include "generic/kpWidgetMapper.h" +#include "views/kpZoomedThumbnailView.h" +#include "views/kpZoomedView.h" + +#include +#include +#include + +#include +#include +#include +#include + +#include "kpLogCategories.h" + + +//--------------------------------------------------------------------- + +kpMainWindow::kpMainWindow () + : KXmlGuiWindow (nullptr/*parent*/) +{ + init (); + open (QUrl (), true/*create an empty doc*/); + + d->isFullyConstructed = true; +} + +//--------------------------------------------------------------------- + +kpMainWindow::kpMainWindow (const QUrl &url) + : KXmlGuiWindow (nullptr/*parent*/) +{ + init (); + open (url, true/*create an empty doc with the same url if url !exist*/); + + d->isFullyConstructed = true; +} + +//--------------------------------------------------------------------- + +kpMainWindow::kpMainWindow (kpDocument *newDoc) + : KXmlGuiWindow (nullptr/*parent*/) +{ + init (); + setDocument (newDoc); + + d->isFullyConstructed = true; +} + +//--------------------------------------------------------------------- + + +// TODO: Move into appropriate kpMainWindow_*.cpp or another class + +// private +void kpMainWindow::readGeneralSettings () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tkpMainWindow(" << objectName () << ")::readGeneralSettings()"; +#endif + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + + d->configFirstTime = cfg.readEntry (kpSettingFirstTime, true); + d->configShowGrid = cfg.readEntry (kpSettingShowGrid, false); + d->configShowPath = cfg.readEntry (kpSettingShowPath, false); + d->moreEffectsDialogLastEffect = cfg.readEntry (kpSettingMoreEffectsLastEffect, 0); + kpToolEnvironment::drawAntiAliased = cfg.readEntry(kpSettingDrawAntiAliased, true); + + if (cfg.hasKey (kpSettingOpenImagesInSameWindow)) + { + d->configOpenImagesInSameWindow = cfg.readEntry (kpSettingOpenImagesInSameWindow, false); + } + else + { + d->configOpenImagesInSameWindow = false; +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tconfigOpenImagesInSameWindow: first time" + << " - writing default: " << d->configOpenImagesInSameWindow; +#endif + // TODO: More hidden options have to write themselves out on startup, + // not on use, to be discoverable (e.g. printing centered on page). + cfg.writeEntry (kpSettingOpenImagesInSameWindow, + d->configOpenImagesInSameWindow); + cfg.sync (); + } + + d->configPrintImageCenteredOnPage = cfg.readEntry (kpSettingPrintImageCenteredOnPage, true); + + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tGeneral Settings: firstTime=" << d->configFirstTime + << " showGrid=" << d->configShowGrid + << " showPath=" << d->configShowPath + << " moreEffectsDialogLastEffect=" << d->moreEffectsDialogLastEffect + << " openImagesInSameWindow=" << d->configOpenImagesInSameWindow + << " printImageCenteredOnPage=" << d->configPrintImageCenteredOnPage; +#endif +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::readThumbnailSettings () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tkpMainWindow(" << objectName () << ")::readThumbnailSettings()"; +#endif + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupThumbnail); + + d->configThumbnailShown = cfg.readEntry (kpSettingThumbnailShown, false); + d->configThumbnailGeometry = cfg.readEntry (kpSettingThumbnailGeometry, QRect ()); + d->configZoomedThumbnail = cfg.readEntry (kpSettingThumbnailZoomed, true); + d->configThumbnailShowRectangle = cfg.readEntry (kpSettingThumbnailShowRectangle, true); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tThumbnail Settings: shown=" << d->configThumbnailShown + << " geometry=" << d->configThumbnailGeometry + << " zoomed=" << d->configZoomedThumbnail + << " showRectangle=" << d->configThumbnailShowRectangle; +#endif +} + +//--------------------------------------------------------------------- + +void kpMainWindow::finalizeGUI(KXMLGUIClient *client) +{ + if ( client == this ) + { + const QList menuToHide = findChildren(QStringLiteral("toolToolBarHiddenMenu")); + // should only contain one but... + for (auto *menu : menuToHide) + { + menu->menuAction()->setVisible(false); + } + } +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::init () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow(" << objectName () << ")::init()"; + QTime totalTime; totalTime.start (); +#endif + + d = new kpMainWindowPrivate; + + // + // set mainwindow properties + // + + setMinimumSize (320, 260); + setAcceptDrops (true); + + // + // read config + // + + // KConfig::readEntry() does not actually reread from disk, hence doesn't + // realize what other processes have done e.g. Settings / Show Path + KSharedConfig::openConfig ()->reparseConfiguration (); + + readGeneralSettings (); + readThumbnailSettings (); + + // + // create GUI + // + setupActions (); + createStatusBar (); + createGUI (); + + createColorBox (); + createToolBox (); + + + // Let the Tool Box take all the vertical space, since it can be quite + // tall with all its tool option widgets. This also avoids occasional + // bugs like the Tool Box overlapping the Color Tool Bar. + setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); + setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); + + // no tabbed docks; does not make sense with only 2 dock widgets + setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks); + + addDockWidget(Qt::BottomDockWidgetArea, d->colorToolBar, Qt::Horizontal); + + d->scrollView = new kpViewScrollableContainer (this); + d->scrollView->setObjectName ( QStringLiteral("scrollView" )); + + connect (d->scrollView, &kpViewScrollableContainer::beganDocResize, + this, &kpMainWindow::slotBeganDocResize); + + connect (d->scrollView, &kpViewScrollableContainer::continuedDocResize, + this, &kpMainWindow::slotContinuedDocResize); + + connect (d->scrollView, &kpViewScrollableContainer::cancelledDocResize, + this, &kpMainWindow::slotCancelledDocResize); + + connect (d->scrollView, &kpViewScrollableContainer::endedDocResize, + this, &kpMainWindow::slotEndedDocResize); + + connect (d->scrollView, &kpViewScrollableContainer::statusMessageChanged, + this, &kpMainWindow::slotDocResizeMessageChanged); + + connect (d->scrollView, &kpViewScrollableContainer::contentsMoved, + this, &kpMainWindow::slotScrollViewAfterScroll); + + setCentralWidget (d->scrollView); + + // + // set initial pos/size of GUI + // + + setAutoSaveSettings (); + + // our non-XMLGUI tools-toolbar will get initially the toolButtonStyle as + // all other toolbars, but we want to show only icons for the tools by default + // (have to do this _after_ setAutoSaveSettings as that applies the default settings) + if (d->configFirstTime) + { + d->toolToolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); + + KConfigGroup cfg(KSharedConfig::openConfig(), kpSettingsGroupGeneral); + + cfg.writeEntry(kpSettingFirstTime, d->configFirstTime = false); + cfg.sync(); + } + + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tall done in " << totalTime.elapsed () << "msec"; +#endif +} + +//--------------------------------------------------------------------- + +// private virtual [base KMainWindow] +void kpMainWindow::readProperties (const KConfigGroup &configGroup) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow<" << this << ">::readProperties()"; +#endif + + // No document at all? + if (!configGroup.hasKey (kpSessionSettingDocumentUrl)) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tno url - no document"; + #endif + setDocument (nullptr); + } + // Have a document. + else + { + const QUrl url = QUrl (configGroup.readEntry (kpSessionSettingDocumentUrl, + QString ())); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\turl=" << url; + #endif + + const QSize notFromURLDocSize = + configGroup.readEntry (kpSessionSettingNotFromUrlDocumentSize, + QSize ()); + + // Is from URL? + if (notFromURLDocSize.isEmpty ()) + { + // If this fails, the empty document that kpMainWindow::kpMainWindow() + // created is left untouched. + openInternal (url, defaultDocSize (), + false/*show error message if url !exist*/); + } + // Not from URL? + else + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tnot from url; doc size=" << notFromURLDocSize; + #endif + // Either we have an empty URL or we have a "kolourpaint doesnotexist.png" + // URL. Regarding the latter case, if a file now actually exists at that + // URL, we do open it - ignoring notFromURLDocSize - to avoid putting + // the user in a situation where he might accidentally overwrite an + // existing file. + openInternal (url, notFromURLDocSize, + true/*create an empty doc with the same url if url !exist*/); + } + } + +} + +//--------------------------------------------------------------------- + +// private virtual [base KMainWindow] +// WARNING: KMainWindow API Doc says "No user interaction is allowed +// in this function!" +void kpMainWindow::saveProperties (KConfigGroup &configGroup) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow<" << this << ">::saveProperties()"; +#endif + + // No document at all? + if (!d->document) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tno url - no document"; + #endif + } + // Have a document. + else + { + // Save URL in all cases: + // + // a) d->document->isFromExistingURL() + // b) !d->document->isFromExistingURL() [save size in this case] + // i) No URL + // ii) URL (from "kolourpaint doesnotexist.png") + + const QUrl url = d->document->url (); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\turl=" << url; + #endif + configGroup.writeEntry (kpSessionSettingDocumentUrl, url.url ()); + + // Not from URL e.g. "kolourpaint doesnotexist.png"? + // + // Note that "kolourpaint doesexist.png" is considered to be from + // a URL even if it was deleted in the background. This is because the user expects + // it to be from a URL, so when we session restore, we pop up a + // "cannot find file" dialog, instead of silently creating a new, + // blank document. + if (!d->document->isFromExistingURL ()) + { + // If we don't have a URL either: + // + // a) it was not modified - so we can use either width() or + // constructorWidth() (they'll be equal). + // b) the changes were discarded so we use the initial width, + // constructorWidth(). + // + // Similarly for height() and constructorHeight(). + const QSize docSize (d->document->constructorWidth (), + d->document->constructorHeight ()); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tnot from url; doc size=" << docSize; + #endif + configGroup.writeEntry (kpSessionSettingNotFromUrlDocumentSize, docSize); + } + } +} + +//--------------------------------------------------------------------- + + +kpMainWindow::~kpMainWindow () +{ + d->isFullyConstructed = false; + + // Get the kpTool to finish up. This makes sure that the kpTool destructor + // will not need to access any other class (that might be deleted before + // the destructor is called by the QObject child-deletion mechanism). + if (tool ()) { + tool ()->endInternal (); + } + + // Delete document & views. + // Note: This will disconnects signals from the current kpTool, so kpTool + // must not be destructed yet. + setDocument (nullptr); + + delete d->commandHistory; d->commandHistory = nullptr; + delete d->scrollView; d->scrollView = nullptr; + + delete d; d = nullptr; +} + +//--------------------------------------------------------------------- + + +// public +kpDocument *kpMainWindow::document () const +{ + return d->document; +} + +//--------------------------------------------------------------------- + +// public +kpDocumentEnvironment *kpMainWindow::documentEnvironment () +{ + if (!d->documentEnvironment) { + d->documentEnvironment = new kpDocumentEnvironment (this); + } + + return d->documentEnvironment; +} + +//--------------------------------------------------------------------- + +// public +kpViewManager *kpMainWindow::viewManager () const +{ + return d->viewManager; +} + +//--------------------------------------------------------------------- + +// public +kpColorToolBar *kpMainWindow::colorToolBar () const +{ + return d->colorToolBar; +} + +//--------------------------------------------------------------------- + +// public +kpColorCells *kpMainWindow::colorCells () const +{ + return d->colorToolBar ? d->colorToolBar->colorCells () : nullptr; +} + +//--------------------------------------------------------------------- + +// public +kpToolToolBar *kpMainWindow::toolToolBar () const +{ + return d->toolToolBar; +} + +//--------------------------------------------------------------------- + +// public +kpCommandHistory *kpMainWindow::commandHistory () const +{ + return d->commandHistory; +} + +//--------------------------------------------------------------------- + +kpCommandEnvironment *kpMainWindow::commandEnvironment () +{ + if (!d->commandEnvironment) { + d->commandEnvironment = new kpCommandEnvironment (this); + } + + return d->commandEnvironment; +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setupActions () +{ + setupFileMenuActions (); + setupEditMenuActions (); + setupViewMenuActions (); + setupImageMenuActions (); + setupColorsMenuActions (); + setupSettingsMenuActions (); + + setupTextToolBarActions (); + setupToolActions (); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableDocumentActions (bool enable) +{ + enableFileMenuDocumentActions (enable); + enableEditMenuDocumentActions (enable); + enableViewMenuDocumentActions (enable); + enableImageMenuDocumentActions (enable); + enableColorsMenuDocumentActions (enable); + enableSettingsMenuDocumentActions (enable); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setDocument (kpDocument *newDoc) +{ + //qCDebug(kpLogMainWindow) << newDoc; + + // is it a close operation? + if (!newDoc) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tdisabling actions"; + #endif + + // sync with the bit marked "sync" below + + // TODO: Never disable the Color Box because the user should be + // able to manipulate the colors, even without a currently + // open document. + // + // We just have to make sure that signals from the Color + // Box aren't fired and received unexpectedly when there's + // no document. + Q_ASSERT (d->colorToolBar); + d->colorToolBar->setEnabled (false); + + enableTextToolBarActions (false); + } + + // Always disable the tools. + // If we decide to open a new document/mainView we want + // kpTool::begin() to be called again e.g. in case it sets the cursor. + // kpViewManager won't do this because we nuke it to avoid stale state. + enableToolsDocumentActions (false); + + if (!newDoc) + { + enableDocumentActions (false); + } + + delete d->mainView; d->mainView = nullptr; + slotDestroyThumbnail (); + + // viewManager will die and so will the selection + d->actionCopy->setEnabled (false); + d->actionCut->setEnabled (false); + d->actionDelete->setEnabled (false); + d->actionDeselect->setEnabled (false); + d->actionCopyToFile->setEnabled (false); + + delete d->viewManager; d->viewManager = nullptr; + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tdestroying document"; + qCDebug(kpLogMainWindow) << "\t\td->document=" << d->document; +#endif + // destroy current document + delete d->document; + d->document = newDoc; + + + if (!d->lastCopyToURL.isEmpty ()) + { + // remove file name from path + QString path = d->lastCopyToURL.path (); + path = path.left (path.lastIndexOf (QLatin1Char ('/')) + 1); + d->lastCopyToURL.setPath (path); + } + d->copyToFirstTime = true; + + if (!d->lastExportURL.isEmpty ()) + { + QString path = d->lastExportURL.path (); + path = path.left (path.lastIndexOf (QLatin1Char ('/')) + 1); + d->lastExportURL.setPath (path); + } + d->exportFirstTime = true; + + + // not a close operation? + if (d->document) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\treparenting doc that may have been created into a" + << " different mainWindiow"; + #endif + d->document->setEnviron (documentEnvironment ()); + + d->viewManager = new kpViewManager (this); + + d->mainView = new kpZoomedView (d->document, d->toolToolBar, d->viewManager, + nullptr/*buddyView*/, + d->scrollView, + d->scrollView->viewport ()); + d->mainView->setObjectName ( QStringLiteral("mainView" )); + + d->viewManager->registerView (d->mainView); + d->scrollView->setView (d->mainView); + d->mainView->show (); + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\thooking up document signals"; + #endif + + // Copy/Cut/Deselect/Delete + connect (d->document, &kpDocument::selectionEnabled, + d->actionCut, &QAction::setEnabled); + + connect (d->document, &kpDocument::selectionEnabled, + d->actionCopy, &QAction::setEnabled); + + connect (d->document, &kpDocument::selectionEnabled, + d->actionDelete, &QAction::setEnabled); + + connect (d->document, &kpDocument::selectionEnabled, + d->actionDeselect, &QAction::setEnabled); + + connect (d->document, &kpDocument::selectionEnabled, + d->actionCopyToFile, &QAction::setEnabled); + + // this code won't actually enable any actions at this stage + // (fresh document) but better safe than sorry + d->actionCopy->setEnabled (d->document->selection ()); + d->actionCut->setEnabled (d->document->selection ()); + d->actionDeselect->setEnabled (d->document->selection ()); + d->actionDelete->setEnabled (d->document->selection ()); + d->actionCopyToFile->setEnabled (d->document->selection ()); + + connect (d->document, &kpDocument::selectionEnabled, + this, &kpMainWindow::slotImageMenuUpdateDueToSelection); + + connect (d->document, &kpDocument::selectionIsTextChanged, + this, &kpMainWindow::slotImageMenuUpdateDueToSelection); + + // Status bar + connect (d->document, &kpDocument::documentOpened, + this, &kpMainWindow::recalculateStatusBar); + + connect (d->document, SIGNAL (sizeChanged(QSize)), + this, SLOT (setStatusBarDocSize(QSize))); + + // Caption (url, modified) + connect (d->document, &kpDocument::documentModified, + this, &kpMainWindow::slotUpdateCaption); + + connect (d->document, &kpDocument::documentOpened, + this, &kpMainWindow::slotUpdateCaption); + + connect (d->document, &kpDocument::documentSaved, + this, &kpMainWindow::slotUpdateCaption); + + // File/Reload action only available with non-empty URL + connect (d->document, &kpDocument::documentSaved, + this, &kpMainWindow::slotEnableReload); + + connect (d->document, &kpDocument::documentSaved, + this, &kpMainWindow::slotEnableSettingsShowPath); + + // Command history + Q_ASSERT (d->commandHistory); + connect (d->commandHistory, &kpCommandHistory::documentRestored, + this, &kpMainWindow::slotDocumentRestored); // caption "!modified" + + connect (d->document, &kpDocument::documentSaved, + d->commandHistory, &kpCommandHistory::documentSaved); + + // Sync document -> views + connect (d->document, &kpDocument::contentsChanged, + d->viewManager, &kpViewManager::updateViews); + + connect (d->document, static_cast(&kpDocument::sizeChanged), + d->viewManager, &kpViewManager::adjustViewsToEnvironment); + + connect (d->document, + static_cast(&kpDocument::sizeChanged), + d->viewManager, &kpViewManager::adjustViewsToEnvironment); + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tenabling actions"; + #endif + + // sync with the bit marked "sync" above + + Q_ASSERT (d->colorToolBar); + d->colorToolBar->setEnabled (true); + + + // Hide the text toolbar - it will be shown by kpToolText::begin() + enableTextToolBarActions (false); + + enableToolsDocumentActions (true); + + enableDocumentActions (true); + } + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tupdating mainWindow elements"; +#endif + + slotImageMenuUpdateDueToSelection (); + recalculateStatusBar (); + slotUpdateCaption (); // Untitled to start with + slotEnableReload (); + slotEnableSettingsShowPath (); + + if (d->commandHistory) { + d->commandHistory->clear (); + } + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tdocument and views ready to go!"; +#endif +} + +//--------------------------------------------------------------------- + +// private virtual [base QWidget] +void kpMainWindow::dragEnterEvent (QDragEnterEvent *e) +{ + // It's faster to test for QMimeData::hasText() first due to the + // lazy evaluation of the '||' operator. + e->setAccepted (e->mimeData ()->hasText () || + e->mimeData ()->hasUrls () || + kpSelectionDrag::canDecode (e->mimeData ())); +} + +//--------------------------------------------------------------------- + +// private virtual [base QWidget] +void kpMainWindow::dropEvent (QDropEvent *e) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::dropEvent" << e->pos (); +#endif + + QList urls; + + kpAbstractImageSelection *sel = kpSelectionDrag::decode (e->mimeData ()); + if (sel) + { + // TODO: How do you actually drop a selection or ordinary images on + // the clipboard)? Will this code path _ever_ execute? + sel->setTransparency (imageSelectionTransparency ()); + // TODO: drop at point like with QTextDrag below? + paste (*sel); + delete sel; + } + else if (!(urls = e->mimeData ()->urls ()).isEmpty ()) + { + // LOTODO: kpSetOverrideCursorSaver cursorSaver (Qt::waitCursor); + // + // However, you would need to prefix all possible error/warning + // dialogs that might be called, with Qt::arrowCursor e.g. in + // kpDocument and probably a lot more places. + for (const auto &u : urls) + open (u); + } + else if (e->mimeData ()->hasText ()) + { + const QString text = e->mimeData ()->text (); + + QPoint selTopLeft = KP_INVALID_POINT; + const QPoint globalPos = QWidget::mapToGlobal (e->pos ()); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tpos toGlobal=" << globalPos; + #endif + + kpView *view = nullptr; + + if (d->viewManager) + { + view = d->viewManager->viewUnderCursor (); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tviewUnderCursor=" << view; + #endif + if (!view) + { + // HACK: see kpViewManager::setViewUnderCursor() to see why + // it's not reliable + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tattempting to discover view"; + + if (d->mainView && d->scrollView) + { + qCDebug(kpLogMainWindow) << "\t\t\tmainView->globalRect=" + << kpWidgetMapper::toGlobal (d->mainView, d->mainView->rect ()) + << " scrollView->globalRect=" + << kpWidgetMapper::toGlobal (d->scrollView, + QRect (0, 0, + d->scrollView->viewport()->width (), + d->scrollView->viewport()->height ())); + } + #endif + if (d->thumbnailView && + kpWidgetMapper::toGlobal (d->thumbnailView, d->thumbnailView->rect ()) + .contains (globalPos)) + { + // TODO: Code will never get executed. + // Thumbnail doesn't accept drops. + view = d->thumbnailView; + } + else if (d->mainView && + kpWidgetMapper::toGlobal (d->mainView, d->mainView->rect ()) + .contains (globalPos) && + d->scrollView && + kpWidgetMapper::toGlobal (d->scrollView, + QRect (0, 0, + d->scrollView->viewport()->width (), + d->scrollView->viewport()->height ())) + .contains (globalPos)) + { + view = d->mainView; + } + } + } + + if (view) + { + const QPoint viewPos = view->mapFromGlobal (globalPos); + const QPoint docPoint = view->transformViewToDoc (viewPos); + + // viewUnderCursor() is hacky and can return a view when we aren't + // over one thanks to drags. + if (d->document && d->document->rect ().contains (docPoint)) + { + selTopLeft = docPoint; + + // TODO: In terms of doc pixels, would be inconsistent behaviour + // based on zoomLevel of view. + // selTopLeft -= QPoint (-view->selectionResizeHandleAtomicSize (), + // -view->selectionResizeHandleAtomicSize ()); + } + } + + pasteText (text, true/*force new text selection*/, selTopLeft); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotScrollViewAfterScroll () +{ + // OPT: Why can't this be moved into kpViewScrollableContainer::slotDragScroll(), + // grouping all drag-scroll-related repaints, which would potentially avoid + // double repainting? + if (tool ()) + { + tool ()->somethingBelowTheCursorChanged (); + } +} + +//--------------------------------------------------------------------- + +// private virtual [base QWidget] +void kpMainWindow::moveEvent (QMoveEvent * /*e*/) +{ + if (d->thumbnail) + { + // Disabled because it lags too far behind the mainWindow + // d->thumbnail->move (d->thumbnail->pos () + (e->pos () - e->oldPos ())); + + notifyThumbnailGeometryChanged (); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotUpdateCaption () +{ + if (d->document) + { + setCaption (d->configShowPath ? d->document->prettyUrl () + : d->document->prettyFilename (), + d->document->isModified ()); + } + else + { + setCaption (QString(), false); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotDocumentRestored () +{ + if (d->document) { + d->document->setModified (false); + } + slotUpdateCaption (); +} + +//--------------------------------------------------------------------- + diff --git a/mainWindow/kpMainWindow.h b/mainWindow/kpMainWindow.h new file mode 100644 index 0000000..4261525 --- /dev/null +++ b/mainWindow/kpMainWindow.h @@ -0,0 +1,692 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_MAIN_WINDOW_H +#define KP_MAIN_WINDOW_H + + +#include + +#include + +#include "kpDefs.h" +#include "pixmapfx/kpPixmapFX.h" +#include "imagelib/kpImage.h" + + +class QAction; +class QActionGroup; +class QDragEnterEvent; +class QDropEvent; +class QMenu; +class QMoveEvent; +class QPoint; +class QRect; +class QSize; + +class KConfigGroup; +class KToolBar; +class QPrinter; + +class kpColor; +class kpColorCells; +class kpColorToolBar; +class kpCommand; +class kpCommandEnvironment; +class kpCommandHistory; +class kpDocument; +class kpDocumentEnvironment; +class kpDocumentMetaInfo; +class kpDocumentSaveOptions; +class kpViewManager; +class kpImageSelectionTransparency; +class kpTextStyle; +class kpThumbnail; +class kpTool; +class kpToolEnvironment; +class kpToolSelectionEnvironment; +class kpToolToolBar; +class kpTransformDialogEnvironment; +class kpAbstractSelection; + +class kpMainWindow : public KXmlGuiWindow +{ +Q_OBJECT + +public: + // Opens a new window with a blank document. + kpMainWindow (); + + // Opens a new window with the document specified by + // or creates a blank document if could not be opened. + kpMainWindow (const QUrl &url); + + // Opens a new window with the document + // ( can be 0 although this would result in a new + // window without a document at all). + kpMainWindow (kpDocument *newDoc); + + void finalizeGUI(KXMLGUIClient *client) override; + +private: + void readGeneralSettings (); + void readThumbnailSettings (); + + void init (); + + // (only called for restoring a previous session e.g. starting KDE with + // a previously saved session; it's not called on normal KolourPaint + // startup) + void readProperties (const KConfigGroup &configGroup) override; + // (only called for saving the current session e.g. logging out of KDE + // with the KolourPaint window open; it's not called on normal KolourPaint + // exit) + void saveProperties (KConfigGroup &configGroup) override; + +public: + ~kpMainWindow () override; + +public: + kpDocument *document () const; + kpDocumentEnvironment *documentEnvironment (); + kpViewManager *viewManager () const; + kpColorToolBar *colorToolBar () const; + kpColorCells *colorCells () const; + kpToolToolBar *toolToolBar () const; + kpCommandHistory *commandHistory () const; + kpCommandEnvironment *commandEnvironment (); + +private: + void setupActions (); + void enableDocumentActions (bool enable = true); + + void setDocument (kpDocument *newDoc); + + void dragEnterEvent (QDragEnterEvent *e) override; + void dropEvent (QDropEvent *e) override; + void moveEvent (QMoveEvent *e) override; + +private slots: + void slotScrollViewAfterScroll (); + void slotUpdateCaption (); + void slotDocumentRestored (); + + +// +// Tools +// + +private: + kpToolSelectionEnvironment *toolSelectionEnvironment (); + kpToolEnvironment *toolEnvironment (); + + void setupToolActions (); + void createToolBox (); + void enableToolsDocumentActions (bool enable = true); + +private slots: + void updateToolOptionPrevNextActionsEnabled (); + void updateActionDrawOpaqueChecked (); +private: + void updateActionDrawOpaqueEnabled (); + +public: + QActionGroup *toolsActionGroup (); + + kpTool *tool () const; + + bool toolHasBegunShape () const; + bool toolIsASelectionTool (bool includingTextTool = true) const; + bool toolIsTextTool () const; + +private: + // Ends the current shape. If there is no shape currently being drawn, + // it does nothing. + // + // In general, call this at the start of every kpMainWindow slot, + // directly invoked by the _user_ (by activating an action or via another + // way), so that: + // + // 1. The document contains the pixels of that shape: + // + // Most tools have the shape, currently being drawn, layered above the + // document as a kpTempImage. In other words, the document does not + // yet contain the pixels of that shape. By ending the shape, the layer + // is pushed down onto the document so that it now contains those + // pixels. Your slot can now safely read the document as it's now + // consistent with what's on the screen. + // + // For example, consider the case where a line is being dragged out and + // CTRL+I is pressed to invert the image, while the mouse is still held + // down. The CTRL+I invert code (kpMainWindow::slotInvertColors()) must + // push the line kpTempImage onto the document before the invert can + // meaningfully proceed (else the invert will see the state of the document + // before the line was dragged out). + // + // Note that selection layers are not pushed down by this method. + // This is a feature, not a bug. The user would be annoyed if e.g. + // slotSave() happened to push down the selection. Use + // kpDocument::imageWithSelection() to get around this problem. You + // should still call toolEndShape() even if a selection is active + // -- this ends selection "shapes", which are actually things like + // selection moves or smearing operations, rather than the selections + // themselves. + // + // AND/OR: + // + // 2. The current tool is no longer in a drawing state: + // + // If your slot is going to bring up a new main window or modal dialog + // or at least some widget that acquires mouse or keyboard focus, this + // could confuse the tool if the tool is in the middle of a drawing + // operation. + // + // Do not call this in slots not invoked by the user. For instance, + // calling this method in response to an internal timer tick would be + // wrong. The user's drawing operation would unexpectedly finish and + // this would bewilder and irritate the user. + // + // TODO: Help / KolourPaint Handbook does not call this. I'm sure there + // are a few other actions that don't call this but should. + void toolEndShape (); + +public: + kpImageSelectionTransparency imageSelectionTransparency () const; + // The drawing background color is set to .transparentColor() + // if the is in Transparent mode or if + // is true (not the default). [x] + // + // If is in Opaque mode and is false, + // the background color is not changed because: + // + // 1. It is ignored by the selection in Opaque mode anyway. + // 2. This avoids irritating the user with an unnecessary background + // color change. + // + // The only case where you should set to true is in + // kpToolImageSelectionTransparencyCommand to ensure that the state + // is identical to when the command was constructed. + // Later: I don't think setting it to true is ever necessary since: + // + // 1. The background color only counts in Transparent mode. + // + // 2. Any kpToolImageSelectionTransparencyCommand that switches to + // Transparent mode will automatically set the background + // color due to the first part of [x] anyway. + // + // The other fields of are copied into the main window + // as expected. + void setImageSelectionTransparency (const kpImageSelectionTransparency &transparency, + bool forceColorChange = false); + int settingImageSelectionTransparency () const; + +private slots: + void slotToolSelected (kpTool *tool); + +private: + void readLastTool (); + int toolNumber () const; + void saveLastTool (); + +private: + bool maybeDragScrollingMainView () const; +private slots: + bool slotDragScroll (const QPoint &docPoint, + const QPoint &docLastPoint, + int zoomLevel, + bool *didSomething); + bool slotEndDragScroll (); + +private slots: + void slotBeganDocResize (); + void slotContinuedDocResize (const QSize &size); + void slotCancelledDocResize (); + void slotEndedDocResize (const QSize &size); + + void slotDocResizeMessageChanged (const QString &string); + +private slots: + void slotActionPrevToolOptionGroup1 (); + void slotActionNextToolOptionGroup1 (); + void slotActionPrevToolOptionGroup2 (); + void slotActionNextToolOptionGroup2 (); + + void slotActionDrawOpaqueToggled (); + void slotActionDrawColorSimilarity (); + +public slots: + void slotToolRectSelection(); + void slotToolEllipticalSelection(); + void slotToolFreeFormSelection(); + void slotToolText(); + +// +// File Menu +// + +private: + void setupFileMenuActions (); + void enableFileMenuDocumentActions (bool enable = true); + + void addRecentURL (const QUrl &url); + +private slots: + void slotNew (); + +private: + QSize defaultDocSize () const; + void saveDefaultDocSize (const QSize &size); + +private: + bool shouldOpen (); + void setDocumentChoosingWindow (kpDocument *doc); + +private: + kpDocument *openInternal (const QUrl &url, + const QSize &fallbackDocSize, + bool newDocSameNameIfNotExist); + // Same as above except that it: + // + // 1. Assumes a default fallback document size. + // 2. If the URL is successfully opened (with the special exception of + // the "kolourpaint doesnotexist.png" case), it is bubbled up to the + // top in the Recent Files Action. + // + // As a result of this behavior, this should only be called in response + // to a user open request e.g. File / Open or "kolourpaint doesexist.png". + // It should not be used for session restore - in that case, it does not + // make sense to bubble the Recent Files list. + bool open (const QUrl &url, bool newDocSameNameIfNotExist = false); + + QList askForOpenURLs(const QString &caption, + bool allowMultipleURLs = true); + +private slots: + void slotOpen (); + void slotOpenRecent (const QUrl &url); + void slotRecentListCleared(); + +#if HAVE_KSANE + void slotScan (); + void slotScanned (const QImage &image, int); +#endif // HAVE_KSANE + + void slotScreenshot(); + void slotMakeScreenshot(); + + void slotProperties (); + + bool save (bool localOnly = false); + bool slotSave (); + +private: + QUrl askForSaveURL (const QString &caption, + const QString &startURL, + const kpImage &imageToBeSaved, + const kpDocumentSaveOptions &startSaveOptions, + const kpDocumentMetaInfo &docMetaInfo, + const QString &forcedSaveOptionsGroup, + bool localOnly, + kpDocumentSaveOptions *chosenSaveOptions, + bool isSavingForFirstTime, + bool *allowLossyPrompt); + +private slots: + bool saveAs (bool localOnly = false); + bool slotSaveAs (); + + bool slotExport (); + + void slotEnableReload (); + bool slotReload (); + void sendPreviewToPrinter(QPrinter *printer); + +private: + void sendDocumentNameToPrinter (QPrinter *printer); + void setPrinterPageOrientation(QPrinter *printer); + void sendImageToPrinter(QPrinter *printer, bool showPrinterSetupDialog); + +private slots: + void slotPrint (); + void slotPrintPreview (); + + void slotMail (); + + bool queryCloseDocument (); + bool queryClose () override; + + void slotClose (); + void slotQuit (); + + +// +// Edit Menu +// + +private: + void setupEditMenuActions (); + void enableEditMenuDocumentActions (bool enable = true); + +public: + QMenu *selectionToolRMBMenu (); + +private slots: + void slotCut (); + void slotCopy (); + void slotEnablePaste (); +private: + QRect calcUsefulPasteRect (int imageWidth, int imageHeight); + // (it is possible to paste a selection border i.e. a selection with no content) + void paste (const kpAbstractSelection &sel, + bool forceTopLeft = false); +public: + // ( is ignored if is empty) + void pasteText (const QString &text, + bool forceNewTextSelection = false, + const QPoint &newTextSelectionTopLeft = KP_INVALID_POINT); + void pasteTextAt (const QString &text, const QPoint &point, + // Allow tiny adjustment of so that mouse + // pointer is not exactly on top of the topLeft of + // any new text selection (so that it doesn't look + // weird by being on top of a resize handle just after + // a paste). + bool allowNewTextSelectionPointShift = false); +public slots: + void slotPaste (); +private slots: + void slotPasteInNewWindow (); +public slots: + void slotDelete (); + + void slotSelectAll (); +private: + void addDeselectFirstCommand (kpCommand *cmd); +public slots: + void slotDeselect (); +private slots: + void slotCopyToFile (); + void slotPasteFromFile (); + + +// +// View Menu +// + +private: + void setupViewMenuActions (); + + bool viewMenuDocumentActionsEnabled () const; + void enableViewMenuDocumentActions (bool enable = true); + void actionShowGridUpdate (); + void updateMainViewGrid (); + QRect mapToGlobal (const QRect &rect) const; + QRect mapFromGlobal (const QRect &rect) const; + +private slots: + void slotShowGridToggled (); + + +// +// View Menu - Zoom +// + +private: + void setupViewMenuZoomActions (); + void enableViewMenuZoomDocumentActions (bool enable); + + void sendZoomListToActionZoom (); + + void zoomToPre (int zoomLevel); + void zoomToPost (); + +public: + void zoomTo (int zoomLevel, bool centerUnderCursor = false); + void zoomToRect (const QRect &normalizedDocRect, + bool accountForGrips, + bool careAboutWidth, bool careAboutHeight); + +public slots: + void slotActualSize (); + void slotFitToPage (); + void slotFitToWidth (); + void slotFitToHeight (); + +public: + void zoomIn (bool centerUnderCursor = false); + void zoomOut (bool centerUnderCursor = false); + +public slots: + void slotZoomIn (); + void slotZoomOut (); + +private: + void zoomAccordingToZoomAction (bool centerUnderCursor = false); + +private slots: + void slotZoom (); + + +// +// View Menu - Thumbnail +// + +private: + void setupViewMenuThumbnailActions (); + void enableViewMenuThumbnailDocumentActions (bool enable); + +private slots: + void slotDestroyThumbnail (); + void slotDestroyThumbnailInitatedByUser (); + void slotCreateThumbnail (); + +public: + void notifyThumbnailGeometryChanged (); + +private slots: + void slotSaveThumbnailGeometry (); + void slotShowThumbnailToggled (); + void updateThumbnailZoomed (); + void slotZoomedThumbnailToggled (); + void slotThumbnailShowRectangleToggled (); + +private: + void enableViewZoomedThumbnail (bool enable = true); + void enableViewShowThumbnailRectangle (bool enable = true); + void enableThumbnailOptionActions (bool enable = true); + void createThumbnailView (); + void destroyThumbnailView (); + void updateThumbnail (); + + +// +// Image Menu +// + +private: + kpTransformDialogEnvironment *transformDialogEnvironment (); + + bool isSelectionActive () const; + bool isTextSelection () const; + + QString autoCropText () const; + + void setupImageMenuActions (); + void enableImageMenuDocumentActions (bool enable = true); + +private slots: + void slotImageMenuUpdateDueToSelection (); + +public: + kpColor backgroundColor (bool ofSelection = false) const; + void addImageOrSelectionCommand (kpCommand *cmd, + bool addSelCreateCmdIfSelAvail = true, + bool addSelContentCmdIfSelAvail = true); + +public slots: + void slotCrop (); + +private slots: + void slotResizeScale (); + void slotAutoCrop (); + void slotFlip (); + void slotMirror (); + + void slotRotate (); + void slotRotate270 (); + void slotRotate90 (); + + void slotSkew (); + void slotConvertToBlackAndWhite (); + void slotConvertToGrayscale (); + void slotInvertColors (); + void slotClear (); + void slotMakeConfidential(); + void slotMoreEffects (); + + +// +// Colors Menu +// + +private: + void setupColorsMenuActions (); + void createColorBox (); + void enableColorsMenuDocumentActions (bool enable); +private slots: + void slotUpdateColorsDeleteRowActionEnabled (); + +private: + void deselectActionColorsKDE (); + + bool queryCloseColors (); + +private: + void openDefaultColors (); +private slots: + void slotColorsDefault (); + +private: + bool openKDEColors (const QString &name); +private slots: + void slotColorsKDE (); + +private: + bool openColors (const QUrl &url); +private slots: + void slotColorsOpen (); + + void slotColorsReload (); + + bool slotColorsSave (); + bool slotColorsSaveAs (); + + void slotColorsAppendRow (); + void slotColorsDeleteRow (); + + +// +// Settings Menu +// + +private: + void setupSettingsMenuActions (); + void enableSettingsMenuDocumentActions (bool enable = true); + +private slots: + void slotFullScreen (); + + void slotEnableSettingsShowPath (); + void slotShowPathToggled (); + void slotDrawAntiAliasedToggled(bool on); + + void slotKeyBindings (); + +// +// Status Bar +// + +private: + enum + { + StatusBarItemShapePoints, + StatusBarItemShapeSize, + StatusBarItemDocSize, + StatusBarItemDocDepth, + StatusBarItemZoom + }; + + void addPermanentStatusBarItem (int id, int maxTextLen); + void createStatusBar (); + + void setStatusBarDocDepth (int depth = 0); + +private slots: + void setStatusBarMessage (const QString &message = QString()); + void setStatusBarShapePoints (const QPoint &startPoint = KP_INVALID_POINT, + const QPoint &endPoint = KP_INVALID_POINT); + void setStatusBarShapeSize (const QSize &size = KP_INVALID_SIZE); + void setStatusBarDocSize (const QSize &size = KP_INVALID_SIZE); + void setStatusBarZoom (int zoom = 0); + + void recalculateStatusBarMessage (); + void recalculateStatusBarShape (); + + void recalculateStatusBar (); + + +// +// Text ToolBar +// + +private: + void setupTextToolBarActions (); + void readAndApplyTextSettings (); + +public: + void enableTextToolBarActions (bool enable = true); + +private slots: + void slotTextFontFamilyChanged (); + void slotTextFontSizeChanged (); + void slotTextBoldChanged (); + void slotTextItalicChanged (); + void slotTextUnderlineChanged (); + void slotTextStrikeThruChanged (); + +public: + KToolBar *textToolBar (); + bool isTextStyleBackgroundOpaque () const; + kpTextStyle textStyle () const; + void setTextStyle (const kpTextStyle &textStyle_); + int settingTextStyle () const; + +private: + struct kpMainWindowPrivate *d; +}; + +#endif // KP_MAIN_WINDOW_H diff --git a/mainWindow/kpMainWindowPrivate.h b/mainWindow/kpMainWindowPrivate.h new file mode 100644 index 0000000..64fb604 --- /dev/null +++ b/mainWindow/kpMainWindowPrivate.h @@ -0,0 +1,445 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2014 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpMainWindowPrivate_H +#define kpMainWindowPrivate_H + + +#define DEBUG_KP_MAIN_WINDOW 0 + + +#include "document/kpDocumentSaveOptions.h" + + +class QAction; +class QActionGroup; +class QLabel; + +class KSelectAction; +class KToggleAction; +class KSqueezedTextLabel; +class KRecentFilesAction; +class KFontAction; +class KFontSizeAction; +class KToggleFullScreenAction; +class kpCommandEnvironment; +class kpDocumentEnvironment; +class kpToolSelectionEnvironment; +class kpTransformDialogEnvironment; +class kpViewScrollableContainer; +class kpZoomedView; +class kpThumbnail; +class kpThumbnailView; +class kpDocument; +class kpViewManager; +class kpColorToolBar; +class kpToolToolBar; +class kpCommandHistory; +class kpTool; +class kpToolText; +class SaneDialog; + + +struct kpMainWindowPrivate +{ + kpMainWindowPrivate () + : isFullyConstructed(false), + scrollView(nullptr), + mainView(nullptr), + thumbnail(nullptr), + thumbnailView(nullptr), + document(nullptr), + viewManager(nullptr), + colorToolBar(nullptr), + toolToolBar(nullptr), + commandHistory(nullptr), + + configFirstTime(false), + configShowGrid(false), + configShowPath(false), + configThumbnailShown(false), + configZoomedThumbnail(false), + + documentEnvironment(nullptr), + commandEnvironment(nullptr), + + // Tools + + toolSelectionEnvironment(nullptr), + toolsActionGroup(nullptr), + + toolSpraycan(nullptr), + toolBrush(nullptr), + toolColorEraser(nullptr), + toolColorPicker(nullptr), + toolCurve(nullptr), + toolEllipse(nullptr), + toolEllipticalSelection(nullptr), + toolEraser(nullptr), + toolFloodFill(nullptr), + toolFreeFormSelection(nullptr), + toolLine(nullptr), + toolPen(nullptr), + toolPolygon(nullptr), + toolPolyline(nullptr), + toolRectangle(nullptr), + toolRectSelection(nullptr), + toolRoundedRectangle(nullptr), + toolZoom(nullptr), + toolText(nullptr), + + lastToolNumber(0), + toolActionsEnabled(false), + actionPrevToolOptionGroup1(nullptr), + actionNextToolOptionGroup1(nullptr), + actionPrevToolOptionGroup2(nullptr), + actionNextToolOptionGroup2(nullptr), + + settingImageSelectionTransparency(0), + + docResizeWidth(0), + docResizeHeight(0), + docResizeToBeCompleted(false), + + configOpenImagesInSameWindow(false), + configPrintImageCenteredOnPage(false), + + actionNew(nullptr), + actionOpen(nullptr), + actionOpenRecent(nullptr), + actionScan(nullptr), + actionScreenshot(nullptr), + actionProperties(nullptr), + actionSave(nullptr), + actionSaveAs(nullptr), + actionExport(nullptr), + actionReload(nullptr), + actionPrint(nullptr), + actionPrintPreview(nullptr), + actionMail(nullptr), + actionClose(nullptr), + actionQuit(nullptr), + + scanDialog(nullptr), + + exportFirstTime(false), + + // Edit Menu + + editMenuDocumentActionsEnabled(false), + + actionUndo(nullptr), + actionRedo(nullptr), + actionCut(nullptr), + actionCopy(nullptr), + actionPaste(nullptr), + actionPasteInNewWindow(nullptr), + actionDelete(nullptr), + actionSelectAll(nullptr), + actionDeselect(nullptr), + actionCopyToFile(nullptr), + actionPasteFromFile(nullptr), + + copyToFirstTime(false), + + // View Menu + + configThumbnailShowRectangle(false), + actionShowThumbnailRectangle(nullptr), + + viewMenuDocumentActionsEnabled(false), + + actionActualSize(nullptr), + actionFitToPage(nullptr), + actionFitToWidth(nullptr), + actionFitToHeight(nullptr), + actionZoomIn(nullptr), + actionZoomOut(nullptr), + actionZoom(nullptr), + actionShowGrid(nullptr), + actionShowThumbnail(nullptr), + actionZoomedThumbnail(nullptr), + + thumbnailSaveConfigTimer(nullptr), + + // Image Menu + + transformDialogEnvironment(nullptr), + + imageMenuDocumentActionsEnabled(false), + + actionResizeScale(nullptr), + actionCrop(nullptr), + actionAutoCrop(nullptr), + actionFlip(nullptr), + actionMirror(nullptr), + actionRotate(nullptr), + actionRotateLeft(nullptr), + actionRotateRight(nullptr), + actionSkew(nullptr), + actionConvertToBlackAndWhite(nullptr), + actionConvertToGrayscale(nullptr), + actionBlur(nullptr), + actionMoreEffects(nullptr), + actionInvertColors(nullptr), + actionClear(nullptr), + + actionDrawOpaque(nullptr), + actionDrawColorSimilarity(nullptr), + + moreEffectsDialogLastEffect(0), + + // Colors Menu + + colorMenuDocumentActionsEnabled(false), + + actionColorsDefault(nullptr), + actionColorsKDE(nullptr), + actionColorsOpen(nullptr), + actionColorsReload(nullptr), + actionColorsSave(nullptr), + actionColorsSaveAs(nullptr), + actionColorsAppendRow(nullptr), + actionColorsDeleteRow(nullptr), + + // Settings Menu + + actionShowPath(nullptr), + actionKeyBindings(nullptr), + actionConfigureToolbars(nullptr), + actionConfigure(nullptr), + actionFullScreen(nullptr), + + // Status Bar + + statusBarCreated(false), + statusBarMessageLabel(nullptr), + statusBarShapeLastPointsInitialised(false), + statusBarShapeLastSizeInitialised(false), + + // Text ToolBar + + actionTextFontFamily(nullptr), + actionTextFontSize(nullptr), + actionTextBold(nullptr), + actionTextItalic(nullptr), + actionTextUnderline(nullptr), + actionTextStrikeThru(nullptr), + settingTextStyle(0), + textOldFontSize(0) + { + } + + bool isFullyConstructed; + + kpViewScrollableContainer *scrollView; + kpZoomedView *mainView; + kpThumbnail *thumbnail; + kpThumbnailView *thumbnailView; + kpDocument *document; + kpViewManager *viewManager; + kpColorToolBar *colorToolBar; + kpToolToolBar *toolToolBar; + kpCommandHistory *commandHistory; + + bool configFirstTime; + bool configShowGrid; + bool configShowPath; + + bool configThumbnailShown; + QRect configThumbnailGeometry; + bool configZoomedThumbnail; + + kpDocumentEnvironment *documentEnvironment; + kpCommandEnvironment *commandEnvironment; + + // + // Tools + // + + kpToolSelectionEnvironment *toolSelectionEnvironment; + QActionGroup *toolsActionGroup; + + kpTool *toolSpraycan, *toolBrush, + *toolColorEraser, *toolColorPicker, + *toolCurve, *toolEllipse, + *toolEllipticalSelection, *toolEraser, + *toolFloodFill, *toolFreeFormSelection, + *toolLine, *toolPen, *toolPolygon, + *toolPolyline, *toolRectangle, *toolRectSelection, + *toolRoundedRectangle, *toolZoom; + kpToolText *toolText; + + QList tools; + int lastToolNumber; + + bool toolActionsEnabled; + QAction *actionPrevToolOptionGroup1, + *actionNextToolOptionGroup1, + *actionPrevToolOptionGroup2, + *actionNextToolOptionGroup2; + + int settingImageSelectionTransparency; + + int docResizeWidth, docResizeHeight; + bool docResizeToBeCompleted; + + // + // File Menu + // + + bool configOpenImagesInSameWindow, configPrintImageCenteredOnPage; + + QAction *actionNew, *actionOpen; + KRecentFilesAction *actionOpenRecent; + QAction *actionScan, *actionScreenshot, *actionProperties, + *actionSave, *actionSaveAs, *actionExport, + *actionReload, + *actionPrint, *actionPrintPreview, + *actionMail, + *actionClose, *actionQuit; + + SaneDialog *scanDialog; + + QUrl lastExportURL; + kpDocumentSaveOptions lastExportSaveOptions; + bool exportFirstTime; + + // + // Edit Menu + // + + bool editMenuDocumentActionsEnabled; + + QAction *actionUndo, *actionRedo, + *actionCut, *actionCopy, + *actionPaste, *actionPasteInNewWindow, + *actionDelete, + *actionSelectAll, *actionDeselect, + *actionCopyToFile, *actionPasteFromFile; + + QUrl lastCopyToURL; + kpDocumentSaveOptions lastCopyToSaveOptions; + bool copyToFirstTime; + + // + // View Menu + // + + bool configThumbnailShowRectangle; + KToggleAction *actionShowThumbnailRectangle; + + bool viewMenuDocumentActionsEnabled; + + QAction *actionActualSize, + *actionFitToPage, *actionFitToWidth, *actionFitToHeight, + *actionZoomIn, *actionZoomOut; + KSelectAction *actionZoom; + KToggleAction *actionShowGrid, + *actionShowThumbnail, *actionZoomedThumbnail; + + QList zoomList; + + QTimer *thumbnailSaveConfigTimer; + + // + // Image Menu + // + + kpTransformDialogEnvironment *transformDialogEnvironment; + + bool imageMenuDocumentActionsEnabled; + + QAction *actionResizeScale, + *actionCrop, *actionAutoCrop, + *actionFlip, *actionMirror, + *actionRotate, *actionRotateLeft, *actionRotateRight, + *actionSkew, + *actionConvertToBlackAndWhite, *actionConvertToGrayscale, + *actionBlur, *actionMoreEffects, + *actionInvertColors, *actionClear; + + // Implemented in kpMainWindow_Tools.cpp, not kpImageWindow_Image.cpp + // since they're really setting tool options. + KToggleAction *actionDrawOpaque; + QAction *actionDrawColorSimilarity; + + int moreEffectsDialogLastEffect; + + // + // Colors Menu + // + + bool colorMenuDocumentActionsEnabled; + + QAction *actionColorsDefault; + KSelectAction *actionColorsKDE; + QAction *actionColorsOpen, *actionColorsReload; + + QAction *actionColorsSave, *actionColorsSaveAs; + + QAction *actionColorsAppendRow; + QAction *actionColorsDeleteRow; + + // + // Settings Menu + // + + KToggleAction *actionShowPath; + QAction *actionKeyBindings, *actionConfigureToolbars, *actionConfigure; + KToggleFullScreenAction *actionFullScreen; + + // + // Status Bar + // + + bool statusBarCreated; + KSqueezedTextLabel *statusBarMessageLabel; + QList statusBarLabels; + + bool statusBarShapeLastPointsInitialised; + QPoint statusBarShapeLastStartPoint, statusBarShapeLastEndPoint; + bool statusBarShapeLastSizeInitialised; + QSize statusBarShapeLastSize; + + // + // Text ToolBar + // + + KFontAction *actionTextFontFamily; + KFontSizeAction *actionTextFontSize; + KToggleAction *actionTextBold, *actionTextItalic, + *actionTextUnderline, *actionTextStrikeThru; + + int settingTextStyle; + QString textOldFontFamily; + int textOldFontSize; +}; + + +#endif // kpMainWindowPrivate_H diff --git a/mainWindow/kpMainWindow_Colors.cpp b/mainWindow/kpMainWindow_Colors.cpp new file mode 100644 index 0000000..172a0ab --- /dev/null +++ b/mainWindow/kpMainWindow_Colors.cpp @@ -0,0 +1,495 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpMainWindow.h" +#include "kpMainWindowPrivate.h" + +#include "widgets/kpColorCells.h" +#include "lgpl/generic/kpColorCollection.h" +#include "lgpl/generic/kpUrlFormatter.h" +#include "widgets/toolbars/kpColorToolBar.h" + +#include +#include +#include +#include +#include "kpLogCategories.h" + +#include +#include + +//--------------------------------------------------------------------- + +static QStringList KDEColorCollectionNames () +{ + return kpColorCollection::installedCollections (); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setupColorsMenuActions () +{ + KActionCollection *ac = actionCollection (); + + + d->actionColorsDefault = ac->addAction (QStringLiteral("colors_default")); + d->actionColorsDefault->setText (i18n ("Use KolourPaint Defaults")); + connect (d->actionColorsDefault, &QAction::triggered, + this, &kpMainWindow::slotColorsDefault); + + d->actionColorsKDE = ac->add (QStringLiteral("colors_kde")); + d->actionColorsKDE->setText (i18nc ("@item:inmenu colors", "Use KDE's")); + // TODO: Will this slot be called spuriously if there are no colors + // installed? + connect (d->actionColorsKDE, + static_cast(&KSelectAction::triggered), + this, &kpMainWindow::slotColorsKDE); + + for (const auto &colName : ::KDEColorCollectionNames ()) { + d->actionColorsKDE->addAction (colName); + } + + d->actionColorsOpen = ac->addAction (QStringLiteral("colors_open")); + d->actionColorsOpen->setText (i18nc ("@item:inmenu colors", "&Open...")); + connect (d->actionColorsOpen, &QAction::triggered, this, &kpMainWindow::slotColorsOpen); + + d->actionColorsReload = ac->addAction (QStringLiteral("colors_reload")); + d->actionColorsReload->setText (i18nc ("@item:inmenu colors", "Reloa&d")); + connect (d->actionColorsReload, &QAction::triggered, + this, &kpMainWindow::slotColorsReload); + + d->actionColorsSave = ac->addAction (QStringLiteral("colors_save")); + d->actionColorsSave->setText (i18nc ("@item:inmenu colors", "&Save")); + connect (d->actionColorsSave, &QAction::triggered, + this, &kpMainWindow::slotColorsSave); + + d->actionColorsSaveAs = ac->addAction (QStringLiteral("colors_save_as")); + d->actionColorsSaveAs->setText (i18nc ("@item:inmenu colors", "Save &As...")); + connect (d->actionColorsSaveAs, &QAction::triggered, + this, &kpMainWindow::slotColorsSaveAs); + + d->actionColorsAppendRow = ac->addAction (QStringLiteral("colors_append_row")); + d->actionColorsAppendRow->setText (i18nc ("@item:inmenu colors", "Add Row")); + connect (d->actionColorsAppendRow, &QAction::triggered, + this, &kpMainWindow::slotColorsAppendRow); + + d->actionColorsDeleteRow = ac->addAction (QStringLiteral("colors_delete_row")); + d->actionColorsDeleteRow->setText (i18nc ("@item:inmenu colors", "Delete Last Row")); + connect (d->actionColorsDeleteRow, &QAction::triggered, + this, &kpMainWindow::slotColorsDeleteRow); + + + enableColorsMenuDocumentActions (false); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::createColorBox () +{ + d->colorToolBar = new kpColorToolBar (i18n ("Color Box"), this); + + // (needed for QMainWindow::saveState()) + d->colorToolBar->setObjectName ( QStringLiteral("Color Box" )); + + connect (colorCells (), &kpColorCells::rowCountChanged, + this, &kpMainWindow::slotUpdateColorsDeleteRowActionEnabled); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableColorsMenuDocumentActions (bool enable) +{ + d->actionColorsDefault->setEnabled (enable); + d->actionColorsKDE->setEnabled (enable); + d->actionColorsOpen->setEnabled (enable); + d->actionColorsReload->setEnabled (enable); + + d->actionColorsSave->setEnabled (enable); + d->actionColorsSaveAs->setEnabled (enable); + + d->actionColorsAppendRow->setEnabled (enable); + + d->colorMenuDocumentActionsEnabled = enable; + + slotUpdateColorsDeleteRowActionEnabled (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotUpdateColorsDeleteRowActionEnabled () +{ + // Currently, this is always enabled since kpColorCells guarantees that + // there will be at least one row of cells (which might all be of the + // invalid color). + // + // But this method is left here for future extensibility. + d->actionColorsDeleteRow->setEnabled ( + d->colorMenuDocumentActionsEnabled && (colorCells ()->rowCount () > 0)); +} + +//--------------------------------------------------------------------- + + +// Used in 2 situations: +// +// 1. User opens a color without using the "Use KDE's" submenu. +// 2. User attempts to open a color using the "Use KDE's" submenu but the +// opening fails. +// +// TODO: Maybe we could put the 3 actions (for different ways of opening +// colors) in an exclusive group -- this might eliminate the need for +// this hack. +// +// private +void kpMainWindow::deselectActionColorsKDE () +{ + d->actionColorsKDE->setCurrentItem (-1); +} + +//--------------------------------------------------------------------- + + +// private +bool kpMainWindow::queryCloseColors () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::queryCloseColors() colorCells.modified=" + << colorCells ()->isModified (); +#endif + + toolEndShape (); + + if (!colorCells ()->isModified ()) { + return true; // ok to close + } + + int result = KMessageBox::Cancel; + + + if (!colorCells ()->url ().isEmpty ()) + { + result = KMessageBox::warningYesNoCancel (this, + i18n ("The color palette \"%1\" has been modified.\n" + "Do you want to save it?", + kpUrlFormatter::PrettyFilename (colorCells ()->url ())), + QString ()/*caption*/, + KStandardGuiItem::save (), KStandardGuiItem::discard ()); + } + else + { + const QString name = colorCells ()->colorCollection ()->name (); + if (!name.isEmpty ()) + { + result = KMessageBox::warningYesNoCancel (this, + i18n ("The KDE color palette \"%1\" has been modified.\n" + "Do you want to save it to a file?", + name), + QString ()/*caption*/, + KStandardGuiItem::save (), KStandardGuiItem::discard ()); + } + else + { + result = KMessageBox::warningYesNoCancel (this, + i18n ("The default color palette has been modified.\n" + "Do you want to save it to a file?"), + QString ()/*caption*/, + KStandardGuiItem::save (), KStandardGuiItem::discard ()); + } + } + + switch (result) + { + case KMessageBox::Yes: + return slotColorsSave (); // close only if save succeeds + case KMessageBox::No: + return true; // close without saving + default: + return false; // don't close current doc + } +} + +//--------------------------------------------------------------------- + + +// private +void kpMainWindow::openDefaultColors () +{ + colorCells ()->setColorCollection ( + kpColorCells::DefaultColorCollection ()); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotColorsDefault () +{ + // Call just in case. + toolEndShape (); + + if (!queryCloseColors ()) { + return; + } + + openDefaultColors (); + + deselectActionColorsKDE (); +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::openKDEColors (const QString &name) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::openKDEColors(" << name << ")"; +#endif + + kpColorCollection colorCol; + if (colorCol.openKDE (name, this)) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "opened"; + #endif + colorCells ()->setColorCollection (colorCol); + return true; + } + else + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "failed to open"; + #endif + return false; + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotColorsKDE () +{ + // Call in case an error dialog appears. + toolEndShape (); + + const int curItem = d->actionColorsKDE->currentItem (); + + if (!queryCloseColors ()) + { + deselectActionColorsKDE (); + return; + } + + // queryCloseColors() calls slotColorSave(), which can call + // slotColorSaveAs(), which can call deselectActionColorsKDE(). + d->actionColorsKDE->setCurrentItem (curItem); + + const QStringList colNames = ::KDEColorCollectionNames (); + const int selected = d->actionColorsKDE->currentItem (); + Q_ASSERT (selected >= 0 && selected < colNames.size ()); + + if (!openKDEColors (colNames [selected])) { + deselectActionColorsKDE (); + } +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::openColors (const QUrl &url) +{ + return colorCells ()->openColorCollection (url); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotColorsOpen () +{ + // Call due to dialog. + toolEndShape (); + + QFileDialog fd(this); + fd.setDirectoryUrl(colorCells ()->url()); + fd.setWindowTitle(i18nc ("@title:window", "Open Color Palette")); + + if (fd.exec ()) + { + if (!queryCloseColors ()) { + return; + } + + QList selected = fd.selectedUrls(); + if ( selected.count() && openColors(selected[0]) ) { + deselectActionColorsKDE(); + } + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotColorsReload () +{ + toolEndShape (); + + if (colorCells ()->isModified ()) + { + int result = KMessageBox::Cancel; + + if (!colorCells ()->url ().isEmpty ()) + { + result = KMessageBox::warningContinueCancel (this, + i18n ("The color palette \"%1\" has been modified.\n" + "Reloading will lose all changes since you last saved it.\n" + "Are you sure?", + kpUrlFormatter::PrettyFilename (colorCells ()->url ())), + QString ()/*caption*/, + KGuiItem(i18n ("&Reload"))); + } + else + { + const QString name = colorCells ()->colorCollection ()->name (); + if (!name.isEmpty ()) + { + result = KMessageBox::warningContinueCancel (this, + i18n ("The KDE color palette \"%1\" has been modified.\n" + "Reloading will lose all changes.\n" + "Are you sure?", + colorCells ()->colorCollection ()->name ()), + QString ()/*caption*/, + KGuiItem (i18n ("&Reload"))); + } + else + { + result = KMessageBox::warningContinueCancel (this, + i18n ("The default color palette has been modified.\n" + "Reloading will lose all changes.\n" + "Are you sure?"), + QString ()/*caption*/, + KGuiItem (i18n ("&Reload"))); + } + } + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "result=" << result + << "vs KMessageBox::Continue" << KMessageBox::Continue; + #endif + if (result != KMessageBox::Continue) { + return; + } + } + + + if (!colorCells ()->url ().isEmpty ()) + { + openColors (colorCells ()->url ()); + } + else + { + const QString name = colorCells ()->colorCollection ()->name (); + if (!name.isEmpty ()) { + openKDEColors (name); + } + else { + openDefaultColors (); + } + } +} + +//--------------------------------------------------------------------- + + +// private slot +bool kpMainWindow::slotColorsSave () +{ + // Call due to dialog. + toolEndShape (); + + if (colorCells ()->url ().isEmpty ()) + { + return slotColorsSaveAs (); + } + + return colorCells ()->saveColorCollection (); +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::slotColorsSaveAs () +{ + // Call due to dialog. + toolEndShape (); + + QFileDialog fd(this); + fd.setDirectoryUrl(colorCells ()->url()); + fd.setWindowTitle(i18n("Save Color Palette As")); + fd.setAcceptMode(QFileDialog::AcceptSave); + // Note that QFileDialog takes care of asking the user to confirm overwriting. + + if (fd.exec ()) + { + QList selected = fd.selectedUrls(); + if ( !selected.count() || !colorCells ()->saveColorCollectionAs(selected[0]) ) { + return false; + } + + // We're definitely using our own color collection now. + deselectActionColorsKDE (); + + return true; + } + + return false; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotColorsAppendRow () +{ + // Call just in case. + toolEndShape (); + + kpColorCells *colorCells = d->colorToolBar->colorCells (); + colorCells->appendRow (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotColorsDeleteRow () +{ + // Call just in case. + toolEndShape (); + + kpColorCells *colorCells = d->colorToolBar->colorCells (); + colorCells->deleteLastRow (); +} diff --git a/mainWindow/kpMainWindow_Edit.cpp b/mainWindow/kpMainWindow_Edit.cpp new file mode 100644 index 0000000..7ccd9e7 --- /dev/null +++ b/mainWindow/kpMainWindow_Edit.cpp @@ -0,0 +1,923 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpMainWindow.h" +#include "kpMainWindowPrivate.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" +#include +#include +#include +#include +#include + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "imagelib/kpDocumentMetaInfo.h" +#include "document/kpDocumentSaveOptions.h" +#include "layers/selections/image/kpImageSelectionTransparency.h" +#include "commands/kpMacroCommand.h" +#include "pixmapfx/kpPixmapFX.h" +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "layers/selections/kpSelectionDrag.h" +#include "generic/kpSetOverrideCursorSaver.h" +#include "layers/selections/text/kpTextSelection.h" +#include "tools/kpTool.h" +#include "commands/tools/selection/text/kpToolTextGiveContentCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "commands/tools/selection/kpToolSelectionDestroyCommand.h" +#include "commands/tools/selection/text/kpToolTextEnterCommand.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" +#include "imagelib/transforms/kpTransformCrop.h" +#include "commands/imagelib/transforms/kpTransformResizeScaleCommand.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" +#include "views/kpZoomedView.h" + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setupEditMenuActions () +{ + KActionCollection *ac = actionCollection (); + + + // Undo/Redo + // CONFIG: Need GUI for config history size. + d->commandHistory = new kpCommandHistory (true/*read config*/, this); + + if (d->configFirstTime) + { + // (so that cfg-file-editing user can modify in the meantime) + d->commandHistory->writeConfig (); + } + + + d->actionCut = KStandardAction::cut (this, SLOT (slotCut()), ac); + d->actionCopy = KStandardAction::copy (this, SLOT (slotCopy()), ac); + d->actionPaste = KStandardAction::paste (this, SLOT (slotPaste()), ac); + d->actionPasteInNewWindow = ac->addAction (QStringLiteral("edit_paste_in_new_window")); + d->actionPasteInNewWindow->setText (i18n ("Paste in &New Window")); + connect (d->actionPasteInNewWindow, &QAction::triggered, + this, &kpMainWindow::slotPasteInNewWindow); + ac->setDefaultShortcut (d->actionPasteInNewWindow, Qt::CTRL | Qt::SHIFT | Qt::Key_V); + + //d->actionDelete = KStandardAction::clear (this, SLOT (slotDelete()), ac); + d->actionDelete = ac->addAction (QStringLiteral("edit_clear")); + d->actionDelete->setText (i18n ("&Delete Selection")); + connect (d->actionDelete, &QAction::triggered, this, &kpMainWindow::slotDelete); + + d->actionSelectAll = KStandardAction::selectAll (this, SLOT (slotSelectAll()), ac); + d->actionDeselect = KStandardAction::deselect (this, SLOT (slotDeselect()), ac); + + + d->actionCopyToFile = ac->addAction (QStringLiteral("edit_copy_to_file")); + d->actionCopyToFile->setText (i18n ("C&opy to File...")); + connect (d->actionCopyToFile, &QAction::triggered, this, &kpMainWindow::slotCopyToFile); + + d->actionPasteFromFile = ac->addAction (QStringLiteral("edit_paste_from_file")); + d->actionPasteFromFile->setText (i18n ("Paste &From File...")); + connect (d->actionPasteFromFile, &QAction::triggered, this, &kpMainWindow::slotPasteFromFile); + + + d->editMenuDocumentActionsEnabled = false; + enableEditMenuDocumentActions (false); + + // Paste should always be enabled, as long as there is something to paste + // (independent of whether we have a document or not) + connect (QApplication::clipboard(), &QClipboard::dataChanged, + this, &kpMainWindow::slotEnablePaste); + + slotEnablePaste (); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableEditMenuDocumentActions (bool enable) +{ + // d->actionCut + // d->actionCopy + // d->actionPaste + // d->actionPasteInNewWindow + + // d->actionDelete + + d->actionSelectAll->setEnabled (enable); + // d->actionDeselect + + d->editMenuDocumentActionsEnabled = enable; + + // d->actionCopyToFile + + // Unlike d->actionPaste, we disable this if there is no document. + // This is because "File / Open" would do the same thing, if there is + // no document. + d->actionPasteFromFile->setEnabled (enable); +} + +//--------------------------------------------------------------------- + +// public +QMenu *kpMainWindow::selectionToolRMBMenu () +{ + return qobject_cast (guiFactory ()->container (QStringLiteral("selectionToolRMBMenu"), this)); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotCut () +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::slotCut() CALLED"; +#endif + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + Q_ASSERT (d->document && d->document->selection ()); + + toolEndShape (); + + slotCopy (); + slotDelete (); +} + +//--------------------------------------------------------------------- + +static QMimeData *NewTextMimeData (const QString &text) +{ + auto *md = new QMimeData (); + md->setText (text); + return md; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotCopy () +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::slotCopy() CALLED"; +#endif + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + Q_ASSERT (d->document && d->document->selection ()); + + toolEndShape (); + + kpAbstractSelection *sel = d->document->selection ()->clone (); + + if (dynamic_cast (sel)) + { + auto *textSel = dynamic_cast (sel); + if (!textSel->text ().isEmpty ()) + { + QApplication::clipboard ()->setMimeData ( + ::NewTextMimeData (textSel->text ()), + QClipboard::Clipboard); + + // SYNC: Normally, users highlight text and press CTRL+C. + // Highlighting text copies it to the X11 "middle + // mouse button" clipboard. CTRL+C copies it to the + // separate, Windows-like "CTRL+V" clipboard. + // + // However, KolourPaint doesn't support highlighting. + // So when they press CTRL+C to copy all text, simulate + // the highlighting by copying the text to the "middle + // mouse button" clipboard. We don't do this for images + // as no one ever middle-mouse-pastes images. + // + // Note that we don't share the QMimeData pointer with + // the above in case Qt doesn't expect it. + // + // Once we change KolourPaint to support highlighted text + // and CTRL+C to copy only the highlighted text, delete + // this code. + QApplication::clipboard ()->setMimeData ( + ::NewTextMimeData (textSel->text ()), + QClipboard::Selection); + } + } + else if (dynamic_cast (sel)) + { + auto *imageSel = dynamic_cast (sel); + + // Transparency doesn't get sent across the aether so nuke it now + // so that transparency mask doesn't get needlessly recalculated + // if we ever call sel.setBaseImage(). + imageSel->setTransparency (kpImageSelectionTransparency ()); + + kpImage rawImage; + + if (imageSel->hasContent ()) { + rawImage = imageSel->baseImage (); + } + else { + rawImage = d->document->getSelectedBaseImage (); + } + + imageSel->setBaseImage ( rawImage ); + + QApplication::clipboard ()->setMimeData ( + new kpSelectionDrag (*imageSel), + QClipboard::Clipboard); + } + else { + Q_ASSERT (!"Unknown selection type"); + } + + delete sel; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotEnablePaste () +{ + const QMimeData *md = + QApplication::clipboard()->mimeData(QClipboard::Clipboard); + + // It's faster to test for QMimeData::hasText() first due to the + // lazy evaluation of the '||' operator. + const bool shouldEnable = md && (md->hasText() || kpSelectionDrag::canDecode(md)); + + d->actionPasteInNewWindow->setEnabled(shouldEnable); + d->actionPaste->setEnabled(shouldEnable); +} + +//--------------------------------------------------------------------- + +// private +QRect kpMainWindow::calcUsefulPasteRect (int imageWidth, int imageHeight) +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::calcUsefulPasteRect(" + << imageWidth << "," << imageHeight + << ")"; +#endif + Q_ASSERT (d->document); + + // TODO: 1st choice is to paste sel near but not overlapping last deselect point + + if (d->mainView && d->scrollView) + { + const QPoint viewTopLeft (d->scrollView->horizontalScrollBar()->value (), + d->scrollView->verticalScrollBar()->value ()); + + const QPoint docTopLeft = d->mainView->transformViewToDoc (viewTopLeft); + + if ((docTopLeft.x () + imageWidth <= d->document->width () && + docTopLeft.y () + imageHeight <= d->document->height ()) || + imageWidth <= docTopLeft.x () || + imageHeight <= docTopLeft.y ()) + { + return {docTopLeft.x (), docTopLeft.y (), imageWidth, imageHeight}; + } + } + + return {0, 0, imageWidth, imageHeight}; +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::paste(const kpAbstractSelection &sel, bool forceTopLeft) +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::paste(forceTopLeft=" << forceTopLeft << ")"; +#endif + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + toolEndShape (); + + // + // Make sure we've got a document (esp. with File/Close) + // + + if (!d->document) + { + auto *newDoc = new kpDocument ( + sel.width (), sel.height (), documentEnvironment ()); + + // will also create viewManager + setDocument (newDoc); + } + + // + // Paste as new selection + // + + const auto *imageSel = dynamic_cast (&sel); + + if (imageSel && imageSel->hasContent () && imageSel->transparency ().isTransparent ()) + { + d->colorToolBar->flashColorSimilarityToolBarItem (); + } + + kpAbstractSelection *selInUsefulPos = sel.clone (); + if (!forceTopLeft) { + selInUsefulPos->moveTo (calcUsefulPasteRect (sel.width (), sel.height ()).topLeft ()); + } + // TODO: Should use kpCommandHistory::addCreateSelectionCommand(), + // as well, to really support pasting selection borders. + addDeselectFirstCommand (new kpToolSelectionCreateCommand ( + dynamic_cast (selInUsefulPos) ? + i18n ("Text: Create Box") : + i18n ("Selection: Create"), + *selInUsefulPos, + commandEnvironment ())); + delete selInUsefulPos; + + +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "sel.size=" << QSize (sel.width (), sel.height ()) + << " document.size=" + << QSize (d->document->width (), d->document->height ()); +#endif + + // If the selection is bigger than the document, automatically + // resize the document (with the option of Undo'ing) to fit + // the selection. + // + // No annoying dialog necessary. + // + if (sel.width () > d->document->width () || + sel.height () > d->document->height ()) + { + d->commandHistory->addCommand ( + new kpTransformResizeScaleCommand ( + false/*act on doc, not sel*/, + qMax (sel.width (), d->document->width ()), + qMax (sel.height (), d->document->height ()), + kpTransformResizeScaleCommand::Resize, + commandEnvironment ())); + } +} + +//--------------------------------------------------------------------- + +// public +void kpMainWindow::pasteText (const QString &text, + bool forceNewTextSelection, + const QPoint &newTextSelectionTopLeft) +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::pasteText(" << text + << ",forceNewTextSelection=" << forceNewTextSelection + << ",newTextSelectionTopLeft=" << newTextSelectionTopLeft + << ")"; +#endif + + if ( text.isEmpty() ) { + return; + } + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + toolEndShape (); + + QStringList textLines = text.split('\n'); + + if (!forceNewTextSelection && + d->document && d->document->textSelection () && + d->commandHistory && d->viewManager) + { + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\treusing existing Text Selection"; + #endif + + d->viewManager->setQueueUpdates(); + + kpTextSelection *textSel = d->document->textSelection (); + if (!textSel->hasContent ()) + { + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\t\tneeds content"; + #endif + commandHistory ()->addCreateSelectionCommand ( + new kpToolSelectionCreateCommand ( + i18n ("Text: Create Box"), + *textSel, + commandEnvironment ()), + false/*no exec*/); + } + + kpMacroCommand *macroCmd = new kpMacroCommand (i18n ("Text: Paste"), + commandEnvironment ()); + // (yes, this is the same check as the previous "if") + if (!textSel->hasContent ()) + { + kpCommand *giveContentCmd = new kpToolTextGiveContentCommand ( + *textSel, + QString ()/*uninteresting child of macro cmd*/, + commandEnvironment ()); + giveContentCmd->execute (); + + macroCmd->addCommand (giveContentCmd); + } + + for (int i = 0; i < textLines.size(); i++) + { + if (i > 0) + { + macroCmd->addCommand ( + new kpToolTextEnterCommand ( + QString()/*uninteresting child of macroCmd*/, + d->viewManager->textCursorRow (), + d->viewManager->textCursorCol (), + kpToolTextEnterCommand::AddEnterNow, + commandEnvironment ())); + } + + macroCmd->addCommand ( + new kpToolTextInsertCommand ( + QString()/*uninteresting child of macroCmd*/, + d->viewManager->textCursorRow (), + d->viewManager->textCursorCol (), + textLines [i], + commandEnvironment ())); + } + + d->commandHistory->addCommand (macroCmd, false/*no exec*/); + + d->viewManager->restoreQueueUpdates(); + } + else + { + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\tcreating Text Selection"; + #endif + + const kpTextStyle ts = textStyle (); + const QFontMetrics fontMetrics = ts.fontMetrics (); + + int height = textLines.size () * fontMetrics.height (); + if (textLines.size () >= 1) { + height += (textLines.size () - 1) * fontMetrics.leading (); + } + + int width = 0; + foreach (const QString &str, textLines) + width = std::max(width, fontMetrics.horizontalAdvance(str)); + + // limit the size to avoid memory overflow + width = qMin(qMax(QApplication::desktop()->width(), d->document ? d->document->width() : 0), width); + height = qMin(qMax(QApplication::desktop()->height(), d->document ? d->document->height() : 0), height); + + const int selWidth = qMax (kpTextSelection::MinimumWidthForTextStyle (ts), + width + kpTextSelection::TextBorderSize () * 2); + const int selHeight = qMax (kpTextSelection::MinimumHeightForTextStyle (ts), + height + kpTextSelection::TextBorderSize () * 2); + kpTextSelection newTextSel (QRect (0, 0, selWidth, selHeight), + textLines, + ts); + + if (newTextSelectionTopLeft != KP_INVALID_POINT) + { + newTextSel.moveTo (newTextSelectionTopLeft); + paste (newTextSel, true/*force topLeft*/); + } + else + { + paste (newTextSel); + } + } +} + +//--------------------------------------------------------------------- + +// public +void kpMainWindow::pasteTextAt (const QString &text, const QPoint &point, + bool allowNewTextSelectionPointShift) +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::pasteTextAt(" << text + << ",point=" << point + << ",allowNewTextSelectionPointShift=" + << allowNewTextSelectionPointShift + << ")"; +#endif + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + toolEndShape (); + + + if (d->document && + d->document->textSelection () && + d->document->textSelection ()->pointIsInTextArea (point)) + { + kpTextSelection *textSel = d->document->textSelection (); + + int row, col; + + if (textSel->hasContent ()) + { + row = textSel->closestTextRowForPoint (point); + col = textSel->closestTextColForPoint (point); + } + else + { + row = col = 0; + } + + d->viewManager->setTextCursorPosition (row, col); + + pasteText (text); + } + else + { + QPoint pointToUse = point; + + if (allowNewTextSelectionPointShift) + { + // TODO: In terms of doc pixels, would be inconsistent behaviour + // based on zoomLevel of view. + // pointToUse -= QPoint (-view->selectionResizeHandleAtomicSize (), + // -view->selectionResizeHandleAtomicSize ()); + } + + pasteText (text, true/*force new text selection*/, pointToUse); + } +} + +//--------------------------------------------------------------------- +// public slot + +void kpMainWindow::slotPaste() +{ + kpSetOverrideCursorSaver cursorSaver(Qt::WaitCursor); + + toolEndShape(); + + const QMimeData *mimeData = QApplication::clipboard()->mimeData(QClipboard::Clipboard); + + kpAbstractImageSelection *sel = kpSelectionDrag::decode(mimeData); + if ( sel ) + { + sel->setTransparency(imageSelectionTransparency()); + paste(*sel); + delete sel; + } + else if ( mimeData->hasText() ) + { + pasteText(mimeData->text()); + } + else + { + kpSetOverrideCursorSaver cursorSaver(Qt::ArrowCursor); + + KMessageBox::sorry(this, + i18n("KolourPaint cannot paste the contents of" + " the clipboard as it has an unknown format."), + i18n("Cannot Paste")); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotPasteInNewWindow () +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::slotPasteInNewWindow() CALLED"; +#endif + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + toolEndShape (); + + // + // Pasting must ensure that: + // + // Requirement 1. the document is the same size as the image to be pasted. + // Requirement 2. transparent pixels in the image must remain as transparent. + // + + auto *win = new kpMainWindow (nullptr/*no document*/); + win->show (); + + // Make "Edit / Paste in New Window" always paste white pixels as white. + // Don't let selection transparency get in the way and paste them as + // transparent. + kpImageSelectionTransparency transparency = win->imageSelectionTransparency (); + if (transparency.isTransparent ()) + { + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\tchanging image selection transparency to opaque"; + #endif + transparency.setOpaque (); + // Since we are setting selection transparency programmatically + // -- as opposed to in response to user input -- this will not + // affect the selection transparency tool option widget's "last used" + // config setting. + win->setImageSelectionTransparency (transparency); + } + + // (this handles Requirement 1. above) + win->slotPaste (); + + // if slotPaste could not decode clipboard data, no document was created + if ( win->document() ) + { + // (this handles Requirement 2. above; + // slotDeselect() is not enough unless the document is filled with the + // transparent color in advance) + win->slotCrop(); + } +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotDelete () +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::slotDelete() CALLED"; +#endif + if (!d->actionDelete->isEnabled ()) + { + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\taction not enabled - was probably called from kpTool::keyPressEvent()"; + #endif + return; + } + + Q_ASSERT (d->document && d->document->selection ()); + + toolEndShape (); + + addImageOrSelectionCommand (new kpToolSelectionDestroyCommand ( + d->document->textSelection () ? + i18n ("Text: Delete Box") : // not to be confused with i18n ("Text: Delete") + i18n ("Selection: Delete"), + false/*no push onto doc*/, + commandEnvironment ())); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotSelectAll () +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::slotSelectAll() CALLED"; +#endif + Q_ASSERT (d->document); + + toolEndShape (); + + if (d->document->selection ()) { + slotDeselect (); + } + + // just the border - don't actually pull image from doc yet + d->document->setSelection ( + kpRectangularImageSelection (d->document->rect (), + imageSelectionTransparency ())); + + if (tool ()) { + tool ()->somethingBelowTheCursorChanged (); + } +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::addDeselectFirstCommand (kpCommand *cmd) +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::addDeselectFirstCommand(" + << cmd + << ")"; +#endif + + + kpAbstractSelection *sel = d->document->selection (); + +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\tsel=" << sel; +#endif + + if (sel) + { + // if you just dragged out something with no action then + // forget the drag + if (!sel->hasContent ()) + { + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\tjust a fresh border - was nop - delete"; + #endif + d->document->selectionDelete (); + if (tool ()) { + tool ()->somethingBelowTheCursorChanged (); + } + + if (cmd) { + d->commandHistory->addCommand (cmd); + } + } + else + { + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\treal selection with image - push onto doc cmd"; + #endif + kpCommand *deselectCommand = new kpToolSelectionDestroyCommand ( + dynamic_cast (sel) ? + i18n ("Text: Finish") : + i18n ("Selection: Deselect"), + true/*push onto document*/, + commandEnvironment ()); + + if (cmd) + { + kpMacroCommand *macroCmd = new kpMacroCommand (cmd->name (), + commandEnvironment ()); + macroCmd->addCommand (deselectCommand); + macroCmd->addCommand (cmd); + d->commandHistory->addCommand (macroCmd); + } + else { + d->commandHistory->addCommand (deselectCommand); + } + } + } + else + { + if (cmd) { + d->commandHistory->addCommand (cmd); + } + } +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotDeselect () +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::slotDeselect() CALLED"; +#endif + Q_ASSERT (d->document && d->document->selection ()); + + toolEndShape (); + + addDeselectFirstCommand (nullptr); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotCopyToFile () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotCopyToFile()"; +#endif + + toolEndShape (); + + + if (!d->document->selection ()) { + return; + } + + kpImage imageToSave; + + if (d->document->imageSelection ()) + { + kpAbstractImageSelection *imageSel = d->document->imageSelection (); + if (!imageSel->hasContent ()) + { + // Not a floating selection - user has just selected a region; + // haven't pulled it off yet so probably don't expect and can't + // visualize selection transparency so give opaque, not transparent + // image. + imageToSave = d->document->getSelectedBaseImage (); + } + else { + imageToSave = imageSel->transparentImage (); + } + } + else if (d->document->textSelection ()) + { + imageToSave = d->document->textSelection ()->approximateImage (); + } + else { + Q_ASSERT (!"Unknown selection type"); + } + + + kpDocumentSaveOptions chosenSaveOptions; + bool allowLossyPrompt; + QUrl chosenURL = askForSaveURL (i18nc ("@title:window", "Copy to File"), + d->lastCopyToURL.url (), + imageToSave, + d->lastCopyToSaveOptions, + kpDocumentMetaInfo (), + kpSettingsGroupEditCopyTo, + false/*allow remote files*/, + &chosenSaveOptions, + d->copyToFirstTime, + &allowLossyPrompt); + + if (chosenURL.isEmpty ()) { + return; + } + + + if (!kpDocument::savePixmapToFile (imageToSave, + chosenURL, + chosenSaveOptions, kpDocumentMetaInfo (), + allowLossyPrompt, + this)) + { + return; + } + + + addRecentURL (chosenURL); + + + d->lastCopyToURL = chosenURL; + d->lastCopyToSaveOptions = chosenSaveOptions; + + d->copyToFirstTime = false; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotPasteFromFile () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotPasteFromFile()"; +#endif + + toolEndShape (); + + + QList urls = askForOpenURLs(i18nc ("@title:window", "Paste From File"), + false/*only 1 URL*/); + + if (urls.count () != 1) { + return; + } + + QUrl url = urls.first (); + + kpImage image = kpDocument::getPixmapFromFile (url, + false/*show error message if doesn't exist*/, + this); + + if (image.isNull ()) { + return; + } + + addRecentURL (url); + + paste (kpRectangularImageSelection ( + QRect (0, 0, image.width (), image.height ()), + image, + imageSelectionTransparency ())); +} + +//--------------------------------------------------------------------- diff --git a/mainWindow/kpMainWindow_File.cpp b/mainWindow/kpMainWindow_File.cpp new file mode 100644 index 0000000..55622d1 --- /dev/null +++ b/mainWindow/kpMainWindow_File.cpp @@ -0,0 +1,1510 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2007 John Layt + Copyright (c) 2007,2011,2015 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpMainWindow.h" +#include "kpMainWindowPrivate.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "commands/imagelib/kpDocumentMetaInfoCommand.h" +#include "dialogs/imagelib/kpDocumentMetaInfoDialog.h" +#include "widgets/kpDocumentSaveOptionsWidget.h" +#include "pixmapfx/kpPixmapFX.h" +#include "widgets/kpPrintDialogPage.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#if HAVE_KSANE +#include "../scan/sanedialog.h" +#endif // HAVE_KSANE + +// private +void kpMainWindow::setupFileMenuActions () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::setupFileMenuActions()"; +#endif + KActionCollection *ac = actionCollection (); + + d->actionNew = KStandardAction::openNew (this, SLOT (slotNew()), ac); + d->actionOpen = KStandardAction::open (this, SLOT (slotOpen()), ac); + + d->actionOpenRecent = KStandardAction::openRecent(this, &kpMainWindow::slotOpenRecent, ac); + connect(d->actionOpenRecent, &KRecentFilesAction::recentListCleared, this, &kpMainWindow::slotRecentListCleared); + d->actionOpenRecent->loadEntries (KSharedConfig::openConfig ()->group (kpSettingsGroupRecentFiles)); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\trecent URLs=" << d->actionOpenRecent->items (); +#endif + + d->actionSave = KStandardAction::save (this, SLOT (slotSave()), ac); + d->actionSaveAs = KStandardAction::saveAs (this, SLOT (slotSaveAs()), ac); + + d->actionExport = ac->addAction(QStringLiteral("file_export")); + d->actionExport->setText (i18n ("E&xport...")); + d->actionExport->setIcon(QIcon::fromTheme(QStringLiteral("document-export"))); + connect (d->actionExport, &QAction::triggered, this, &kpMainWindow::slotExport); + + d->actionScan = ac->addAction(QStringLiteral("file_scan")); + d->actionScan->setText(i18n ("Scan...")); + d->actionScan->setIcon(QIcon::fromTheme("scanner")); +#if HAVE_KSANE + connect (d->actionScan, &QAction::triggered, this, &kpMainWindow::slotScan); +#else + d->actionScan->setEnabled(false); +#endif // HAVE_KSANE + + d->actionScreenshot = ac->addAction(QStringLiteral("file_screenshot")); + d->actionScreenshot->setText(i18n("Acquire Screenshot")); + connect (d->actionScreenshot, &QAction::triggered, this, &kpMainWindow::slotScreenshot); + + d->actionProperties = ac->addAction (QStringLiteral("file_properties")); + d->actionProperties->setText (i18n ("Properties")); + d->actionProperties->setIcon(QIcon::fromTheme(QStringLiteral("document-properties"))); + connect (d->actionProperties, &QAction::triggered, this, &kpMainWindow::slotProperties); + + //d->actionRevert = KStandardAction::revert (this, SLOT (slotRevert()), ac); + d->actionReload = ac->addAction (QStringLiteral("file_revert")); + d->actionReload->setText (i18n ("Reloa&d")); + d->actionReload->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh"))); + connect (d->actionReload, &QAction::triggered, this, &kpMainWindow::slotReload); + ac->setDefaultShortcuts (d->actionReload, KStandardShortcut::reload ()); + slotEnableReload (); + + d->actionPrint = KStandardAction::print (this, SLOT (slotPrint()), ac); + d->actionPrintPreview = KStandardAction::printPreview (this, SLOT (slotPrintPreview()), ac); + + d->actionMail = KStandardAction::mail (this, SLOT (slotMail()), ac); + + d->actionClose = KStandardAction::close (this, SLOT (slotClose()), ac); + d->actionQuit = KStandardAction::quit (this, SLOT (slotQuit()), ac); + + d->scanDialog = nullptr; + + enableFileMenuDocumentActions (false); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableFileMenuDocumentActions (bool enable) +{ + // d->actionNew + // d->actionOpen + + // d->actionOpenRecent + + d->actionSave->setEnabled (enable); + d->actionSaveAs->setEnabled (enable); + + d->actionExport->setEnabled (enable); + + // d->actionScan + + d->actionProperties->setEnabled (enable); + + // d->actionReload + + d->actionPrint->setEnabled (enable); + d->actionPrintPreview->setEnabled (enable); + + d->actionMail->setEnabled (enable); + + d->actionClose->setEnabled (enable); + // d->actionQuit->setEnabled (enable); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::addRecentURL (const QUrl &url_) +{ + // HACK: KRecentFilesAction::loadEntries() clears the KRecentFilesAction::d->urls + // map. + // + // So afterwards, the URL ref, our method is given, points to an + // element in this now-cleared map (see KRecentFilesAction::urlSelected(QAction*)). + // Accessing it would result in a crash. + // + // To avoid the crash, make a copy of it before calling + // loadEntries() and use this copy, instead of the to-be-dangling + // ref. + const QUrl url = url_; // DO NOT MAKE IT A REFERENCE, THE CALL BELOW TO loadEntries DESTROYS url_ + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::addRecentURL(" << url << ")"; +#endif + if (url.isEmpty ()) + return; + + + KSharedConfig::Ptr cfg = KSharedConfig::openConfig(); + + // KConfig::readEntry() does not actually reread from disk, hence doesn't + // realize what other processes have done e.g. Settings / Show Path + cfg->reparseConfiguration (); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\trecent URLs=" << d->actionOpenRecent->items (); +#endif + // HACK: Something might have changed interprocess. + // If we could PROPAGATE: interprocess, then this wouldn't be required. + d->actionOpenRecent->loadEntries (cfg->group (kpSettingsGroupRecentFiles)); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tafter loading config=" << d->actionOpenRecent->items (); +#endif + + d->actionOpenRecent->addUrl (url); + + d->actionOpenRecent->saveEntries (cfg->group (kpSettingsGroupRecentFiles)); + cfg->sync (); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tnew recent URLs=" << d->actionOpenRecent->items (); +#endif + + + // TODO: PROPAGATE: interprocess + // TODO: Is this loop safe since a KMainWindow later along in the list, + // could be closed as the code in the body almost certainly re-enters + // the event loop? Problem for KDE 3 as well, I think. + for (auto *kmw : KMainWindow::memberList ()) + { + Q_ASSERT (dynamic_cast (kmw)); + auto *mw = dynamic_cast (kmw); + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tmw=" << mw; + #endif + + if (mw != this) + { + // WARNING: Do not use KRecentFilesAction::setItems() + // - it does not work since only its superclass, + // KSelectAction, implements setItems() and can't + // update KRecentFilesAction's URL list. + + // Avoid URL memory leak in KRecentFilesAction::loadEntries(). + mw->d->actionOpenRecent->clear (); + + mw->d->actionOpenRecent->loadEntries (cfg->group (kpSettingsGroupRecentFiles)); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\t\tcheck recent URLs=" + << mw->d->actionOpenRecent->items (); + #endif + } + } +} + +//--------------------------------------------------------------------- + + +// private slot +// TODO: Disable action if +// (d->configOpenImagesInSameWindow && d->document && d->document->isEmpty()) +// as it does nothing if this is true. +void kpMainWindow::slotNew () +{ + toolEndShape (); + + if (d->document && !d->configOpenImagesInSameWindow) + { + // A document -- empty or otherwise -- is open. + // Force open a new window. In contrast, open() might not open + // a new window in this case. + auto *win = new kpMainWindow (); + win->show (); + } + else + { + open (QUrl (), true/*create an empty doc*/); + } +} + +//--------------------------------------------------------------------- + + +// private +QSize kpMainWindow::defaultDocSize () const +{ + // KConfig::readEntry() does not actually reread from disk, hence doesn't + // realize what other processes have done e.g. Settings / Show Path + KSharedConfig::openConfig ()->reparseConfiguration (); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + + QSize docSize = cfg.readEntry (kpSettingLastDocSize, QSize ()); + + if (docSize.isEmpty ()) + { + docSize = QSize (400, 300); + } + else + { + // Don't get too big or you'll thrash (or even lock up) the computer + // just by opening a window + docSize = QSize (qMin (2048, docSize.width ()), + qMin (2048, docSize.height ())); + } + + return docSize; +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::saveDefaultDocSize (const QSize &size) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tCONFIG: saving Last Doc Size = " << size; +#endif + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + + cfg.writeEntry (kpSettingLastDocSize, size); + cfg.sync (); +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::shouldOpen () +{ + if (d->configOpenImagesInSameWindow) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\topenImagesInSameWindow"; + #endif + // (this brings up a dialog and might save the current doc) + if (!queryCloseDocument ()) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tqueryCloseDocument() aborts open"; + #endif + return false; + } + } + + return true; +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setDocumentChoosingWindow (kpDocument *doc) +{ + // Want new window? + if (d->document && !d->document->isEmpty () && + !d->configOpenImagesInSameWindow) + { + // Send doc to new window. + auto *win = new kpMainWindow (doc); + win->show (); + } + else + { + // (sets up views, doc signals) + setDocument (doc); + } +} + +//--------------------------------------------------------------------- + +// private +kpDocument *kpMainWindow::openInternal (const QUrl &url, + const QSize &fallbackDocSize, + bool newDocSameNameIfNotExist) +{ + // If using OpenImagesInSameWindow mode, ask whether to close the + // current document. + if (!shouldOpen ()) + return nullptr; + + // Create/open doc. + auto *newDoc = new kpDocument (fallbackDocSize.width (), + fallbackDocSize.height (), documentEnvironment ()); + + if (!newDoc->open (url, newDocSameNameIfNotExist)) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\topen failed"; + #endif + delete newDoc; + return nullptr; + } + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\topen OK"; +#endif + // Send document to current or new window. + setDocumentChoosingWindow (newDoc); + + return newDoc; +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::open (const QUrl &url, bool newDocSameNameIfNotExist) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::open(" << url + << ",newDocSameNameIfNotExist=" << newDocSameNameIfNotExist + << ")"; +#endif + + kpDocument *newDoc = openInternal (url, + defaultDocSize (), + newDocSameNameIfNotExist); + if (newDoc) + { + if (newDoc->isFromExistingURL ()) + addRecentURL (url); + return true; + } + + return false; +} + +//--------------------------------------------------------------------- + +// private +QList kpMainWindow::askForOpenURLs(const QString &caption, bool allowMultipleURLs) +{ + QMimeDatabase db; + QStringList filterList; + QString filter; + for (const auto &type : QImageReader::supportedMimeTypes()) + { + if ( !filter.isEmpty() ) { + filter += QLatin1Char(' '); + } + + QMimeType mime(db.mimeTypeForName(QString::fromLatin1(type))); + if ( mime.isValid() ) + { + QString glob = mime.globPatterns().join(QLatin1Char(' ')); + + filter += glob; + + // I want to show the mime comment AND the file glob pattern, + // but to avoid that the "All Supported Files" entry shows ALL glob patterns, + // I must add the pattern here a second time so that QFileDialog::HideNameFilterDetails + // can hide the first pattern and I still see the second one + filterList << mime.comment() + QStringLiteral(" (%1)(%2)").arg(glob).arg(glob); + } + } + + filterList.prepend(i18n("All Supported Files (%1)", filter)); + + QFileDialog fd(this); + fd.setNameFilters(filterList); + fd.setOption(QFileDialog::HideNameFilterDetails); + fd.setWindowTitle(caption); + + if ( allowMultipleURLs ) { + fd.setFileMode(QFileDialog::ExistingFiles); + } + + if ( fd.exec() ) { + return fd.selectedUrls(); + } + + return {}; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotOpen () +{ + toolEndShape (); + + const QList urls = askForOpenURLs(i18nc("@title:window", "Open Image")); + + for (const auto & url : urls) + { + open (url); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotOpenRecent (const QUrl &url) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotOpenRecent(" << url << ")"; + qCDebug(kpLogMainWindow) << "\titems=" << d->actionOpenRecent->items (); +#endif + + toolEndShape (); + + open (url); + + // If the open is successful, addRecentURL() would have bubbled up the + // URL in the File / Open Recent action. As a side effect, the URL is + // deselected. + // + // If the open fails, we should deselect the URL: + // + // 1. for consistency + // + // 2. because it has not been opened. + // + d->actionOpenRecent->setCurrentItem (-1); +} + +//--------------------------------------------------------------------- + +void kpMainWindow::slotRecentListCleared() +{ + d->actionOpenRecent->saveEntries(KSharedConfig::openConfig()->group(kpSettingsGroupRecentFiles)); +} + +//--------------------------------------------------------------------- + +#if HAVE_KSANE +// private slot +void kpMainWindow::slotScan () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotScan() scanDialog=" << d->scanDialog; +#endif + + toolEndShape (); + + if (!d->scanDialog) + { + // Create scan dialog + d->scanDialog = new SaneDialog(this); + + // No scanning support (kdegraphics/libkscan) installed? + if (!d->scanDialog) + { + KMessageBox::sorry (this, + i18n("Failed to open scanning dialog."), + i18nc("@title:window", "Scanning Failed")); + return; + } + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tcreated scanDialog=" << d->scanDialog; + #endif + connect (d->scanDialog, &SaneDialog::finalImage, this, &kpMainWindow::slotScanned); + } + + + // If using OpenImagesInSameWindow mode, ask whether to close the + // current document. + // + // Do this after scan support is detected. Because if it's not, what + // would be the point of closing the document? + // + // Ideally, we would do this after the user presses "Final Scan" in + // the scan dialog and before the scan begins (if the user wants to + // cancel the scan operation, it would be annoying to offer this choice + // only after the slow scan is completed) but the KScanDialog API does + // not allow this. So we settle for doing this before any + // scan dialogs are shown. We don't do this between KScanDialog::setup() + // and KScanDialog::exec() as it could be confusing alternating between + // scanning and KolourPaint dialogs. + if (!shouldOpen ()) { + return; + } + + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tcalling setup"; +#endif + // Bring up dialog to select scan device. + // If there is no scanner, we find that this does not bring up a dialog + // but still returns true. + if (d->scanDialog->setup ()) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tOK - showing dialog"; + #endif + // Called only if scanner configured/available. + // + // In reality, this seems to be called even if you press "Cancel" in + // the KScanDialog::setup() dialog! + // + // We use exec() to make sure it's modal. show() seems to work too + // but better safe than sorry. + d->scanDialog->exec (); + } + else + { + // Have never seen this code path execute even if "Cancel" is pressed. + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tFAIL"; + #endif + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotScanned (const QImage &image, int) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotScanned() image.rect=" << image.rect (); +#endif + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\thiding dialog"; +#endif + // (KScanDialog does not close itself after a scan is made) + // + // Close the dialog, first thing: + // + // 1. This means that any dialogs we bring up won't be nested on top. + // + // 2. We don't want to return from this method but forget to close + // the dialog. So do it before anything else. + d->scanDialog->hide (); + + // (just in case there's some drawing between slotScan() exiting and + // us being called) + toolEndShape (); + + + // TODO: Maybe this code should be moved into kpdocument.cpp - + // since it resembles the responsibilities of kpDocument::open(). + + kpDocumentSaveOptions saveOptions; + kpDocumentMetaInfo metaInfo; + + kpDocument::getDataFromImage(image, saveOptions, metaInfo); + + // Create document from image and meta info. + auto *doc = new kpDocument (image.width (), image.height (), documentEnvironment ()); + doc->setImage (image); + doc->setSaveOptions (saveOptions); + doc->setMetaInfo (metaInfo); + + // Send document to current or new window. + setDocumentChoosingWindow (doc); +} +#endif // HAVE_KSANE + +//--------------------------------------------------------------------- + +void kpMainWindow::slotScreenshot() +{ + toolEndShape(); + + auto *dialog = new QDialog(this); + auto *buttons = new QDialogButtonBox(QDialogButtonBox::Ok | + QDialogButtonBox::Cancel, dialog); + connect (buttons, &QDialogButtonBox::accepted, dialog, &QDialog::accept); + connect (buttons, &QDialogButtonBox::rejected, dialog, &QDialog::reject); + + auto *label = new QLabel(i18n("Snapshot Delay")); + auto *seconds = new KPluralHandlingSpinBox; + seconds->setRange(0, 99); + seconds->setSuffix(ki18np(" second", " seconds")); + seconds->setSpecialValueText(i18n("No delay")); + + auto *hideWindow = new QCheckBox(i18n("Hide Main Window")); + hideWindow->setChecked(true); + + auto *vbox = new QVBoxLayout(dialog); + vbox->addWidget(label); + vbox->addWidget(seconds); + vbox->addWidget(hideWindow); + vbox->addWidget(buttons); + + if ( dialog->exec() == QDialog::Rejected ) + { + delete dialog; + return; + } + + if ( hideWindow->isChecked() ) { + hide(); + } + + // at least 1 seconds to make sure the window is hidden and the hide effect already stopped + QTimer::singleShot((seconds->value() + 1) * 1000, this, &kpMainWindow::slotMakeScreenshot); + + delete dialog; +} + +//--------------------------------------------------------------------- + +void kpMainWindow::slotMakeScreenshot() +{ + QCoreApplication::processEvents(); + QPixmap pixmap = QGuiApplication::primaryScreen()->grabWindow(QApplication::desktop()->winId()); + + auto *doc = new kpDocument(pixmap.width(), pixmap.height(), documentEnvironment()); + doc->setImage(pixmap.toImage()); + + // Send document to current or new window. + setDocumentChoosingWindow(doc); + + show(); // in case we hid the mainwindow, show it again +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotProperties () +{ + toolEndShape (); + + kpDocumentMetaInfoDialog dialog (document ()->metaInfo (), this); + + if (dialog.exec () && !dialog.isNoOp ()) + { + commandHistory ()->addCommand ( + new kpDocumentMetaInfoCommand ( + i18n ("Document Properties"), + dialog.metaInfo ()/*new*/, *document ()->metaInfo ()/*old*/, + commandEnvironment ())); + } +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::save (bool localOnly) +{ + if (d->document->url ().isEmpty () || + !QImageWriter::supportedMimeTypes() + .contains(d->document->saveOptions ()->mimeType().toLatin1()) || + // SYNC: kpDocument::getPixmapFromFile() can't determine quality + // from file so it has been set initially to an invalid value. + (d->document->saveOptions ()->mimeTypeHasConfigurableQuality () && + d->document->saveOptions ()->qualityIsInvalid ()) || + (localOnly && !d->document->url ().isLocalFile ())) + { + return saveAs (localOnly); + } + + if (d->document->save (!d->document->savedAtLeastOnceBefore ()/*lossy prompt*/)) + { + addRecentURL (d->document->url ()); + return true; + } + + return false; +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::slotSave () +{ + toolEndShape (); + + return save (); +} + +//--------------------------------------------------------------------- + +// private +QUrl kpMainWindow::askForSaveURL (const QString &caption, + const QString &startURL, + const kpImage &imageToBeSaved, + const kpDocumentSaveOptions &startSaveOptions, + const kpDocumentMetaInfo &docMetaInfo, + const QString &forcedSaveOptionsGroup, + bool localOnly, + kpDocumentSaveOptions *chosenSaveOptions, + bool isSavingForFirstTime, + bool *allowLossyPrompt) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::askForURL() startURL=" << startURL; + startSaveOptions.printDebug ("\tstartSaveOptions"); +#endif + + bool reparsedConfiguration = false; + + // KConfig::readEntry() does not actually reread from disk, hence doesn't + // realize what other processes have done e.g. Settings / Show Path + // so reparseConfiguration() must be called +#define SETUP_READ_CFG() \ + if (!reparsedConfiguration) \ + { \ + KSharedConfig::openConfig ()->reparseConfiguration (); \ + reparsedConfiguration = true; \ + } \ + \ + KConfigGroup cfg (KSharedConfig::openConfig (), forcedSaveOptionsGroup); + + + if (chosenSaveOptions) { + *chosenSaveOptions = kpDocumentSaveOptions (); + } + + if (allowLossyPrompt) { + *allowLossyPrompt = true; // play it safe for now + } + + + kpDocumentSaveOptions fdSaveOptions = startSaveOptions; + + QStringList mimeTypes; + for (const auto &type : QImageWriter::supportedMimeTypes()) { + mimeTypes << QString::fromLatin1(type); + } +#if DEBUG_KP_MAIN_WINDOW + QStringList sortedMimeTypes = mimeTypes; + sortedMimeTypes.sort (); + qCDebug(kpLogMainWindow) << "\tmimeTypes=" << mimeTypes + << "\tsortedMimeTypes=" << sortedMimeTypes; +#endif + if (mimeTypes.isEmpty ()) + { + qCCritical(kpLogMainWindow) << "No output mimetypes!"; + return {}; + } + +#define MIME_TYPE_IS_VALID() (!fdSaveOptions.mimeTypeIsInvalid () && \ + mimeTypes.contains (fdSaveOptions.mimeType ())) + if (!MIME_TYPE_IS_VALID ()) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tmimeType=" << fdSaveOptions.mimeType () + << " not valid, get default"; + #endif + + SETUP_READ_CFG (); + + fdSaveOptions.setMimeType (kpDocumentSaveOptions::defaultMimeType (cfg)); + + + if (!MIME_TYPE_IS_VALID ()) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tmimeType=" << fdSaveOptions.mimeType () + << " not valid, get hardcoded"; + #endif + if (mimeTypes.contains(QLatin1String("image/png"))) { + fdSaveOptions.setMimeType (QStringLiteral("image/png")); + } + else if (mimeTypes.contains(QLatin1String("image/bmp"))) { + fdSaveOptions.setMimeType (QStringLiteral("image/bmp")); + } + else { + fdSaveOptions.setMimeType (mimeTypes.first ()); + } + } + } +#undef MIME_TYPE_IS_VALID + + if (fdSaveOptions.colorDepthIsInvalid ()) + { + SETUP_READ_CFG (); + + fdSaveOptions.setColorDepth (kpDocumentSaveOptions::defaultColorDepth (cfg)); + fdSaveOptions.setDither (kpDocumentSaveOptions::defaultDither (cfg)); + } + + if (fdSaveOptions.qualityIsInvalid ()) + { + SETUP_READ_CFG (); + + fdSaveOptions.setQuality (kpDocumentSaveOptions::defaultQuality (cfg)); + } +#if DEBUG_KP_MAIN_WINDOW + fdSaveOptions.printDebug ("\tcorrected saveOptions passed to fileDialog"); +#endif + + auto *saveOptionsWidget = + new kpDocumentSaveOptionsWidget (imageToBeSaved, + fdSaveOptions, + docMetaInfo, + this); + + KFileCustomDialog fd (QUrl (startURL), this); + fd.setOperationMode (KFileWidget::Saving); + fd.setWindowTitle (caption); + fd.setCustomWidget (saveOptionsWidget); + KFileWidget *fw = fd.fileWidget(); + fw->setConfirmOverwrite (true); + fw->setMimeFilter (mimeTypes, fdSaveOptions.mimeType ()); + if (localOnly) { + fw->setMode (KFile::File | KFile::LocalOnly); + } + + saveOptionsWidget->setVisualParent (&fd); + + connect (fw, &KFileWidget::filterChanged, + saveOptionsWidget, &kpDocumentSaveOptionsWidget::setMimeType); + + if ( fd.exec() == QDialog::Accepted ) + { + kpDocumentSaveOptions newSaveOptions = saveOptionsWidget->documentSaveOptions (); + #if DEBUG_KP_MAIN_WINDOW + newSaveOptions.printDebug ("\tnewSaveOptions"); + #endif + + KConfigGroup cfg (KSharedConfig::openConfig (), forcedSaveOptionsGroup); + + // Save options user forced - probably want to use them in future + kpDocumentSaveOptions::saveDefaultDifferences (cfg, + fdSaveOptions, newSaveOptions); + cfg.sync (); + + + if (chosenSaveOptions) { + *chosenSaveOptions = newSaveOptions; + } + + const QList selectedUrls = fw->selectedUrls (); + if (selectedUrls.isEmpty()) { // shouldn't happen + return {}; + } + const QUrl selectedUrl = selectedUrls.at(0); + + if (allowLossyPrompt) + { + // SYNC: kpDocumentSaveOptions elements - everything except quality + // (one quality setting is "just as lossy" as another so no + // need to continually warn due to quality change) + *allowLossyPrompt = + (isSavingForFirstTime || + selectedUrl != QUrl (startURL) || + newSaveOptions.mimeType () != startSaveOptions.mimeType () || + newSaveOptions.colorDepth () != startSaveOptions.colorDepth () || + newSaveOptions.dither () != startSaveOptions.dither ()); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tallowLossyPrompt=" << *allowLossyPrompt; + #endif + } + + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tselectedUrl=" << selectedUrl; + #endif + return selectedUrl; + } + + return {}; +#undef SETUP_READ_CFG +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::saveAs (bool localOnly) +{ + kpDocumentSaveOptions chosenSaveOptions; + bool allowLossyPrompt; + QUrl chosenURL = askForSaveURL (i18nc ("@title:window", "Save Image As"), + d->document->url ().url (), + d->document->imageWithSelection (), + *d->document->saveOptions (), + *d->document->metaInfo (), + kpSettingsGroupFileSaveAs, + localOnly, + &chosenSaveOptions, + !d->document->savedAtLeastOnceBefore (), + &allowLossyPrompt); + + + if (chosenURL.isEmpty ()) { + return false; + } + + + if (!d->document->saveAs (chosenURL, chosenSaveOptions, + allowLossyPrompt)) + { + return false; + } + + + addRecentURL (chosenURL); + + return true; +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::slotSaveAs () +{ + toolEndShape (); + + return saveAs (); +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::slotExport () +{ + toolEndShape (); + + kpDocumentSaveOptions chosenSaveOptions; + bool allowLossyPrompt; + QUrl chosenURL = askForSaveURL (i18nc ("@title:window", "Export"), + d->lastExportURL.url (), + d->document->imageWithSelection (), + d->lastExportSaveOptions, + *d->document->metaInfo (), + kpSettingsGroupFileExport, + false/*allow remote files*/, + &chosenSaveOptions, + d->exportFirstTime, + &allowLossyPrompt); + + + if (chosenURL.isEmpty ()) { + return false; + } + + if (!kpDocument::savePixmapToFile (d->document->imageWithSelection (), + chosenURL, + chosenSaveOptions, *d->document->metaInfo (), + allowLossyPrompt, + this)) + { + return false; + } + + + addRecentURL (chosenURL); + + d->lastExportURL = chosenURL; + d->lastExportSaveOptions = chosenSaveOptions; + + d->exportFirstTime = false; + + return true; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotEnableReload () +{ + d->actionReload->setEnabled (d->document); +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::slotReload () +{ + toolEndShape (); + + Q_ASSERT (d->document); + + + QUrl oldURL = d->document->url (); + + + if (d->document->isModified ()) + { + int result = KMessageBox::Cancel; + + if (d->document->isFromExistingURL () && !oldURL.isEmpty ()) + { + result = KMessageBox::warningContinueCancel (this, + i18n ("The document \"%1\" has been modified.\n" + "Reloading will lose all changes since you last saved it.\n" + "Are you sure?", + d->document->prettyFilename ()), + QString()/*caption*/, + KGuiItem(i18n ("&Reload"))); + } + else + { + result = KMessageBox::warningContinueCancel (this, + i18n ("The document \"%1\" has been modified.\n" + "Reloading will lose all changes.\n" + "Are you sure?", + d->document->prettyFilename ()), + QString()/*caption*/, + KGuiItem(i18n ("&Reload"))); + } + + if (result != KMessageBox::Continue) { + return false; + } + } + + + kpDocument *doc = nullptr; + + // If it's _supposed to_ come from an existing URL or it actually exists + if (d->document->isFromExistingURL () || + d->document->urlExists (oldURL)) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotReload() reloading from disk!"; + #endif + + doc = new kpDocument (1, 1, documentEnvironment ()); + if (!doc->open (oldURL)) + { + delete doc; doc = nullptr; + return false; + } + + addRecentURL (oldURL); + } + else + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotReload() create doc"; + #endif + + doc = new kpDocument (d->document->constructorWidth (), + d->document->constructorHeight (), + documentEnvironment ()); + doc->setURL (oldURL, false/*not from URL*/); + } + + + setDocument (doc); + + return true; +} + + +// private +void kpMainWindow::sendDocumentNameToPrinter (QPrinter *printer) +{ + QUrl url = d->document->url (); + if (!url.isEmpty ()) + { + int dot; + + QString fileName = url.fileName (); + dot = fileName.lastIndexOf ('.'); + + // file.ext but not .hidden-file? + if (dot > 0) { + fileName.truncate (dot); + } + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::sendDocumentNameToPrinter() fileName=" + << fileName + << " dir=" + << url.path(); + #endif + printer->setDocName (fileName); + } +} + +//-------------------------------------------------------------------------------- + +void kpMainWindow::setPrinterPageOrientation(QPrinter *printer) +{ + const bool isLandscape = d->document->width() > d->document->height(); + printer->setPageOrientation(isLandscape ? QPageLayout::Landscape : QPageLayout::Portrait); +} + +//-------------------------------------------------------------------------------- + +void kpMainWindow::sendPreviewToPrinter(QPrinter *printer) +{ + sendImageToPrinter(printer, false); +} + +//-------------------------------------------------------------------------------- +// private +void kpMainWindow::sendImageToPrinter (QPrinter *printer, + bool showPrinterSetupDialog) +{ + // Get image to be printed. + kpImage image = d->document->imageWithSelection (); + + + // Get image DPI. + auto imageDotsPerMeterX = double (d->document->metaInfo ()->dotsPerMeterX ()); + auto imageDotsPerMeterY = double (d->document->metaInfo ()->dotsPerMeterY ()); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::sendImageToPrinter() image:" + << " width=" << image.width () + << " height=" << image.height () + << " dotsPerMeterX=" << imageDotsPerMeterX + << " dotsPerMeterY=" << imageDotsPerMeterY; +#endif + + // Image DPI invalid (e.g. new image, could not read from file + // or Qt3 doesn't implement DPI for JPEG)? + if (imageDotsPerMeterX <= 0 || imageDotsPerMeterY <= 0) + { + // Even if just one DPI dimension is invalid, mutate both DPI + // dimensions as we have no information about the intended + // aspect ratio anyway (and other dimension likely to be invalid). + + // When rendering text onto a document, the fonts are rasterised + // according to the screen's DPI. + // TODO: I think we should use the image's DPI. Technically + // possible? + // + // So no matter what computer you draw text on, you get + // the same pixels. + // + // So we must print at the screen's DPI to get the right text size. + // + // Unfortunately, this means that moving to a different screen DPI + // affects printing. If you edited the image at a different screen + // DPI than when you print, you get incorrect results. Furthermore, + // this is bogus if you don't have text in your image. Worse still, + // what if you have multiple screens connected to the same computer + // with different DPIs? + // TODO: mysteriously, someone else is setting this to 96dpi always. + QPixmap arbitraryScreenElement(1, 1); + const QPaintDevice *screenDevice = &arbitraryScreenElement; + const auto dpiX = screenDevice->logicalDpiX (); + const auto dpiY = screenDevice->logicalDpiY (); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tusing screen dpi: x=" << dpiX << " y=" << dpiY; + #endif + + imageDotsPerMeterX = dpiX * KP_INCHES_PER_METER; + imageDotsPerMeterY = dpiY * KP_INCHES_PER_METER; + } + + + // Get page size (excluding margins). + // Coordinate (0,0) is the X here: + // mmmmm + // mX m + // m m m = margin + // m m + // mmmmm + const auto printerWidthMM = printer->widthMM (); + const auto printerHeightMM = printer->heightMM (); + + auto dpiX = imageDotsPerMeterX / KP_INCHES_PER_METER; + auto dpiY = imageDotsPerMeterY / KP_INCHES_PER_METER; + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tprinter: widthMM=" << printerWidthMM + << " heightMM=" << printerHeightMM; + + qCDebug(kpLogMainWindow) << "\timage: dpiX=" << dpiX << " dpiY=" << dpiY; +#endif + + + // + // If image doesn't fit on page at intended DPI, change the DPI. + // + + const auto scaleDpiX = + (image.width () / (printerWidthMM / KP_MILLIMETERS_PER_INCH)) / dpiX; + const auto scaleDpiY = + (image.height () / (printerHeightMM / KP_MILLIMETERS_PER_INCH)) / dpiY; + const auto scaleDpi = qMax (scaleDpiX, scaleDpiY); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tscaleDpi: x=" << scaleDpiX << " y=" << scaleDpiY + << " --> scale at " << scaleDpi << " to fit?"; +#endif + + // Need to increase resolution to fit page? + if (scaleDpi > 1.0) + { + dpiX *= scaleDpi; + dpiY *= scaleDpi; + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\t\tto fit page, scaled to:" + << " dpiX=" << dpiX << " dpiY=" << dpiY; + #endif + } + + + // Make sure DPIs are equal as that's all QPrinter::setResolution() + // supports. We do this in such a way that we only ever stretch an + // image, to avoid losing information. Don't antialias as the printer + // will do that to translate our DPI to its physical resolution and + // double-antialiasing looks bad. + if (dpiX > dpiY) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tdpiX > dpiY; stretching image height to equalise DPIs to dpiX=" + << dpiX; + #endif + kpPixmapFX::scale (&image, + image.width (), + qMax (1, qRound (image.height () * dpiX / dpiY)), + false/*don't antialias*/); + + dpiY = dpiX; + } + else if (dpiY > dpiX) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tdpiY > dpiX; stretching image width to equalise DPIs to dpiY=" + << dpiY; + #endif + kpPixmapFX::scale (&image, + qMax (1, qRound (image.width () * dpiY / dpiX)), + image.height (), + false/*don't antialias*/); + + dpiX = dpiY; + } + + Q_ASSERT (dpiX == dpiY); + + + // QPrinter::setResolution() has to be called before QPrinter::setup(). + printer->setResolution (qMax (1, qRound (dpiX))); + + + sendDocumentNameToPrinter (printer); + + + if (showPrinterSetupDialog) + { + auto *optionsPage = new kpPrintDialogPage (this); + optionsPage->setPrintImageCenteredOnPage (d->configPrintImageCenteredOnPage); + + QPrintDialog printDialog (printer, this); + printDialog.setOptionTabs ({optionsPage}); + printDialog.setWindowTitle (i18nc ("@title:window", "Print Image")); + + // Display dialog. + const bool wantToPrint = printDialog.exec (); + + if (optionsPage->printImageCenteredOnPage () != + d->configPrintImageCenteredOnPage) + { + // Save config option even if the dialog was cancelled. + d->configPrintImageCenteredOnPage = optionsPage->printImageCenteredOnPage (); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + cfg.writeEntry (kpSettingPrintImageCenteredOnPage, + d->configPrintImageCenteredOnPage); + cfg.sync (); + } + + if (!wantToPrint) { + return; + } + } + + + // Send image to printer. + QPainter painter; + painter.begin(printer); + + double originX = 0, originY = 0; + + // Center image on page? + if (d->configPrintImageCenteredOnPage) + { + originX = (printer->width() - image.width ()) / 2; + originY = (printer->height() - image.height ()) / 2; + } + + painter.drawImage(qRound(originX), qRound(originY), image); + painter.end(); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotPrint () +{ + toolEndShape (); + + QPrinter printer; + setPrinterPageOrientation(&printer); + + sendImageToPrinter (&printer, true/*showPrinterSetupDialog*/); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotPrintPreview () +{ + toolEndShape (); + + QPrinter printer; + setPrinterPageOrientation(&printer); + QPrintPreviewDialog printPreview(&printer, this); + connect(&printPreview, &QPrintPreviewDialog::paintRequested, this, &kpMainWindow::sendPreviewToPrinter); + + printPreview.exec (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotMail () +{ + toolEndShape (); + + if (d->document->url ().isEmpty ()/*no name*/ || + !(d->document->isFromExistingURL () && d->document->urlExists (d->document->url ())) || + d->document->isModified ()/*needs to be saved*/) + { + int result = KMessageBox::questionYesNo (this, + i18n ("You must save this image before sending it.\n" + "Do you want to save it?"), + QString(), + KStandardGuiItem::save (), KStandardGuiItem::cancel ()); + + if (result == KMessageBox::Yes) + { + if (!save ()) + { + // save failed or aborted - don't email + return; + } + } + else + { + // don't want to save - don't email + return; + } + } + + auto *job = new KEMailClientLauncherJob; + job->setSubject(d->document->prettyFilename()); + job->setAttachments({d->document->url()}); + job->start(); +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::queryCloseDocument () +{ + toolEndShape (); + + if (!d->document || !d->document->isModified ()) { + return true; // ok to close current doc + } + + int result = KMessageBox::warningYesNoCancel (this, + i18n ("The document \"%1\" has been modified.\n" + "Do you want to save it?", + d->document->prettyFilename ()), + QString()/*caption*/, + KStandardGuiItem::save (), KStandardGuiItem::discard ()); + + switch (result) + { + case KMessageBox::Yes: + return slotSave (); // close only if save succeeds + case KMessageBox::No: + return true; // close without saving + default: + return false; // don't close current doc + } +} + +//--------------------------------------------------------------------- + +// private virtual [base KMainWindow] +bool kpMainWindow::queryClose () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::queryClose()"; +#endif + toolEndShape (); + + if (!queryCloseDocument ()) { + return false; + } + + if (!queryCloseColors ()) { + return false; + } + + return true; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotClose () +{ + toolEndShape (); + + if (!queryCloseDocument ()) { + return; + } + + setDocument (nullptr); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotQuit () +{ + toolEndShape (); + + close (); // will call queryClose() +} + +//--------------------------------------------------------------------- diff --git a/mainWindow/kpMainWindow_Image.cpp b/mainWindow/kpMainWindow_Image.cpp new file mode 100644 index 0000000..8d0b734 --- /dev/null +++ b/mainWindow/kpMainWindow_Image.cpp @@ -0,0 +1,624 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "mainWindow/kpMainWindow.h" +#include "kpMainWindowPrivate.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "imagelib/kpColor.h" +#include "kpDefs.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "commands/imagelib/effects/kpEffectInvertCommand.h" +#include "commands/imagelib/effects/kpEffectReduceColorsCommand.h" +#include "dialogs/imagelib/effects/kpEffectsDialog.h" +#include "commands/imagelib/effects/kpEffectClearCommand.h" +#include "commands/imagelib/effects/kpEffectGrayscaleCommand.h" +#include "commands/kpMacroCommand.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "commands/tools/selection/kpToolSelectionPullFromDocumentCommand.h" +#include "commands/tools/selection/text/kpToolTextGiveContentCommand.h" +#include "imagelib/transforms/kpTransformAutoCrop.h" +#include "imagelib/transforms/kpTransformCrop.h" +#include "environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.h" +#include "commands/imagelib/transforms/kpTransformFlipCommand.h" +#include "commands/imagelib/transforms/kpTransformResizeScaleCommand.h" +#include "dialogs/imagelib/transforms/kpTransformResizeScaleDialog.h" +#include "commands/imagelib/transforms/kpTransformRotateCommand.h" +#include "dialogs/imagelib/transforms/kpTransformRotateDialog.h" +#include "commands/imagelib/transforms/kpTransformSkewCommand.h" +#include "dialogs/imagelib/transforms/kpTransformSkewDialog.h" +#include "views/manager/kpViewManager.h" +#include "commands/imagelib/effects/kpEffectBlurSharpenCommand.h" +#include "imagelib/effects/kpEffectBlurSharpen.h" +#include "kpLogCategories.h" + +#include +#include +#include +#include + +#include +#include +#include + + +//--------------------------------------------------------------------- + +// private +kpTransformDialogEnvironment *kpMainWindow::transformDialogEnvironment () +{ + if (!d->transformDialogEnvironment) + d->transformDialogEnvironment = new kpTransformDialogEnvironment (this); + + return d->transformDialogEnvironment; +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::isSelectionActive () const +{ + return (d->document ? bool (d->document->selection ()) : false); +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::isTextSelection () const +{ + return (d->document && d->document->textSelection ()); +} + +//--------------------------------------------------------------------- + +// private +QString kpMainWindow::autoCropText () const +{ + return kpTransformAutoCropCommand::text(isSelectionActive(), + kpTransformAutoCropCommand::ShowAccel); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setupImageMenuActions () +{ + KActionCollection *ac = actionCollection (); + + d->actionResizeScale = ac->addAction (QStringLiteral("image_resize_scale")); + d->actionResizeScale->setText (i18n ("R&esize / Scale...")); + connect (d->actionResizeScale, &QAction::triggered, this, &kpMainWindow::slotResizeScale); + + ac->setDefaultShortcut (d->actionResizeScale, Qt::CTRL | Qt::Key_E); + + d->actionCrop = ac->addAction (QStringLiteral("image_crop")); + d->actionCrop->setText (i18n ("Se&t as Image (Crop)")); + connect (d->actionCrop, &QAction::triggered, this, &kpMainWindow::slotCrop); + ac->setDefaultShortcut (d->actionCrop, Qt::CTRL | Qt::Key_T); + + d->actionAutoCrop = ac->addAction (QStringLiteral("image_auto_crop")); + d->actionAutoCrop->setText (autoCropText ()); + connect (d->actionAutoCrop, &QAction::triggered, this, &kpMainWindow::slotAutoCrop); + ac->setDefaultShortcut (d->actionAutoCrop, Qt::CTRL | Qt::Key_U); + + d->actionFlip = ac->addAction (QStringLiteral("image_flip")); + d->actionFlip->setText (i18n ("&Flip (upside down)")); + connect (d->actionFlip, &QAction::triggered, this, &kpMainWindow::slotFlip); + ac->setDefaultShortcut (d->actionFlip, Qt::CTRL | Qt::Key_F); + + d->actionMirror = ac->addAction (QStringLiteral("image_mirror")); + d->actionMirror->setText (i18n ("Mirror (horizontally)")); + connect (d->actionMirror, &QAction::triggered, this, &kpMainWindow::slotMirror); + //ac->setDefaultShortcut (d->actionMirror, Qt::CTRL | Qt::Key_M); + + d->actionRotate = ac->addAction (QStringLiteral("image_rotate")); + d->actionRotate->setText (i18n ("&Rotate...")); + d->actionRotate->setIcon(QIcon::fromTheme(QStringLiteral("transform-rotate"))); + connect (d->actionRotate, &QAction::triggered, this, &kpMainWindow::slotRotate); + ac->setDefaultShortcut (d->actionRotate, Qt::CTRL | Qt::Key_R); + + d->actionRotateLeft = ac->addAction (QStringLiteral("image_rotate_270deg")); + d->actionRotateLeft->setText (i18n ("Rotate &Left")); + d->actionRotateLeft->setIcon(QIcon::fromTheme(QStringLiteral("object-rotate-left"))); + connect (d->actionRotateLeft, &QAction::triggered, this, &kpMainWindow::slotRotate270); + ac->setDefaultShortcut (d->actionRotateLeft, Qt::CTRL | Qt::SHIFT | Qt::Key_Left); + + d->actionRotateRight = ac->addAction (QStringLiteral("image_rotate_90deg")); + d->actionRotateRight->setText (i18n ("Rotate Righ&t")); + d->actionRotateRight->setIcon(QIcon::fromTheme(QStringLiteral("object-rotate-right"))); + connect (d->actionRotateRight, &QAction::triggered, this, &kpMainWindow::slotRotate90); + ac->setDefaultShortcut (d->actionRotateRight, Qt::CTRL | Qt::SHIFT | Qt::Key_Right); + + d->actionSkew = ac->addAction (QStringLiteral("image_skew")); + d->actionSkew->setText (i18n ("S&kew...")); + connect (d->actionSkew, &QAction::triggered, this, &kpMainWindow::slotSkew); + ac->setDefaultShortcut (d->actionSkew, Qt::CTRL | Qt::Key_K); + + d->actionConvertToBlackAndWhite = ac->addAction (QStringLiteral("image_convert_to_black_and_white")); + d->actionConvertToBlackAndWhite->setText (i18n ("Reduce to Mo&nochrome (Dithered)")); + connect (d->actionConvertToBlackAndWhite, &QAction::triggered, + this, &kpMainWindow::slotConvertToBlackAndWhite); + + d->actionConvertToGrayscale = ac->addAction (QStringLiteral("image_convert_to_grayscale")); + d->actionConvertToGrayscale->setText (i18n ("Reduce to &Grayscale")); + connect (d->actionConvertToGrayscale, &QAction::triggered, this, &kpMainWindow::slotConvertToGrayscale); + + d->actionInvertColors = ac->addAction (QStringLiteral("image_invert_colors")); + d->actionInvertColors->setText (i18n ("&Invert Colors")); + connect (d->actionInvertColors, &QAction::triggered, this, &kpMainWindow::slotInvertColors); + ac->setDefaultShortcut (d->actionInvertColors, Qt::CTRL | Qt::Key_I); + + d->actionClear = ac->addAction (QStringLiteral("image_clear")); + d->actionClear->setText (i18n ("C&lear")); + connect (d->actionClear, &QAction::triggered, this, &kpMainWindow::slotClear); + ac->setDefaultShortcut (d->actionClear, Qt::CTRL | Qt::SHIFT | Qt::Key_N); + + d->actionBlur = ac->addAction(QStringLiteral("image_make_confidential")); + d->actionBlur->setText(i18n("Make Confidential")); + connect(d->actionBlur, &QAction::triggered, this, &kpMainWindow::slotMakeConfidential); + + d->actionMoreEffects = ac->addAction (QStringLiteral("image_more_effects")); + d->actionMoreEffects->setText (i18n ("&More Effects...")); + connect (d->actionMoreEffects, &QAction::triggered, this, &kpMainWindow::slotMoreEffects); + ac->setDefaultShortcut (d->actionMoreEffects, Qt::CTRL | Qt::Key_M); + + + enableImageMenuDocumentActions (false); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableImageMenuDocumentActions (bool enable) +{ + d->actionResizeScale->setEnabled (enable); + d->actionCrop->setEnabled (enable); + d->actionAutoCrop->setEnabled (enable); + d->actionFlip->setEnabled (enable); + d->actionMirror->setEnabled (enable); + d->actionRotate->setEnabled (enable); + d->actionRotateLeft->setEnabled (enable); + d->actionRotateRight->setEnabled (enable); + d->actionSkew->setEnabled (enable); + d->actionConvertToBlackAndWhite->setEnabled (enable); + d->actionConvertToGrayscale->setEnabled (enable); + d->actionInvertColors->setEnabled (enable); + d->actionClear->setEnabled (enable); + d->actionBlur->setEnabled (enable); + d->actionMoreEffects->setEnabled (enable); + + d->imageMenuDocumentActionsEnabled = enable; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotImageMenuUpdateDueToSelection () +{ + // SYNC: kolourpaintui.rc + const QString MenuBarItemTextImage = i18nc ( + "Image/Selection Menu caption - make sure the translation has" + " the same accel as the Select&ion translation", + "&Image"); + const QString MenuBarItemTextSelection = i18nc ( + "Image/Selection Menu caption - make sure that translation has" + " the same accel as the &Image translation", + "Select&ion"); + + Q_ASSERT (menuBar ()); + for (auto *action : menuBar ()->actions ()) + { + if (action->text () == MenuBarItemTextImage || + action->text () == MenuBarItemTextSelection) + { + if (isSelectionActive ()) { + action->setText (MenuBarItemTextSelection); + } + else { + action->setText (MenuBarItemTextImage); + } + + break; + } + } + + + d->actionResizeScale->setEnabled (d->imageMenuDocumentActionsEnabled); + d->actionCrop->setEnabled (d->imageMenuDocumentActionsEnabled && + isSelectionActive ()); + + const bool enable = (d->imageMenuDocumentActionsEnabled && !isTextSelection ()); + d->actionAutoCrop->setText (autoCropText ()); + d->actionAutoCrop->setEnabled (enable); + d->actionFlip->setEnabled (enable); + d->actionMirror->setEnabled (enable); + d->actionRotate->setEnabled (enable); + d->actionRotateLeft->setEnabled (enable); + d->actionRotateRight->setEnabled (enable); + d->actionSkew->setEnabled (enable); + d->actionConvertToBlackAndWhite->setEnabled (enable); + d->actionConvertToGrayscale->setEnabled (enable); + d->actionInvertColors->setEnabled (enable); + d->actionClear->setEnabled (enable); + d->actionBlur->setEnabled (enable); + d->actionMoreEffects->setEnabled (enable); +} + +//--------------------------------------------------------------------- + +// public +kpColor kpMainWindow::backgroundColor (bool ofSelection) const +{ + if (ofSelection) { + return kpColor::Transparent; + } + + Q_ASSERT (d->colorToolBar); + return d->colorToolBar->backgroundColor (); +} + +//--------------------------------------------------------------------- + +// public +// REFACTOR: sync: Code dup with kpAbstractSelectionTool::addNeedingContentCommand(). +void kpMainWindow::addImageOrSelectionCommand (kpCommand *cmd, + bool addSelCreateCmdIfSelAvail, + bool addSelContentCmdIfSelAvail) +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::addImageOrSelectionCommand()" + << " addSelCreateCmdIfSelAvail=" << addSelCreateCmdIfSelAvail + << " addSelContentCmdIfSelAvail=" << addSelContentCmdIfSelAvail; +#endif + + Q_ASSERT (d->document); + + + if (d->viewManager) { + d->viewManager->setQueueUpdates (); + } + + + kpAbstractSelection *sel = d->document->selection (); +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\timage sel=" << sel + << " sel->hasContent=" << (sel ? sel->hasContent () : 0); +#endif + if (addSelCreateCmdIfSelAvail && sel && !sel->hasContent ()) + { + QString createCmdName; + + if (dynamic_cast (sel)) { + createCmdName = i18n ("Selection: Create"); + } + else if (dynamic_cast (sel)) { + createCmdName = i18n ("Text: Create Box"); + } + else { + Q_ASSERT (!"Unknown selection type"); + } + + // create selection region + commandHistory ()->addCreateSelectionCommand ( + new kpToolSelectionCreateCommand ( + createCmdName, + *sel, + commandEnvironment ()), + false/*no exec - user already dragged out sel*/); + } + + + if (addSelContentCmdIfSelAvail && sel && !sel->hasContent ()) + { + auto *imageSel = dynamic_cast (sel); + auto *textSel = dynamic_cast (sel); + + if (imageSel && imageSel->transparency ().isTransparent ()) { + d->colorToolBar->flashColorSimilarityToolBarItem (); + } + + kpMacroCommand *macroCmd = new kpMacroCommand (cmd->name (), + commandEnvironment ()); + + if (imageSel) + { + macroCmd->addCommand ( + new kpToolSelectionPullFromDocumentCommand ( + *imageSel, + backgroundColor (), + QString()/*uninteresting child of macro cmd*/, + commandEnvironment ())); + } + else if (textSel) + { + macroCmd->addCommand ( + new kpToolTextGiveContentCommand ( + *textSel, + QString()/*uninteresting child of macro cmd*/, + commandEnvironment ())); + } + else { + Q_ASSERT (!"Unknown selection type"); + } + + macroCmd->addCommand (cmd); + + d->commandHistory->addCommand (macroCmd); + } + else + { + d->commandHistory->addCommand (cmd); + } + + + if (d->viewManager) { + d->viewManager->restoreQueueUpdates (); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotResizeScale () +{ + toolEndShape (); + + kpTransformResizeScaleDialog dialog(transformDialogEnvironment(), this); + + if (dialog.exec () && !dialog.isNoOp ()) + { + auto *cmd = new kpTransformResizeScaleCommand ( + dialog.actOnSelection (), + dialog.imageWidth (), dialog.imageHeight (), + dialog.type (), + commandEnvironment ()); + + bool addSelCreateCommand = (dialog.actOnSelection () || + cmd->scaleSelectionWithImage ()); + bool addSelContentCommand = dialog.actOnSelection (); + + addImageOrSelectionCommand ( + cmd, + addSelCreateCommand, + addSelContentCommand); + + // Resized document? + if (!dialog.actOnSelection () && + dialog.type () == kpTransformResizeScaleCommand::Resize) + { + // TODO: this should be the responsibility of kpDocument + saveDefaultDocSize (QSize (dialog.imageWidth (), dialog.imageHeight ())); + } + } +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotCrop () +{ + toolEndShape (); + + Q_ASSERT (d->document && d->document->selection ()); + + + ::kpTransformCrop (this); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotAutoCrop () +{ + toolEndShape (); + + ::kpTransformAutoCrop (this); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotFlip() +{ + toolEndShape(); + + addImageOrSelectionCommand( + new kpTransformFlipCommand(d->document->selection(), + false, true, commandEnvironment())); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotMirror() +{ + toolEndShape(); + + addImageOrSelectionCommand( + new kpTransformFlipCommand(d->document->selection(), + true, false, commandEnvironment())); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotRotate () +{ + toolEndShape (); + + kpTransformRotateDialog dialog (static_cast (d->document->selection ()), + transformDialogEnvironment (), this); + + if (dialog.exec () && !dialog.isNoOp ()) + { + addImageOrSelectionCommand ( + new kpTransformRotateCommand (d->document->selection (), + dialog.angle (), + commandEnvironment ())); + } +} + +// private slot +void kpMainWindow::slotRotate270 () +{ + toolEndShape (); + + // TODO: Special command name instead of just "Rotate"? + addImageOrSelectionCommand ( + new kpTransformRotateCommand ( + d->document->selection (), + 270, + commandEnvironment ())); +} + +// private slot +void kpMainWindow::slotRotate90 () +{ + toolEndShape (); + + // TODO: Special command name instead of just "Rotate"? + addImageOrSelectionCommand ( + new kpTransformRotateCommand ( + d->document->selection (), + 90, + commandEnvironment ())); +} + + +// private slot +void kpMainWindow::slotSkew () +{ + toolEndShape (); + + kpTransformSkewDialog dialog (static_cast (d->document->selection ()), + transformDialogEnvironment (), this); + + if (dialog.exec () && !dialog.isNoOp ()) + { + addImageOrSelectionCommand ( + new kpTransformSkewCommand (d->document->selection (), + dialog.horizontalAngle (), dialog.verticalAngle (), + commandEnvironment ())); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotConvertToBlackAndWhite () +{ + toolEndShape (); + + addImageOrSelectionCommand ( + new kpEffectReduceColorsCommand (1/*depth*/, true/*dither*/, + d->document->selection (), + commandEnvironment ())); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotConvertToGrayscale () +{ + toolEndShape (); + + addImageOrSelectionCommand ( + new kpEffectGrayscaleCommand (d->document->selection (), + commandEnvironment ())); +} + +//-------------------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotInvertColors () +{ + toolEndShape (); + + addImageOrSelectionCommand ( + new kpEffectInvertCommand (d->document->selection (), + commandEnvironment ())); +} + +//-------------------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotClear () +{ + toolEndShape (); + + addImageOrSelectionCommand ( + new kpEffectClearCommand ( + d->document->selection (), + backgroundColor (), + commandEnvironment ())); +} + +//-------------------------------------------------------------------------------- + +void kpMainWindow::slotMakeConfidential() +{ + toolEndShape(); + + addImageOrSelectionCommand( + new kpEffectBlurSharpenCommand(kpEffectBlurSharpen::MakeConfidential, kpEffectBlurSharpen::MaxStrength, + d->document->selection(), commandEnvironment())); +} + +//-------------------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotMoreEffects () +{ + toolEndShape (); + + kpEffectsDialog dialog (static_cast (d->document->selection ()), + transformDialogEnvironment (), this, + d->moreEffectsDialogLastEffect); + + if (dialog.exec () && !dialog.isNoOp ()) + { + addImageOrSelectionCommand (dialog.createCommand ()); + } + + + if (d->moreEffectsDialogLastEffect != dialog.selectedEffect ()) + { + d->moreEffectsDialogLastEffect = dialog.selectedEffect (); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + + cfg.writeEntry (kpSettingMoreEffectsLastEffect, + d->moreEffectsDialogLastEffect); + cfg.sync (); + } +} + +//-------------------------------------------------------------------------------- diff --git a/mainWindow/kpMainWindow_Settings.cpp b/mainWindow/kpMainWindow_Settings.cpp new file mode 100644 index 0000000..1fa44ce --- /dev/null +++ b/mainWindow/kpMainWindow_Settings.cpp @@ -0,0 +1,161 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "mainWindow/kpMainWindow.h" +#include "kpMainWindowPrivate.h" +#include "kpLogCategories.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "tools/kpToolAction.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "environments/tools/kpToolEnvironment.h" + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setupSettingsMenuActions () +{ + KActionCollection *ac = actionCollection (); + + + // Settings/Toolbars |> %s + setStandardToolBarMenuEnabled (true); + + // Settings/Show Statusbar + createStandardStatusBarAction (); + + + d->actionFullScreen = KStandardAction::fullScreen (this, SLOT (slotFullScreen()), + this/*window*/, ac); + + + d->actionShowPath = ac->add (QStringLiteral("settings_show_path")); + d->actionShowPath->setText (i18n ("Show &Path")); + connect (d->actionShowPath, &QAction::triggered, this, &kpMainWindow::slotShowPathToggled); + slotEnableSettingsShowPath (); + + auto *action = ac->add(QStringLiteral("settings_draw_antialiased")); + action->setText(i18n("Draw Anti-Aliased")); + action->setChecked(kpToolEnvironment::drawAntiAliased); + connect (action, &KToggleAction::triggered, this, &kpMainWindow::slotDrawAntiAliasedToggled); + + d->actionKeyBindings = KStandardAction::keyBindings (this, SLOT (slotKeyBindings()), ac); + + KStandardAction::configureToolbars(this, SLOT(configureToolbars()), actionCollection()); + + enableSettingsMenuDocumentActions (false); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableSettingsMenuDocumentActions (bool /*enable*/) +{ +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotFullScreen () +{ + KToggleFullScreenAction::setFullScreen( this, d->actionFullScreen->isChecked ()); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotEnableSettingsShowPath () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotEnableSettingsShowPath()"; +#endif + + const bool enable = (d->document && !d->document->url ().isEmpty ()); + + d->actionShowPath->setEnabled (enable); + d->actionShowPath->setChecked (enable && d->configShowPath); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotShowPathToggled () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotShowPathToggled()"; +#endif + + d->configShowPath = d->actionShowPath->isChecked (); + + slotUpdateCaption (); + + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + + cfg.writeEntry (kpSettingShowPath, d->configShowPath); + cfg.sync (); +} + +//--------------------------------------------------------------------- + +void kpMainWindow::slotDrawAntiAliasedToggled(bool on) +{ + kpToolEnvironment::drawAntiAliased = on; + + KConfigGroup cfg(KSharedConfig::openConfig(), kpSettingsGroupGeneral); + + cfg.writeEntry(kpSettingDrawAntiAliased, kpToolEnvironment::drawAntiAliased); + cfg.sync(); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotKeyBindings () +{ + toolEndShape (); + + auto *dlg = new KShortcutsDialog(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsAllowed, this); + dlg->setAttribute(Qt::WA_DeleteOnClose); + dlg->addCollection(actionCollection()); + + // TODO: PROPAGATE: through mainWindow's and interprocess, by connecting to + // KShortcutsDialog::saved() signal + dlg->configure(true /* save settings */); +} + +//--------------------------------------------------------------------- diff --git a/mainWindow/kpMainWindow_StatusBar.cpp b/mainWindow/kpMainWindow_StatusBar.cpp new file mode 100644 index 0000000..22d986e --- /dev/null +++ b/mainWindow/kpMainWindow_StatusBar.cpp @@ -0,0 +1,440 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_STATUS_BAR (DEBUG_KP_MAIN_WINDOW && 0) + + +#include "mainWindow/kpMainWindow.h" +#include "kpMainWindowPrivate.h" + +#include +#include +#include + +#include "kpLogCategories.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "tools/kpTool.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" +#include "views/kpZoomedView.h" + +#include +#include + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::addPermanentStatusBarItem (int id, int maxTextLen) +{ + QStatusBar *sb = statusBar (); + + QLabel *label = new QLabel (sb); + label->setAlignment (Qt::AlignCenter); + label->setFixedHeight (label->fontMetrics ().height () + 2); + int maxWidth = label->fontMetrics().horizontalAdvance(QLatin1Char ('8')) * maxTextLen; + // add some margins + maxWidth += label->fontMetrics ().height (); + label->setFixedWidth (maxWidth); + + // Permanent --> place on the right + sb->addPermanentWidget (label); + + d->statusBarLabels.append (label); + Q_ASSERT (d->statusBarLabels.at(id) == label); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::createStatusBar () +{ + QStatusBar *sb = statusBar(); + + // 9999 pixels "ought to be enough for anybody" + const int maxDimenLength = 4; + + d->statusBarMessageLabel = new KSqueezedTextLabel(sb); + // this is done to have the same height as the other labels in status bar; done like in kstatusbar.cpp + d->statusBarMessageLabel->setFixedHeight(d->statusBarMessageLabel->fontMetrics().height() + 2); + d->statusBarMessageLabel->setTextElideMode(Qt::ElideRight); // this is the reason why we explicitly set a widget + sb->addWidget(d->statusBarMessageLabel, 1/*stretch*/); + + addPermanentStatusBarItem (StatusBarItemShapePoints, + (maxDimenLength + 1/*,*/ + maxDimenLength) * 2 + 3/* - */); + addPermanentStatusBarItem (StatusBarItemShapeSize, + (1/*+/-*/ + maxDimenLength) * 2 + 1/*x*/); + + QString numSample = i18n("%1 x %2", 5000, 5000); // localized string; can e.g. be "5 000" + addPermanentStatusBarItem(StatusBarItemDocSize, numSample.length()); + + addPermanentStatusBarItem(StatusBarItemDocDepth, 5/*XXbpp*/); + + addPermanentStatusBarItem (StatusBarItemZoom, + 5/*1600%*/); + + d->statusBarShapeLastPointsInitialised = false; + d->statusBarShapeLastSizeInitialised = false; + d->statusBarCreated = true; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::setStatusBarMessage (const QString &message) +{ +#if DEBUG_STATUS_BAR && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::setStatusBarMessage(" + << message + << ") ok=" << d->statusBarCreated; +#endif + + if (!d->statusBarCreated) { + return; + } + + d->statusBarMessageLabel->setText (message); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::setStatusBarShapePoints (const QPoint &startPoint, + const QPoint &endPoint) +{ +#if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "kpMainWindow::setStatusBarShapePoints(" + << startPoint << "," << endPoint + << ") ok=" << d->statusBarCreated; +#endif + + if (!d->statusBarCreated) { + return; + } + + if (d->statusBarShapeLastPointsInitialised && + startPoint == d->statusBarShapeLastStartPoint && + endPoint == d->statusBarShapeLastEndPoint) + { + #if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "\tNOP"; + #endif + return; + } + + QLabel *statusBarLabel = d->statusBarLabels.at (StatusBarItemShapePoints); + if (startPoint == KP_INVALID_POINT) + { + statusBarLabel->setText (QString()); + } + else if (endPoint == KP_INVALID_POINT) + { + statusBarLabel->setText (i18n ("%1,%2", + startPoint.x (), + startPoint.y ())); + } + else + { + statusBarLabel->setText (i18n ("%1,%2 - %3,%4", + startPoint.x (), + startPoint.y (), + endPoint.x (), + endPoint.y ())); + } + + d->statusBarShapeLastStartPoint = startPoint; + d->statusBarShapeLastEndPoint = endPoint; + d->statusBarShapeLastPointsInitialised = true; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::setStatusBarShapeSize (const QSize &size) +{ +#if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "kpMainWindow::setStatusBarShapeSize(" + << size + << ") ok=" << d->statusBarCreated; +#endif + + if (!d->statusBarCreated) { + return; + } + + if (d->statusBarShapeLastSizeInitialised && + size == d->statusBarShapeLastSize) + { + #if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "\tNOP"; + #endif + return; + } + + QLabel *statusBarLabel = d->statusBarLabels.at (StatusBarItemShapeSize); + if (size == KP_INVALID_SIZE) + { + statusBarLabel->setText (QString()); + } + else + { + statusBarLabel->setText (i18n ("%1x%2", + size.width (), + size.height ())); + } + + d->statusBarShapeLastSize = size; + d->statusBarShapeLastSizeInitialised = true; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::setStatusBarDocSize (const QSize &size) +{ +#if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "kpMainWindow::setStatusBarDocSize(" + << size + << ") ok=" << d->statusBarCreated; +#endif + + if (!d->statusBarCreated) { + return; + } + + QLabel *statusBarLabel = d->statusBarLabels.at (StatusBarItemDocSize); + if (size == KP_INVALID_SIZE) + { + statusBarLabel->setText (QString()); + } + else + { + statusBarLabel->setText (i18n ("%1 x %2", + size.width (), + size.height ())); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::setStatusBarDocDepth (int depth) +{ +#if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "kpMainWindow::setStatusBarDocDepth(" + << depth + << ") ok=" << d->statusBarCreated; +#endif + + if (!d->statusBarCreated) { + return; + } + + QLabel *statusBarLabel = d->statusBarLabels.at (StatusBarItemDocDepth); + if (depth <= 0) + { + statusBarLabel->setText (QString()); + } + else + { + statusBarLabel->setText (i18n ("%1bpp", depth)); + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::setStatusBarZoom (int zoom) +{ +#if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "kpMainWindow::setStatusBarZoom(" + << zoom + << ") ok=" << d->statusBarCreated; +#endif + + if (!d->statusBarCreated) { + return; + } + + QLabel *statusBarLabel = d->statusBarLabels.at (StatusBarItemZoom); + if (zoom <= 0) + { + statusBarLabel->setText (QString()); + } + else + { + statusBarLabel->setText (i18n ("%1%", zoom)); + } +} + +//--------------------------------------------------------------------- + +void kpMainWindow::recalculateStatusBarMessage () +{ +#if DEBUG_STATUS_BAR && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::recalculateStatusBarMessage()"; +#endif + QString scrollViewMessage = d->scrollView->statusMessage (); +#if DEBUG_STATUS_BAR && 1 + qCDebug(kpLogMainWindow) << "\tscrollViewMessage=" << scrollViewMessage; + qCDebug(kpLogMainWindow) << "\tresizing doc? " << !d->scrollView->newDocSize ().isEmpty (); + qCDebug(kpLogMainWindow) << "\tviewUnderCursor? " + << (d->viewManager && d->viewManager->viewUnderCursor ()); +#endif + + // HACK: To work around kpViewScrollableContainer's unreliable + // status messages (which in turn is due to Qt not updating + // QWidget::underMouse() on drags and we needing to hack around it) + if (!scrollViewMessage.isEmpty () && + d->scrollView->newDocSize ().isEmpty () && + d->viewManager && d->viewManager->viewUnderCursor ()) + { + #if DEBUG_STATUS_BAR && 1 + qCDebug(kpLogMainWindow) << "\t\tnot resizing & viewUnderCursor - message is wrong - clearing"; + #endif + d->scrollView->blockSignals (true); + d->scrollView->clearStatusMessage (); + d->scrollView->blockSignals (false); + + scrollViewMessage.clear (); + #if DEBUG_STATUS_BAR && 1 + qCDebug(kpLogMainWindow) << "\t\t\tdone"; + #endif + } + + if (!scrollViewMessage.isEmpty ()) + { + setStatusBarMessage (scrollViewMessage); + } + else + { + const kpTool *t = tool (); + if (t) + { + setStatusBarMessage (t->userMessage ()); + } + else + { + setStatusBarMessage (); + } + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::recalculateStatusBarShape () +{ +#if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "kpMainWindow::recalculateStatusBarShape()"; +#endif + + QSize docResizeTo = d->scrollView->newDocSize (); +#if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "\tdocResizeTo=" << docResizeTo; +#endif + if (docResizeTo.isValid ()) + { + const QPoint startPoint (d->document->width (), d->document->height ()); + #if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "\thavedMovedFromOrgSize=" + << d->scrollView->haveMovedFromOriginalDocSize (); + #endif + if (!d->scrollView->haveMovedFromOriginalDocSize ()) + { + setStatusBarShapePoints (startPoint); + setStatusBarShapeSize (); + } + else + { + const int newWidth = docResizeTo.width (); + const int newHeight = docResizeTo.height (); + + setStatusBarShapePoints (startPoint, QPoint (newWidth, newHeight)); + const QPoint sizeAsPoint (QPoint (newWidth, newHeight) - startPoint); + setStatusBarShapeSize (QSize (sizeAsPoint.x (), sizeAsPoint.y ())); + } + } + else + { + const kpTool *t = tool (); + #if DEBUG_STATUS_BAR && 0 + qCDebug(kpLogMainWindow) << "\ttool=" << t; + #endif + if (t) + { + setStatusBarShapePoints (t->userShapeStartPoint (), + t->userShapeEndPoint ()); + setStatusBarShapeSize (t->userShapeSize ()); + } + else + { + setStatusBarShapePoints (); + setStatusBarShapeSize (); + } + } +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::recalculateStatusBar () +{ +#if DEBUG_STATUS_BAR && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::recalculateStatusBar() ok=" + << d->statusBarCreated; +#endif + + if (!d->statusBarCreated) { + return; + } + + recalculateStatusBarMessage (); + recalculateStatusBarShape (); + + if (d->document) + { + setStatusBarDocSize (QSize (d->document->width (), d->document->height ())); + setStatusBarDocDepth (d->document->image ().depth ()); + } + else + { + setStatusBarDocSize (); + setStatusBarDocDepth (); + } + + if (d->mainView) + { + setStatusBarZoom (d->mainView->zoomLevelX ()); + } + else + { + setStatusBarZoom (); + } +} + +//--------------------------------------------------------------------- diff --git a/mainWindow/kpMainWindow_Text.cpp b/mainWindow/kpMainWindow_Text.cpp new file mode 100644 index 0000000..bcb98f3 --- /dev/null +++ b/mainWindow/kpMainWindow_Text.cpp @@ -0,0 +1,435 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "mainWindow/kpMainWindow.h" +#include "kpMainWindowPrivate.h" + +#include +#include +#include +#include "kpLogCategories.h" +#include +#include +#include +#include +#include + +#include "widgets/toolbars/kpColorToolBar.h" +#include "kpDefs.h" +#include "layers/selections/text/kpTextStyle.h" +#include "tools/selection/text/kpToolText.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpZoomedView.h" + + +// private +void kpMainWindow::setupTextToolBarActions () +{ + KActionCollection *ac = actionCollection (); + + d->actionTextFontFamily = ac->add (QStringLiteral("text_font_family")); + d->actionTextFontFamily->setText (i18n ("Font Family")); + connect (d->actionTextFontFamily, + &KSelectAction::textTriggered, + this, &kpMainWindow::slotTextFontFamilyChanged); + + d->actionTextFontSize = ac->add (QStringLiteral("text_font_size")); + d->actionTextFontSize->setText (i18n ("Font Size")); + connect (d->actionTextFontSize, + &KSelectAction::indexTriggered, + this, &kpMainWindow::slotTextFontSizeChanged); + + d->actionTextBold = ac->add (QStringLiteral("text_bold")); + d->actionTextBold->setIcon(QIcon::fromTheme(QStringLiteral("format-text-bold"))); + d->actionTextBold->setText (i18n ("Bold")); + connect (d->actionTextBold, &KToggleAction::triggered, + this, &kpMainWindow::slotTextBoldChanged); + + d->actionTextItalic = ac->add (QStringLiteral("text_italic")); + d->actionTextItalic->setIcon (QIcon::fromTheme(QStringLiteral("format-text-italic"))); + d->actionTextItalic->setText (i18n ("Italic")); + connect (d->actionTextItalic, &KToggleAction::triggered, + this, &kpMainWindow::slotTextItalicChanged); + + d->actionTextUnderline = ac->add (QStringLiteral("text_underline")); + d->actionTextUnderline->setIcon (QIcon::fromTheme(QStringLiteral("format-text-underline"))); + d->actionTextUnderline->setText (i18n ("Underline")); + connect (d->actionTextUnderline, &KToggleAction::triggered, + this, &kpMainWindow::slotTextUnderlineChanged); + + d->actionTextStrikeThru = ac->add (QStringLiteral("text_strike_thru")); + d->actionTextStrikeThru->setIcon(QIcon::fromTheme(QStringLiteral("format-text-strikethrough"))); + d->actionTextStrikeThru->setText (i18n ("Strike Through")); + connect (d->actionTextStrikeThru, &KToggleAction::triggered, + this, &kpMainWindow::slotTextStrikeThruChanged); + + + readAndApplyTextSettings (); + + + enableTextToolBarActions (false); +} + +// private +void kpMainWindow::readAndApplyTextSettings () +{ + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupText); + + const QString font (cfg.readEntry (kpSettingFontFamily, QStringLiteral ("Times"))); + d->actionTextFontFamily->setFont (font); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "asked setFont to set to=" << font + << "- got back=" << d->actionTextFontFamily->font (); +#endif + d->actionTextFontSize->setFontSize (cfg.readEntry (kpSettingFontSize, 14)); + d->actionTextBold->setChecked (cfg.readEntry (kpSettingBold, false)); + d->actionTextItalic->setChecked (cfg.readEntry (kpSettingItalic, false)); + d->actionTextUnderline->setChecked (cfg.readEntry (kpSettingUnderline, false)); + d->actionTextStrikeThru->setChecked (cfg.readEntry (kpSettingStrikeThru, false)); + + d->textOldFontFamily = d->actionTextFontFamily->font (); + d->textOldFontSize = d->actionTextFontSize->fontSize (); +} + + +// public +void kpMainWindow::enableTextToolBarActions (bool enable) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::enableTextToolBarActions(" << enable << ")"; +#endif + + d->actionTextFontFamily->setEnabled (enable); + d->actionTextFontSize->setEnabled (enable); + d->actionTextBold->setEnabled (enable); + d->actionTextItalic->setEnabled (enable); + d->actionTextUnderline->setEnabled (enable); + d->actionTextStrikeThru->setEnabled (enable); + + if (textToolBar ()) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\thave toolbar - setShown"; + #endif + // COMPAT: KDE4 does not place the Text Tool Bar in a new row, underneath + // the Main Tool Bar, if there isn't enough room. This makes + // accessing the Text Tool Bar's buttons difficult. + textToolBar ()->setVisible (enable); + } +} + + +// private slot +void kpMainWindow::slotTextFontFamilyChanged () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotTextFontFamilyChanged() alive=" + << d->isFullyConstructed + << "fontFamily=" + << d->actionTextFontFamily->font () + << "action.currentItem=" + << d->actionTextFontFamily->currentItem (); +#endif + + if (!d->isFullyConstructed) { + return; + } + + if (d->toolText && d->toolText->hasBegun ()) + { + toolEndShape (); + d->toolText->slotFontFamilyChanged (d->actionTextFontFamily->font (), + d->textOldFontFamily); + } + + // Since editable KSelectAction's steal focus from view, switch back to mainView + // TODO: back to the last view + if (d->mainView) { + d->mainView->setFocus (); + } + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupText); + cfg.writeEntry (kpSettingFontFamily, d->actionTextFontFamily->font ()); + cfg.sync (); + + d->textOldFontFamily = d->actionTextFontFamily->font (); +} + +// private slot +void kpMainWindow::slotTextFontSizeChanged () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotTextFontSizeChanged() alive=" + << d->isFullyConstructed + << " fontSize=" + << d->actionTextFontSize->fontSize (); +#endif + + if (!d->isFullyConstructed) { + return; + } + + if (d->toolText && d->toolText->hasBegun ()) + { + toolEndShape (); + d->toolText->slotFontSizeChanged (d->actionTextFontSize->fontSize (), + d->textOldFontSize); + } + + // Since editable KSelectAction's steal focus from view, switch back to mainView + // TODO: back to the last view + if (d->mainView) { + d->mainView->setFocus (); + } + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupText); + cfg.writeEntry (kpSettingFontSize, d->actionTextFontSize->fontSize ()); + cfg.sync (); + + d->textOldFontSize = d->actionTextFontSize->fontSize (); +} + +// private slot +void kpMainWindow::slotTextBoldChanged () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotTextFontBoldChanged() alive=" + << d->isFullyConstructed + << " bold=" + << d->actionTextBold->isChecked (); +#endif + + if (!d->isFullyConstructed) { + return; + } + + if (d->toolText && d->toolText->hasBegun ()) + { + toolEndShape (); + d->toolText->slotBoldChanged (d->actionTextBold->isChecked ()); + } + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupText); + cfg.writeEntry (kpSettingBold, d->actionTextBold->isChecked ()); + cfg.sync (); +} + +// private slot +void kpMainWindow::slotTextItalicChanged () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotTextFontItalicChanged() alive=" + << d->isFullyConstructed + << " bold=" + << d->actionTextItalic->isChecked (); +#endif + + if (!d->isFullyConstructed) { + return; + } + + if (d->toolText && d->toolText->hasBegun ()) + { + toolEndShape (); + d->toolText->slotItalicChanged (d->actionTextItalic->isChecked ()); + } + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupText); + cfg.writeEntry (kpSettingItalic, d->actionTextItalic->isChecked ()); + cfg.sync (); +} + +// private slot +void kpMainWindow::slotTextUnderlineChanged () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotTextFontUnderlineChanged() alive=" + << d->isFullyConstructed + << " underline=" + << d->actionTextUnderline->isChecked (); +#endif + + if (!d->isFullyConstructed) { + return; + } + + if (d->toolText && d->toolText->hasBegun ()) + { + toolEndShape (); + d->toolText->slotUnderlineChanged (d->actionTextUnderline->isChecked ()); + } + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupText); + cfg.writeEntry (kpSettingUnderline, d->actionTextUnderline->isChecked ()); + cfg.sync (); +} + +// private slot +void kpMainWindow::slotTextStrikeThruChanged () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotTextStrikeThruChanged() alive=" + << d->isFullyConstructed + << " strikeThru=" + << d->actionTextStrikeThru->isChecked (); +#endif + + if (!d->isFullyConstructed) { + return; + } + + if (d->toolText && d->toolText->hasBegun ()) + { + toolEndShape (); + d->toolText->slotStrikeThruChanged (d->actionTextStrikeThru->isChecked ()); + } + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupText); + cfg.writeEntry (kpSettingStrikeThru, d->actionTextStrikeThru->isChecked ()); + cfg.sync (); +} + + +// public +KToolBar *kpMainWindow::textToolBar () +{ + return toolBar (QStringLiteral("textToolBar")); +} + +bool kpMainWindow::isTextStyleBackgroundOpaque () const +{ + if (d->toolToolBar) + { + kpToolWidgetOpaqueOrTransparent *oot = + d->toolToolBar->toolWidgetOpaqueOrTransparent (); + + if (oot) + { + return oot->isOpaque (); + } + } + + return true; +} + +// public +kpTextStyle kpMainWindow::textStyle () const +{ + return kpTextStyle (d->actionTextFontFamily->font (), + d->actionTextFontSize->fontSize (), + d->actionTextBold->isChecked (), + d->actionTextItalic->isChecked (), + d->actionTextUnderline->isChecked (), + d->actionTextStrikeThru->isChecked (), + d->colorToolBar ? d->colorToolBar->foregroundColor () : kpColor::Invalid, + d->colorToolBar ? d->colorToolBar->backgroundColor () : kpColor::Invalid, + isTextStyleBackgroundOpaque ()); +} + +// public +void kpMainWindow::setTextStyle (const kpTextStyle &textStyle_) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::setTextStyle()"; +#endif + + d->settingTextStyle++; + + + if (textStyle_.fontFamily () != d->actionTextFontFamily->font ()) + { + d->actionTextFontFamily->setFont (textStyle_.fontFamily ()); + slotTextFontFamilyChanged (); + } + + if (textStyle_.fontSize () != d->actionTextFontSize->fontSize ()) + { + d->actionTextFontSize->setFontSize (textStyle_.fontSize ()); + slotTextFontSizeChanged (); + } + + if (textStyle_.isBold () != d->actionTextBold->isChecked ()) + { + d->actionTextBold->setChecked (textStyle_.isBold ()); + slotTextBoldChanged (); + } + + if (textStyle_.isItalic () != d->actionTextItalic->isChecked ()) + { + d->actionTextItalic->setChecked (textStyle_.isItalic ()); + slotTextItalicChanged (); + } + + if (textStyle_.isUnderline () != d->actionTextUnderline->isChecked ()) + { + d->actionTextUnderline->setChecked (textStyle_.isUnderline ()); + slotTextUnderlineChanged (); + } + + if (textStyle_.isStrikeThru () != d->actionTextStrikeThru->isChecked ()) + { + d->actionTextStrikeThru->setChecked (textStyle_.isStrikeThru ()); + slotTextStrikeThruChanged (); + } + + + if (textStyle_.foregroundColor () != d->colorToolBar->foregroundColor ()) + { + d->colorToolBar->setForegroundColor (textStyle_.foregroundColor ()); + } + + if (textStyle_.backgroundColor () != d->colorToolBar->backgroundColor ()) + { + d->colorToolBar->setBackgroundColor (textStyle_.backgroundColor ()); + } + + + if (textStyle_.isBackgroundOpaque () != isTextStyleBackgroundOpaque ()) + { + if (d->toolToolBar) + { + kpToolWidgetOpaqueOrTransparent *oot = + d->toolToolBar->toolWidgetOpaqueOrTransparent (); + + if (oot) + { + oot->setOpaque (textStyle_.isBackgroundOpaque ()); + } + } + } + + + d->settingTextStyle--; +} + +// public +int kpMainWindow::settingTextStyle () const +{ + return d->settingTextStyle; +} + diff --git a/mainWindow/kpMainWindow_Tools.cpp b/mainWindow/kpMainWindow_Tools.cpp new file mode 100644 index 0000000..c877d22 --- /dev/null +++ b/mainWindow/kpMainWindow_Tools.cpp @@ -0,0 +1,824 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "mainWindow/kpMainWindow.h" +#include "kpMainWindowPrivate.h" + +#include +#include + +#include +#include +#include +#include "kpLogCategories.h" +#include + +#include "widgets/toolbars/kpColorToolBar.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "layers/selections/image/kpImageSelectionTransparency.h" +#include "tools/kpTool.h" +#include "tools/kpToolAction.h" +#include "tools/flow/kpToolBrush.h" +#include "tools/flow/kpToolColorEraser.h" +#include "tools/kpToolColorPicker.h" +#include "tools/polygonal/kpToolCurve.h" +#include "tools/selection/image/kpToolEllipticalSelection.h" +#include "tools/rectangular/kpToolEllipse.h" +#include "tools/flow/kpToolEraser.h" +#include "tools/kpToolFloodFill.h" +#include "tools/selection/image/kpToolFreeFormSelection.h" +#include "tools/polygonal/kpToolLine.h" +#include "tools/flow/kpToolPen.h" +#include "tools/polygonal/kpToolPolygon.h" +#include "tools/polygonal/kpToolPolyline.h" +#include "tools/rectangular/kpToolRectangle.h" +#include "tools/selection/image/kpToolRectSelection.h" +#include "tools/rectangular/kpToolRoundedRectangle.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "tools/flow/kpToolSpraycan.h" +#include "tools/selection/text/kpToolText.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "tools/kpToolZoom.h" +#include "commands/imagelib/transforms/kpTransformResizeScaleCommand.h" +#include "kpViewScrollableContainer.h" +#include "views/kpZoomedView.h" + +//--------------------------------------------------------------------- + +// private +kpToolSelectionEnvironment *kpMainWindow::toolSelectionEnvironment () +{ + if (!d->toolSelectionEnvironment) { + d->toolSelectionEnvironment = new kpToolSelectionEnvironment (this); + } + + return d->toolSelectionEnvironment; +} + +//--------------------------------------------------------------------- + +// private +kpToolEnvironment *kpMainWindow::toolEnvironment () +{ + // It's fine to return a more complex environment than required. + return toolSelectionEnvironment (); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setupToolActions () +{ + kpToolSelectionEnvironment *toolSelEnv = toolSelectionEnvironment (); + kpToolEnvironment *toolEnv = toolEnvironment (); + + d->tools.append (d->toolFreeFormSelection = new kpToolFreeFormSelection (toolSelEnv, this)); + d->tools.append (d->toolRectSelection = new kpToolRectSelection (toolSelEnv, this)); + + d->tools.append (d->toolEllipticalSelection = new kpToolEllipticalSelection (toolSelEnv, this)); + d->tools.append (d->toolText = new kpToolText (toolSelEnv, this)); + + d->tools.append (d->toolLine = new kpToolLine (toolEnv, this)); + d->tools.append (d->toolPen = new kpToolPen (toolEnv, this)); + + d->tools.append (d->toolEraser = new kpToolEraser (toolEnv, this)); + d->tools.append (d->toolBrush = new kpToolBrush (toolEnv, this)); + + d->tools.append (d->toolFloodFill = new kpToolFloodFill (toolEnv, this)); + d->tools.append (d->toolColorPicker = new kpToolColorPicker (toolEnv, this)); + + d->tools.append (d->toolColorEraser = new kpToolColorEraser (toolEnv, this)); + d->tools.append (d->toolSpraycan = new kpToolSpraycan (toolEnv, this)); + + d->tools.append (d->toolRoundedRectangle = new kpToolRoundedRectangle (toolEnv, this)); + d->tools.append (d->toolRectangle = new kpToolRectangle (toolEnv, this)); + + d->tools.append (d->toolPolygon = new kpToolPolygon (toolEnv, this)); + d->tools.append (d->toolEllipse = new kpToolEllipse (toolEnv, this)); + + d->tools.append (d->toolPolyline = new kpToolPolyline (toolEnv, this)); + d->tools.append (d->toolCurve = new kpToolCurve (toolEnv, this)); + + d->tools.append (d->toolZoom = new kpToolZoom (toolEnv, this)); + + + KActionCollection *ac = actionCollection (); + + d->actionPrevToolOptionGroup1 = ac->addAction (QStringLiteral("prev_tool_option_group_1")); + d->actionPrevToolOptionGroup1->setText (i18n ("Previous Tool Option (Group #1)")); + ac->setDefaultShortcuts (d->actionPrevToolOptionGroup1, kpTool::shortcutForKey (Qt::Key_1)); + connect (d->actionPrevToolOptionGroup1, &QAction::triggered, + this, &kpMainWindow::slotActionPrevToolOptionGroup1); + + d->actionNextToolOptionGroup1 = ac->addAction (QStringLiteral("next_tool_option_group_1")); + d->actionNextToolOptionGroup1->setText (i18n ("Next Tool Option (Group #1)")); + ac->setDefaultShortcuts (d->actionNextToolOptionGroup1, kpTool::shortcutForKey (Qt::Key_2)); + connect (d->actionNextToolOptionGroup1, &QAction::triggered, + this, &kpMainWindow::slotActionNextToolOptionGroup1); + + d->actionPrevToolOptionGroup2 = ac->addAction (QStringLiteral("prev_tool_option_group_2")); + d->actionPrevToolOptionGroup2->setText (i18n ("Previous Tool Option (Group #2)")); + ac->setDefaultShortcuts (d->actionPrevToolOptionGroup2, kpTool::shortcutForKey (Qt::Key_3)); + connect (d->actionPrevToolOptionGroup2, &QAction::triggered, + this, &kpMainWindow::slotActionPrevToolOptionGroup2); + + d->actionNextToolOptionGroup2 = ac->addAction (QStringLiteral("next_tool_option_group_2")); + d->actionNextToolOptionGroup2->setText (i18n ("Next Tool Option (Group #2)")); + ac->setDefaultShortcuts (d->actionNextToolOptionGroup2, kpTool::shortcutForKey (Qt::Key_4)); + connect (d->actionNextToolOptionGroup2, &QAction::triggered, + this, &kpMainWindow::slotActionNextToolOptionGroup2); + + + // + // Implemented in this file (kpMainWindow_Tools.cpp), not + // kpImageWindow_Image.cpp since they're really setting tool options. + // + + d->actionDrawOpaque = ac->add (QStringLiteral("image_draw_opaque")); + d->actionDrawOpaque->setText (i18n ("&Draw Opaque")); + connect (d->actionDrawOpaque, &QAction::triggered, + this, &kpMainWindow::slotActionDrawOpaqueToggled); + + d->actionDrawColorSimilarity = ac->addAction (QStringLiteral("image_draw_color_similarity")); + d->actionDrawColorSimilarity->setText (i18n ("Draw With Color Similarity...")); + connect (d->actionDrawColorSimilarity, &QAction::triggered, + this, &kpMainWindow::slotActionDrawColorSimilarity); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::createToolBox () +{ + d->toolToolBar = new kpToolToolBar(QStringLiteral("Tool Box"), 2/*columns/rows*/, this); + d->toolToolBar->setWindowTitle(i18n("Tool Box")); + + connect (d->toolToolBar, &kpToolToolBar::sigToolSelected, + this, &kpMainWindow::slotToolSelected); + + connect (d->toolToolBar, &kpToolToolBar::toolWidgetOptionSelected, + this, &kpMainWindow::updateToolOptionPrevNextActionsEnabled); + + connect (d->toolToolBar->toolWidgetOpaqueOrTransparent(), + &kpToolWidgetOpaqueOrTransparent::isOpaqueChanged, + this, &kpMainWindow::updateActionDrawOpaqueChecked); + + updateActionDrawOpaqueChecked (); + + for (auto *tool : d->tools) { + d->toolToolBar->registerTool(tool); + } + + // (from config file) + readLastTool (); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableToolsDocumentActions (bool enable) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::enableToolsDocumentsAction(" << enable << ")"; +#endif + + d->toolActionsEnabled = enable; + + if (enable && !d->toolToolBar->isEnabled ()) + { + kpTool *previousTool = d->toolToolBar->previousTool (); + + // select tool for enabled Tool Box + + if (previousTool) { + d->toolToolBar->selectPreviousTool (); + } + else + { + if (d->lastToolNumber >= 0 && d->lastToolNumber < d->tools.count ()) { + d->toolToolBar->selectTool (d->tools.at (d->lastToolNumber)); + } + else { + d->toolToolBar->selectTool (d->toolPen); + } + } + } + else if (!enable && d->toolToolBar->isEnabled ()) + { + // don't have a disabled Tool Box with a checked Tool + d->toolToolBar->selectTool (nullptr); + } + + + d->toolToolBar->setEnabled (enable); + + + for (auto *tool : d->tools) + { + kpToolAction *action = tool->action(); + if (!enable && action->isChecked()) { + action->setChecked(false); + } + + action->setEnabled(enable); + } + + + updateToolOptionPrevNextActionsEnabled (); + updateActionDrawOpaqueEnabled (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::updateToolOptionPrevNextActionsEnabled () +{ + const bool enable = d->toolActionsEnabled; + + + d->actionPrevToolOptionGroup1->setEnabled (enable && + d->toolToolBar->shownToolWidget (0) && + d->toolToolBar->shownToolWidget (0)->hasPreviousOption ()); + d->actionNextToolOptionGroup1->setEnabled (enable && + d->toolToolBar->shownToolWidget (0) && + d->toolToolBar->shownToolWidget (0)->hasNextOption ()); + + d->actionPrevToolOptionGroup2->setEnabled (enable && + d->toolToolBar->shownToolWidget (1) && + d->toolToolBar->shownToolWidget (1)->hasPreviousOption ()); + d->actionNextToolOptionGroup2->setEnabled (enable && + d->toolToolBar->shownToolWidget (1) && + d->toolToolBar->shownToolWidget (1)->hasNextOption ()); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::updateActionDrawOpaqueChecked () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::updateActionDrawOpaqueChecked()"; +#endif + + const bool drawOpaque = + (d->toolToolBar->toolWidgetOpaqueOrTransparent ()->selectedRow () == 0); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tdrawOpaque=" << drawOpaque; +#endif + + d->actionDrawOpaque->setChecked (drawOpaque); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::updateActionDrawOpaqueEnabled () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::updateActionDrawOpaqueEnabled()"; +#endif + + const bool enable = d->toolActionsEnabled; + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tenable=" << enable + << " tool=" << (tool () ? tool ()->objectName () : nullptr) + << " (is selection=" << toolIsASelectionTool () << ")"; +#endif + + d->actionDrawOpaque->setEnabled (enable && toolIsASelectionTool ()); +} + +//--------------------------------------------------------------------- + +// public +QActionGroup *kpMainWindow::toolsActionGroup () +{ + if (!d->toolsActionGroup) { + d->toolsActionGroup = new QActionGroup (this); + } + + return d->toolsActionGroup; +} + +//--------------------------------------------------------------------- + +// public +kpTool *kpMainWindow::tool () const +{ + return d->toolToolBar ? d->toolToolBar->tool () : nullptr; +} + +//--------------------------------------------------------------------- + +// public +bool kpMainWindow::toolHasBegunShape () const +{ + kpTool *currentTool = tool (); + return (currentTool && currentTool->hasBegunShape ()); +} + +//--------------------------------------------------------------------- + +// public +bool kpMainWindow::toolIsASelectionTool (bool includingTextTool) const +{ + kpTool *currentTool = tool (); + + return ((currentTool == d->toolFreeFormSelection) || + (currentTool == d->toolRectSelection) || + (currentTool == d->toolEllipticalSelection) || + (currentTool == d->toolText && includingTextTool)); +} + +//--------------------------------------------------------------------- + +// public +bool kpMainWindow::toolIsTextTool () const +{ + return (tool () == d->toolText); +} + +//--------------------------------------------------------------------- + + +// private +void kpMainWindow::toolEndShape () +{ + if (toolHasBegunShape ()) { + tool ()->endShapeInternal (); + } +} + +//--------------------------------------------------------------------- + +// public +kpImageSelectionTransparency kpMainWindow::imageSelectionTransparency () const +{ + kpToolWidgetOpaqueOrTransparent *oot = d->toolToolBar->toolWidgetOpaqueOrTransparent (); + Q_ASSERT (oot); + + return kpImageSelectionTransparency (oot->isOpaque (), backgroundColor (), d->colorToolBar->colorSimilarity ()); +} + +//--------------------------------------------------------------------- + +// public +void kpMainWindow::setImageSelectionTransparency (const kpImageSelectionTransparency &transparency, bool forceColorChange) +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::setImageSelectionTransparency() isOpaque=" << transparency.isOpaque () + << " color=" << (transparency.transparentColor ().isValid () ? (int *) transparency.transparentColor ().toQRgb () : nullptr) + << " forceColorChange=" << forceColorChange; +#endif + + kpToolWidgetOpaqueOrTransparent *oot = d->toolToolBar->toolWidgetOpaqueOrTransparent (); + Q_ASSERT (oot); + + d->settingImageSelectionTransparency++; + + oot->setOpaque (transparency.isOpaque ()); + if (transparency.isTransparent () || forceColorChange) + { + d->colorToolBar->setColor (1, transparency.transparentColor ()); + d->colorToolBar->setColorSimilarity (transparency.colorSimilarity ()); + } + + d->settingImageSelectionTransparency--; +} + +//--------------------------------------------------------------------- + +// public +int kpMainWindow::settingImageSelectionTransparency () const +{ + return d->settingImageSelectionTransparency; +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotToolSelected (kpTool *tool) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotToolSelected (" << tool << ")"; +#endif + + kpTool *previousTool = d->toolToolBar ? d->toolToolBar->previousTool () : nullptr; + + if (previousTool) + { + disconnect (previousTool, &kpTool::movedAndAboutToDraw, + this, &kpMainWindow::slotDragScroll); + + disconnect (previousTool, &kpTool::endedDraw, + this, &kpMainWindow::slotEndDragScroll); + + disconnect (previousTool, &kpTool::cancelledShape, + this, &kpMainWindow::slotEndDragScroll); + + disconnect (previousTool, &kpTool::userMessageChanged, + this, &kpMainWindow::recalculateStatusBarMessage); + + disconnect (previousTool, &kpTool::userShapePointsChanged, + this, &kpMainWindow::recalculateStatusBarShape); + + disconnect (previousTool, &kpTool::userShapeSizeChanged, + this, &kpMainWindow::recalculateStatusBarShape); + + + disconnect (d->colorToolBar, &kpColorToolBar::colorsSwapped, + previousTool, &kpTool::slotColorsSwappedInternal); + + disconnect (d->colorToolBar, &kpColorToolBar::foregroundColorChanged, + previousTool, &kpTool::slotForegroundColorChangedInternal); + + disconnect (d->colorToolBar, &kpColorToolBar::backgroundColorChanged, + previousTool, &kpTool::slotBackgroundColorChangedInternal); + + + disconnect (d->colorToolBar, &kpColorToolBar::colorSimilarityChanged, + previousTool, &kpTool::slotColorSimilarityChangedInternal); + } + + if (tool) + { + connect (tool, &kpTool::movedAndAboutToDraw, + this, &kpMainWindow::slotDragScroll); + + connect (tool, &kpTool::endedDraw, + this, &kpMainWindow::slotEndDragScroll); + + connect (tool, &kpTool::cancelledShape, + this, &kpMainWindow::slotEndDragScroll); + + connect (tool, &kpTool::userMessageChanged, + this, &kpMainWindow::recalculateStatusBarMessage); + + connect (tool, &kpTool::userShapePointsChanged, + this, &kpMainWindow::recalculateStatusBarShape); + + connect (tool, &kpTool::userShapeSizeChanged, + this, &kpMainWindow::recalculateStatusBarShape); + + recalculateStatusBar (); + + + connect (d->colorToolBar, &kpColorToolBar::colorsSwapped, + tool, &kpTool::slotColorsSwappedInternal); + + connect (d->colorToolBar, &kpColorToolBar::foregroundColorChanged, + tool, &kpTool::slotForegroundColorChangedInternal); + + connect (d->colorToolBar, &kpColorToolBar::backgroundColorChanged, + tool, &kpTool::slotBackgroundColorChangedInternal); + + connect (d->colorToolBar, &kpColorToolBar::colorSimilarityChanged, + tool, &kpTool::slotColorSimilarityChangedInternal); + + + saveLastTool (); + } + + updateToolOptionPrevNextActionsEnabled (); + updateActionDrawOpaqueEnabled (); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::readLastTool () +{ + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupTools); + + d->lastToolNumber = cfg.readEntry (kpSettingLastTool, -1); +} + +//--------------------------------------------------------------------- + +// private +int kpMainWindow::toolNumber() const +{ + for (int i = 0; i < d->tools.count(); i++) + if ( d->tools[i] == tool() ) + return i; + + return -1; +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::saveLastTool () +{ + int number = toolNumber (); + if ( (number < 0) || (number >= d->tools.count()) ) + return; + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupTools); + + cfg.writeEntry (kpSettingLastTool, number); + cfg.sync (); +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::maybeDragScrollingMainView () const +{ + return (tool () && d->mainView && + tool ()->viewUnderStartPoint () == d->mainView); +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::slotDragScroll (const QPoint &docPoint, + const QPoint &docLastPoint, + int zoomLevel, + bool *scrolled) +{ + Q_UNUSED(docPoint) + Q_UNUSED(docLastPoint) + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotDragScroll() maybeDragScrolling=" + << maybeDragScrollingMainView (); +#endif + + if (maybeDragScrollingMainView ()) + { + return d->scrollView->beginDragScroll(zoomLevel, scrolled); + } + + return false; +} + +//--------------------------------------------------------------------- + +// private slot +bool kpMainWindow::slotEndDragScroll () +{ + // (harmless if haven't started drag scroll) + return d->scrollView->endDragScroll (); +} + +//--------------------------------------------------------------------- + + +// private slot +void kpMainWindow::slotBeganDocResize () +{ + toolEndShape (); + + recalculateStatusBarShape (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotContinuedDocResize (const QSize &) +{ + recalculateStatusBarShape (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotCancelledDocResize () +{ + recalculateStatusBar (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotEndedDocResize (const QSize &size) +{ +#define DOC_RESIZE_COMPLETED() \ +{ \ + d->docResizeToBeCompleted = false; \ + recalculateStatusBar (); \ +} + + // Prevent statusbar updates + d->docResizeToBeCompleted = true; + + d->docResizeWidth = (size.width () > 0 ? size.width () : 1); + d->docResizeHeight = (size.height () > 0 ? size.height () : 1); + + if (d->docResizeWidth == d->document->width () && + d->docResizeHeight == d->document->height ()) + { + DOC_RESIZE_COMPLETED (); + return; + } + + + // Blank status to avoid confusion if dialog comes up + setStatusBarMessage (); + setStatusBarShapePoints (); + setStatusBarShapeSize (); + + + if (kpTool::warnIfBigImageSize (d->document->width (), + d->document->height (), + d->docResizeWidth, d->docResizeHeight, + i18n ("

Resizing the image to" + " %1x%2 may take a substantial amount of memory." + " This can reduce system" + " responsiveness and cause other application resource" + " problems.

" + + "

Are you sure you want to resize the" + " image?

", + d->docResizeWidth, + d->docResizeHeight), + i18nc ("@title:window", "Resize Image?"), + i18n ("R&esize Image"), + this)) + { + d->commandHistory->addCommand ( + new kpTransformResizeScaleCommand ( + false/*doc, not sel*/, + d->docResizeWidth, d->docResizeHeight, + kpTransformResizeScaleCommand::Resize, + commandEnvironment ())); + + saveDefaultDocSize (QSize (d->docResizeWidth, d->docResizeHeight)); + } + + + DOC_RESIZE_COMPLETED (); + +#undef DOC_RESIZE_COMPLETED +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotDocResizeMessageChanged (const QString &string) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotDocResizeMessageChanged(" << string + << ") docResizeToBeCompleted=" << d->docResizeToBeCompleted; +#else + (void) string; +#endif + + if (d->docResizeToBeCompleted) { + return; + } + + recalculateStatusBarMessage (); +} + +//--------------------------------------------------------------------- + + +// private slot +void kpMainWindow::slotActionPrevToolOptionGroup1 () +{ + if (!d->toolToolBar->shownToolWidget (0)) { + return; + } + + // We don't call toolEndShape() here because we want #23 in the file BUGS + // to later work. + + d->toolToolBar->shownToolWidget (0)->selectPreviousOption (); + updateToolOptionPrevNextActionsEnabled (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotActionNextToolOptionGroup1 () +{ + if (!d->toolToolBar->shownToolWidget (0)) { + return; + } + + // We don't call toolEndShape() here because we want #23 in the file BUGS + // to later work. + + d->toolToolBar->shownToolWidget (0)->selectNextOption (); + updateToolOptionPrevNextActionsEnabled (); +} + +//--------------------------------------------------------------------- + + +// private slot +void kpMainWindow::slotActionPrevToolOptionGroup2 () +{ + if (!d->toolToolBar->shownToolWidget (1)) { + return; + } + + // We don't call toolEndShape() here because we want #23 in the file BUGS + // to later work. + + d->toolToolBar->shownToolWidget (1)->selectPreviousOption (); + updateToolOptionPrevNextActionsEnabled (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotActionNextToolOptionGroup2 () +{ + if (!d->toolToolBar->shownToolWidget (1)) { + return; + } + + // We don't call toolEndShape() here because we want #23 in the file BUGS + // to later work. + + d->toolToolBar->shownToolWidget (1)->selectNextOption (); + updateToolOptionPrevNextActionsEnabled (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotActionDrawOpaqueToggled () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotActionDrawOpaqueToggled()"; +#endif + toolEndShape (); + + // TODO: How does this differ to setImageSelectionTransparency()? + + // ("kpToolWidgetBase::" is to access one overload shadowed by the override + // of the other overload) + d->toolToolBar->toolWidgetOpaqueOrTransparent ()->kpToolWidgetBase::setSelected ( + (d->actionDrawOpaque->isChecked () ? + 0/*row 0 = opaque*/ : + 1/*row 1 = transparent*/), + 0/*column*/); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotActionDrawColorSimilarity () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotActionDrawColorSimilarity()"; +#endif + toolEndShape (); + + d->colorToolBar->openColorSimilarityDialog (); +} + +//--------------------------------------------------------------------- + + +// public slots + +#define SLOT_TOOL(toolName) \ +void kpMainWindow::slotTool##toolName () \ +{ \ + if (!d->toolToolBar) \ + return; \ + \ + if (tool () == d->tool##toolName) \ + return; \ + \ + d->toolToolBar->selectTool (d->tool##toolName); \ +} + + +SLOT_TOOL (RectSelection) +SLOT_TOOL (EllipticalSelection) +SLOT_TOOL (FreeFormSelection) +SLOT_TOOL (Text) diff --git a/mainWindow/kpMainWindow_View.cpp b/mainWindow/kpMainWindow_View.cpp new file mode 100644 index 0000000..9341e8e --- /dev/null +++ b/mainWindow/kpMainWindow_View.cpp @@ -0,0 +1,163 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "mainWindow/kpMainWindow.h" +#include "kpMainWindowPrivate.h" +#include "kpLogCategories.h" + +#include +#include +#include +#include +#include + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "kpThumbnail.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "views/kpUnzoomedThumbnailView.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" +#include "generic/kpWidgetMapper.h" +#include "views/kpZoomedView.h" +#include "views/kpZoomedThumbnailView.h" + + +// private +void kpMainWindow::setupViewMenuActions () +{ + KActionCollection *ac = actionCollection (); + + /*d->actionFullScreen = KStandardAction::fullScreen (0, 0, ac); + d->actionFullScreen->setEnabled (false);*/ + + + setupViewMenuZoomActions (); + + + d->actionShowGrid = ac->add (QStringLiteral("view_show_grid")); + d->actionShowGrid->setText (i18n ("Show &Grid")); + ac->setDefaultShortcut (d->actionShowGrid, Qt::CTRL | Qt::Key_G); + //d->actionShowGrid->setCheckedState (KGuiItem(i18n ("Hide &Grid"))); + connect (d->actionShowGrid, &KToggleAction::triggered, + this, &kpMainWindow::slotShowGridToggled); + + + setupViewMenuThumbnailActions (); + + + enableViewMenuDocumentActions (false); +} + +//--------------------------------------------------------------------- + +// private +bool kpMainWindow::viewMenuDocumentActionsEnabled () const +{ + return d->viewMenuDocumentActionsEnabled; +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableViewMenuDocumentActions (bool enable) +{ + d->viewMenuDocumentActionsEnabled = enable; + + + enableViewMenuZoomDocumentActions (enable); + + actionShowGridUpdate (); + + enableViewMenuThumbnailDocumentActions (enable); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::actionShowGridUpdate () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::actionShowGridUpdate()"; +#endif + const bool enable = (viewMenuDocumentActionsEnabled () && + d->mainView && d->mainView->canShowGrid ()); + + d->actionShowGrid->setEnabled (enable); + d->actionShowGrid->setChecked (enable && d->configShowGrid); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotShowGridToggled () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotActionShowGridToggled()"; +#endif + + updateMainViewGrid (); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + + cfg.writeEntry (kpSettingShowGrid, d->configShowGrid = d->actionShowGrid->isChecked ()); + cfg.sync (); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::updateMainViewGrid () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::updateMainViewGrid ()"; +#endif + + if (d->mainView) { + d->mainView->showGrid (d->actionShowGrid->isChecked ()); + } +} + +//--------------------------------------------------------------------- + +// private +QRect kpMainWindow::mapToGlobal (const QRect &rect) const +{ + return kpWidgetMapper::toGlobal (this, rect); +} + +//--------------------------------------------------------------------- + +// private +QRect kpMainWindow::mapFromGlobal (const QRect &rect) const +{ + return kpWidgetMapper::fromGlobal (this, rect); +} + +//--------------------------------------------------------------------- diff --git a/mainWindow/kpMainWindow_View_Thumbnail.cpp b/mainWindow/kpMainWindow_View_Thumbnail.cpp new file mode 100644 index 0000000..5c4e19f --- /dev/null +++ b/mainWindow/kpMainWindow_View_Thumbnail.cpp @@ -0,0 +1,479 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "mainWindow/kpMainWindow.h" +#include "kpMainWindowPrivate.h" +#include "kpLogCategories.h" + +#include + +#include +#include +#include +#include +#include + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "kpThumbnail.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "views/kpUnzoomedThumbnailView.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" +#include "generic/kpWidgetMapper.h" +#include "views/kpZoomedView.h" +#include "views/kpZoomedThumbnailView.h" + + +// private +void kpMainWindow::setupViewMenuThumbnailActions () +{ + d->thumbnailSaveConfigTimer = nullptr; + + KActionCollection *ac = actionCollection (); + + + d->actionShowThumbnail = ac->add (QStringLiteral("view_show_thumbnail")); + d->actionShowThumbnail->setText (i18n ("Show T&humbnail")); + // TODO: This doesn't work when the thumbnail has focus. + // Testcase: Press CTRL+H twice on a fresh KolourPaint. + // The second CTRL+H doesn't close the thumbnail. + ac->setDefaultShortcut (d->actionShowThumbnail, Qt::CTRL | Qt::Key_H); + //d->actionShowThumbnail->setCheckedState (KGuiItem(i18n ("Hide T&humbnail"))); + connect (d->actionShowThumbnail, &KToggleAction::triggered, + this, &kpMainWindow::slotShowThumbnailToggled); + + // Please do not use setCheckedState() here - it wouldn't make sense + d->actionZoomedThumbnail = ac->add (QStringLiteral("view_zoomed_thumbnail")); + d->actionZoomedThumbnail->setText (i18n ("Zoo&med Thumbnail Mode")); + connect (d->actionZoomedThumbnail, &KToggleAction::triggered, + this, &kpMainWindow::slotZoomedThumbnailToggled); + + // For consistency with the above action, don't use setCheckedState() + // + // Also, don't use "Show Thumbnail Rectangle" because if entire doc + // can be seen in scrollView, checking option won't "Show" anything + // since rect _surrounds_ entire doc (hence, won't be rendered). + d->actionShowThumbnailRectangle = ac->add (QStringLiteral("view_show_thumbnail_rectangle")); + d->actionShowThumbnailRectangle->setText (i18n ("Enable Thumbnail &Rectangle")); + connect (d->actionShowThumbnailRectangle, &KToggleAction::triggered, + this, &kpMainWindow::slotThumbnailShowRectangleToggled); +} + +// private +void kpMainWindow::enableViewMenuThumbnailDocumentActions (bool enable) +{ + d->actionShowThumbnail->setEnabled (enable); + enableThumbnailOptionActions (enable); +} + +// private slot +void kpMainWindow::slotDestroyThumbnail () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotDestroyThumbnail()"; +#endif + + d->actionShowThumbnail->setChecked (false); + enableThumbnailOptionActions (false); + updateThumbnail (); +} + +// private slot +void kpMainWindow::slotDestroyThumbnailInitatedByUser () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotDestroyThumbnailInitiatedByUser()"; +#endif + + d->actionShowThumbnail->setChecked (false); + slotShowThumbnailToggled (); +} + +// private slot +void kpMainWindow::slotCreateThumbnail () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotCreateThumbnail()"; +#endif + + d->actionShowThumbnail->setChecked (true); + enableThumbnailOptionActions (true); + updateThumbnail (); +} + +// public +void kpMainWindow::notifyThumbnailGeometryChanged () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::notifyThumbnailGeometryChanged()"; +#endif + + if (!d->thumbnailSaveConfigTimer) + { + d->thumbnailSaveConfigTimer = new QTimer (this); + d->thumbnailSaveConfigTimer->setSingleShot (true); + connect (d->thumbnailSaveConfigTimer, &QTimer::timeout, + this, &kpMainWindow::slotSaveThumbnailGeometry); + } + + // (single shot) + d->thumbnailSaveConfigTimer->start (500/*msec*/); +} + +// private slot +void kpMainWindow::slotSaveThumbnailGeometry () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::saveThumbnailGeometry()"; +#endif + + if (!d->thumbnail) { + return; + } + + QRect rect (d->thumbnail->x (), d->thumbnail->y (), + d->thumbnail->width (), d->thumbnail->height ()); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tthumbnail relative geometry=" << rect; +#endif + + d->configThumbnailGeometry = mapFromGlobal (rect); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tCONFIG: saving thumbnail geometry " + << d->configThumbnailGeometry; +#endif + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupThumbnail); + + cfg.writeEntry (kpSettingThumbnailGeometry, d->configThumbnailGeometry); + cfg.sync (); +} + +// private slot +void kpMainWindow::slotShowThumbnailToggled () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotShowThumbnailToggled()"; +#endif + + d->configThumbnailShown = d->actionShowThumbnail->isChecked (); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupThumbnail); + + cfg.writeEntry (kpSettingThumbnailShown, d->configThumbnailShown); + cfg.sync (); + + + enableThumbnailOptionActions (d->actionShowThumbnail->isChecked ()); + updateThumbnail (); +} + +// private slot +void kpMainWindow::updateThumbnailZoomed () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::updateThumbnailZoomed() zoomed=" + << d->actionZoomedThumbnail->isChecked (); +#endif + + if (!d->thumbnailView) { + return; + } + + destroyThumbnailView (); + createThumbnailView (); +} + +// private slot +void kpMainWindow::slotZoomedThumbnailToggled () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotZoomedThumbnailToggled()"; +#endif + + d->configZoomedThumbnail = d->actionZoomedThumbnail->isChecked (); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupThumbnail); + + cfg.writeEntry (kpSettingThumbnailZoomed, d->configZoomedThumbnail); + cfg.sync (); + + + updateThumbnailZoomed (); +} + +// private slot +void kpMainWindow::slotThumbnailShowRectangleToggled () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotThumbnailShowRectangleToggled()"; +#endif + + d->configThumbnailShowRectangle = d->actionShowThumbnailRectangle->isChecked (); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupThumbnail); + + cfg.writeEntry (kpSettingThumbnailShowRectangle, d->configThumbnailShowRectangle); + cfg.sync (); + + + if (d->thumbnailView) + { + d->thumbnailView->showBuddyViewScrollableContainerRectangle ( + d->actionShowThumbnailRectangle->isChecked ()); + } +} + +// private +void kpMainWindow::enableViewZoomedThumbnail (bool enable) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::enableSettingsViewZoomedThumbnail()"; +#endif + + d->actionZoomedThumbnail->setEnabled (enable && + d->actionShowThumbnail->isChecked ()); + + // Note: Don't uncheck if disabled - being able to see the zoomed state + // before turning on the thumbnail can be useful. + d->actionZoomedThumbnail->setChecked (d->configZoomedThumbnail); +} + +// private +void kpMainWindow::enableViewShowThumbnailRectangle (bool enable) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::enableViewShowThumbnailRectangle()"; +#endif + + d->actionShowThumbnailRectangle->setEnabled (enable && + d->actionShowThumbnail->isChecked ()); + + // Note: Don't uncheck if disabled for consistency with + // enableViewZoomedThumbnail() + d->actionShowThumbnailRectangle->setChecked ( + d->configThumbnailShowRectangle); +} + +// private +void kpMainWindow::enableThumbnailOptionActions (bool enable) +{ + enableViewZoomedThumbnail (enable); + enableViewShowThumbnailRectangle (enable); +} + + +// private +void kpMainWindow::createThumbnailView () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tcreating new kpView:"; +#endif + + if (d->thumbnailView) + { + qCDebug(kpLogMainWindow) << "kpMainWindow::createThumbnailView() had to destroy view"; + destroyThumbnailView (); + } + + if (d->actionZoomedThumbnail->isChecked ()) + { + d->thumbnailView = new kpZoomedThumbnailView ( + d->document, d->toolToolBar, d->viewManager, + d->mainView, + nullptr/*scrollableContainer*/, + d->thumbnail); + d->thumbnailView->setObjectName ( QStringLiteral("thumbnailView" )); + } + else + { + d->thumbnailView = new kpUnzoomedThumbnailView ( + d->document, d->toolToolBar, d->viewManager, + d->mainView, + nullptr/*scrollableContainer*/, + d->thumbnail); + d->thumbnailView->setObjectName ( QStringLiteral("thumbnailView" )); + } + + d->thumbnailView->showBuddyViewScrollableContainerRectangle ( + d->actionShowThumbnailRectangle->isChecked ()); + + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tgive kpThumbnail the kpView:"; +#endif + + if (d->thumbnail) { + d->thumbnail->setView (d->thumbnailView); + } + else { + qCCritical(kpLogMainWindow) << "kpMainWindow::createThumbnailView() no thumbnail"; + } + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tregistering the kpView:"; +#endif + if (d->viewManager) { + d->viewManager->registerView (d->thumbnailView); + } +} + +// private +void kpMainWindow::destroyThumbnailView () +{ + if (!d->thumbnailView) { + return; + } + + if (d->viewManager) { + d->viewManager->unregisterView (d->thumbnailView); + } + + if (d->thumbnail) { + d->thumbnail->setView (nullptr); + } + + d->thumbnailView->deleteLater (); d->thumbnailView = nullptr; +} + + +// private +void kpMainWindow::updateThumbnail () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::updateThumbnail()"; +#endif + bool enable = d->actionShowThumbnail->isChecked (); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tthumbnail=" + << bool (d->thumbnail) + << " action_isChecked=" + << enable; +#endif + + if (bool (d->thumbnail) == enable) { + return; + } + + if (!d->thumbnail) + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tcreating thumbnail"; + #endif + + // Read last saved geometry before creating thumbnail & friends + // in case they call notifyThumbnailGeometryChanged() + QRect thumbnailGeometry = d->configThumbnailGeometry; + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tlast used geometry=" << thumbnailGeometry; + #endif + + d->thumbnail = new kpThumbnail (this); + + createThumbnailView (); + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tmoving thumbnail to right place"; + #endif + if (!thumbnailGeometry.isEmpty () && + QRect (0, 0, width (), height ()).intersects (thumbnailGeometry)) + { + const QRect geometry = mapToGlobal (thumbnailGeometry); + d->thumbnail->resize (geometry.size ()); + d->thumbnail->move (geometry.topLeft ()); + } + else + { + if (d->scrollView) + { + const int margin = 20; + const int initialWidth = 160, initialHeight = 120; + + QRect geometryRect (width () - initialWidth - margin * 2, + d->scrollView->y () + margin, + initialWidth, + initialHeight); + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tcreating geometry=" << geometryRect; + #endif + + geometryRect = mapToGlobal (geometryRect); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tmap to global=" << geometryRect; + #endif + d->thumbnail->resize (geometryRect.size ()); + d->thumbnail->move (geometryRect.topLeft ()); + } + } + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tshowing thumbnail"; + #endif + d->thumbnail->show (); + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tconnecting signal thumbnail::windowClosed to destroy slot"; + #endif + connect (d->thumbnail, &kpThumbnail::windowClosed, + this, &kpMainWindow::slotDestroyThumbnailInitatedByUser); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tDONE"; + #endif + } + else + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tdestroying thumbnail d->thumbnail=" + << d->thumbnail; + #endif + + if (d->thumbnailSaveConfigTimer && d->thumbnailSaveConfigTimer->isActive ()) + { + d->thumbnailSaveConfigTimer->stop (); + slotSaveThumbnailGeometry (); + } + + // Must be done before hiding the thumbnail to avoid triggering + // this signal - re-entering this code. + disconnect (d->thumbnail, &kpThumbnail::windowClosed, + this, &kpMainWindow::slotDestroyThumbnailInitatedByUser); + + // Avoid change/flicker of caption due to view delete + // (destroyThumbnailView()) + d->thumbnail->hide (); + + destroyThumbnailView (); + + d->thumbnail->deleteLater (); d->thumbnail = nullptr; + } +} diff --git a/mainWindow/kpMainWindow_View_Zoom.cpp b/mainWindow/kpMainWindow_View_Zoom.cpp new file mode 100644 index 0000000..371310a --- /dev/null +++ b/mainWindow/kpMainWindow_View_Zoom.cpp @@ -0,0 +1,692 @@ +// REFACTOR: Clean up bits of this file + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "mainWindow/kpMainWindow.h" +#include "kpMainWindowPrivate.h" +#include "kpLogCategories.h" + +#include + +#include +#include +#include +#include +#include + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "kpThumbnail.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "views/kpUnzoomedThumbnailView.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" +#include "generic/kpWidgetMapper.h" +#include "views/kpZoomedView.h" +#include "views/kpZoomedThumbnailView.h" + +static int ZoomLevelFromString (const QString &stringIn) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow_View.cpp:ZoomLevelFromString(" << stringIn << ")"; +#endif + + // Remove any non-digits kdelibs sometimes adds behind our back :( e.g.: + // + // 1. kdelibs adds accelerators to actions' text directly + // 2. ',' is automatically added to change "1000%" to "1,000%" + QString string = stringIn; + string.remove (QRegExp ("[^0-9]")); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\twithout non-digits='" << string << "'"; +#endif + + // Convert zoom level to number. + bool ok = false; + int zoomLevel = string.toInt (&ok); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tzoomLevel=" << zoomLevel; +#endif + + if (!ok || zoomLevel < kpView::MinZoomLevel || zoomLevel > kpView::MaxZoomLevel) { + return 0; // error + } + + return zoomLevel; +} + +//--------------------------------------------------------------------- + +static QString ZoomLevelToString (int zoomLevel) +{ + return i18n ("%1%", zoomLevel); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::setupViewMenuZoomActions () +{ + KActionCollection *ac = actionCollection (); + + + d->actionActualSize = KStandardAction::actualSize (this, SLOT (slotActualSize()), ac); + d->actionFitToPage = KStandardAction::fitToPage (this, SLOT (slotFitToPage()), ac); + d->actionFitToWidth = KStandardAction::fitToWidth (this, SLOT (slotFitToWidth()), ac); + d->actionFitToHeight = KStandardAction::fitToHeight (this, SLOT (slotFitToHeight()), ac); + + + d->actionZoomIn = KStandardAction::zoomIn (this, SLOT (slotZoomIn()), ac); + d->actionZoomOut = KStandardAction::zoomOut (this, SLOT (slotZoomOut()), ac); + + + d->actionZoom = ac->add (QStringLiteral("view_zoom_to")); + d->actionZoom->setText (i18n ("&Zoom")); + connect (d->actionZoom, + static_cast(&KSelectAction::triggered), + this, &kpMainWindow::slotZoom); + d->actionZoom->setEditable (true); + + // create the zoom list for the 1st call to zoomTo() below + d->zoomList.append (10); d->zoomList.append (25); d->zoomList.append (33); + d->zoomList.append (50); d->zoomList.append (67); d->zoomList.append (75); + d->zoomList.append (100); + d->zoomList.append (200); d->zoomList.append (300); + d->zoomList.append (400); d->zoomList.append (600); d->zoomList.append (800); + d->zoomList.append (1000); d->zoomList.append (1200); d->zoomList.append (1600); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::enableViewMenuZoomDocumentActions (bool enable) +{ + d->actionActualSize->setEnabled (enable); + d->actionFitToPage->setEnabled (enable); + d->actionFitToWidth->setEnabled (enable); + d->actionFitToHeight->setEnabled (enable); + + d->actionZoomIn->setEnabled (enable); + d->actionZoomOut->setEnabled (enable); + d->actionZoom->setEnabled (enable); + + + // TODO: for the time being, assume that we start at zoom 100% + // with no grid + + // This function is only called when a new document is created + // or an existing document is closed. So the following will + // always be correct: + + zoomTo (100); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::sendZoomListToActionZoom () +{ + QStringList items; + + const QList ::ConstIterator zoomListEnd (d->zoomList.end ()); + for (QList ::ConstIterator it = d->zoomList.constBegin (); + it != zoomListEnd; + ++it) + { + items << ::ZoomLevelToString (*it); + } + + // Work around a KDE bug - KSelectAction::setItems() enables the action. + // David Faure said it won't be fixed because it's a feature used by + // KRecentFilesAction. + bool e = d->actionZoom->isEnabled (); + d->actionZoom->setItems (items); + if (e != d->actionZoom->isEnabled ()) { + d->actionZoom->setEnabled (e); + } +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::zoomToPre (int zoomLevel) +{ + // We're called quite early in the init process and/or when there might + // not be a document or a view so we have a lot of "if (ptr)" guards. + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::zoomToPre(" << zoomLevel << ")"; +#endif + + zoomLevel = qBound (kpView::MinZoomLevel, zoomLevel, kpView::MaxZoomLevel); + + int index = 0; + QList ::Iterator it = d->zoomList.begin (); + + while (index < d->zoomList.count () && zoomLevel > *it) + { + it++; + index++; + } + + if (zoomLevel != *it) { + d->zoomList.insert (it, zoomLevel); + } + + // OPT: We get called twice on startup. sendZoomListToActionZoom() is very slow. + sendZoomListToActionZoom (); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tsetCurrentItem(" << index << ")"; +#endif + d->actionZoom->setCurrentItem (index); +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tcurrentItem=" + << d->actionZoom->currentItem () + << " action=" + << d->actionZoom->action (d->actionZoom->currentItem ()) + << " checkedAction" + << d->actionZoom->selectableActionGroup ()->checkedAction (); +#endif + + + if (viewMenuDocumentActionsEnabled ()) + { + d->actionActualSize->setEnabled (zoomLevel != 100); + + d->actionZoomIn->setEnabled (d->actionZoom->currentItem () < d->zoomList.count () - 1); + d->actionZoomOut->setEnabled (d->actionZoom->currentItem () > 0); + } + + + // TODO: Is this actually needed? + if (d->viewManager) { + d->viewManager->setQueueUpdates (); + } + + if (d->scrollView) + { + d->scrollView->setUpdatesEnabled (false); + } +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::zoomToPost () +{ +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::zoomToPost()"; +#endif + + if (d->mainView) + { + actionShowGridUpdate (); + updateMainViewGrid (); + + // Since Zoom Level KSelectAction on ToolBar grabs focus after changing + // Zoom, switch back to the Main View. + // TODO: back to the last view + d->mainView->setFocus (); + + } + + + // The view magnified and moved beneath the cursor + if (tool ()) { + tool ()->somethingBelowTheCursorChanged (); + } + + + if (d->scrollView) + { + // TODO: setUpdatesEnabled() should really return to old value + // - not necessarily "true" + d->scrollView->setUpdatesEnabled (true); + } + + if (d->viewManager && d->viewManager->queueUpdates ()/*just in case*/) { + d->viewManager->restoreQueueUpdates (); + } + + setStatusBarZoom (d->mainView ? d->mainView->zoomLevelX () : 0); + +#if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "kpMainWindow::zoomToPost() done"; +#endif +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::zoomTo (int zoomLevel, bool centerUnderCursor) +{ + zoomToPre (zoomLevel); + + + if (d->scrollView && d->mainView) + { + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\tscrollView contentsX=" << d->scrollView->horizontalScrollBar()->value () + << " contentsY=" << d->scrollView->verticalScrollBar()->value () + << " contentsWidth=" << d->scrollView->widget()->width () + << " contentsHeight=" << d->scrollView->widget()->height () + << " visibleWidth=" << d->scrollView->viewport()->width () + << " visibleHeight=" << d->scrollView->viewport()->height () + << " oldZoomX=" << d->mainView->zoomLevelX () + << " oldZoomY=" << d->mainView->zoomLevelY () + << " newZoom=" << zoomLevel; + #endif + + // TODO: when changing from no scrollbars to scrollbars, Qt lies about + // visibleWidth() & visibleHeight() (doesn't take into account the + // space taken by the would-be scrollbars) until it updates the + // scrollview; hence the centering is off by about 5-10 pixels. + + // TODO: Use visibleRect() for greater accuracy? + // Or use kpAbstractScrollAreaUtils::EstimateUsableArea() + // instead of ScrollView::visible{Width,Height}(), as + // per zoomToRect()? + + int viewX, viewY; + + bool targetDocAvail = false; + double targetDocX = -1, targetDocY = -1; + + if (centerUnderCursor && + d->viewManager && d->viewManager->viewUnderCursor ()) + { + kpView *const vuc = d->viewManager->viewUnderCursor (); + QPoint viewPoint = vuc->mouseViewPoint (); + + // vuc->transformViewToDoc() returns QPoint which only has int + // accuracy so we do X and Y manually. + targetDocX = vuc->transformViewToDocX (viewPoint.x ()); + targetDocY = vuc->transformViewToDocY (viewPoint.y ()); + targetDocAvail = true; + + if (vuc != d->mainView) { + viewPoint = vuc->transformViewToOtherView (viewPoint, d->mainView); + } + + viewX = viewPoint.x (); + viewY = viewPoint.y (); + } + else + { + viewX = d->scrollView->horizontalScrollBar()->value () + + qMin (d->mainView->width (), + d->scrollView->viewport()->width ()) / 2; + viewY = d->scrollView->verticalScrollBar()->value () + + qMin (d->mainView->height (), + d->scrollView->viewport()->height ()) / 2; + } + + + int newCenterX = viewX * zoomLevel / d->mainView->zoomLevelX (); + int newCenterY = viewY * zoomLevel / d->mainView->zoomLevelY (); + + // Do the zoom. + d->mainView->setZoomLevel (zoomLevel, zoomLevel); + + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\tvisibleWidth=" << d->scrollView->viewport()->width () + << " visibleHeight=" << d->scrollView->viewport()->height (); + qCDebug(kpLogMainWindow) << "\tnewCenterX=" << newCenterX + << " newCenterY=" << newCenterY; + #endif + + d->scrollView->horizontalScrollBar()->setValue(newCenterX - (d->scrollView->viewport()->width() / 2)); + d->scrollView->verticalScrollBar()->setValue(newCenterY - (d->scrollView->viewport()->height() / 2)); + + if (centerUnderCursor && + targetDocAvail && + d->viewManager && d->viewManager->viewUnderCursor ()) + { + // Move the mouse cursor so that it is still above the same + // document pixel as before the zoom. + + kpView *const vuc = d->viewManager->viewUnderCursor (); + + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tcenterUnderCursor: reposition cursor; viewUnderCursor=" + << vuc->objectName (); + #endif + + const auto viewX = vuc->transformDocToViewX (targetDocX); + const auto viewY = vuc->transformDocToViewY (targetDocY); + // Rounding error from zooming in and out :( + // TODO: do everything in terms of tool doc points in type "double". + const QPoint viewPoint (static_cast (viewX), static_cast (viewY)); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tdoc: (" << targetDocX << "," << targetDocY << ")" + << " viewUnderCursor: (" << viewX << "," << viewY << ")"; + #endif + + if (vuc->visibleRegion ().contains (viewPoint)) + { + const QPoint globalPoint = + kpWidgetMapper::toGlobal (vuc, viewPoint); + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\tglobalPoint=" << globalPoint; + #endif + + // TODO: Determine some sane cursor flashing indication - + // cursor movement is convenient but not conventional. + // + // Major problem: if using QApplication::setOverrideCursor() + // and in some stage of flash and window quits. + // + // Or if using kpView::setCursor() and change tool. + QCursor::setPos (globalPoint); + } + // e.g. Zoom to 200%, scroll mainView to bottom-right. + // Unzoomed Thumbnail shows top-left portion of bottom-right of + // mainView. + // + // Aim cursor at bottom-right of thumbnail and zoom out with + // CTRL+Wheel. + // + // If mainView is now small enough to largely not need scrollbars, + // Unzoomed Thumbnail scrolls to show _top-left_ portion + // _of top-left_ of mainView. + // + // Unzoomed Thumbnail no longer contains the point we zoomed out + // on top of. + else + { + #if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\t\twon't move cursor - would get outside view"; + #endif + + // TODO: Sane cursor flashing indication that indicates + // that the normal cursor movement didn't happen. + } + } + + #if DEBUG_KP_MAIN_WINDOW && 1 + qCDebug(kpLogMainWindow) << "\t\tcheck (contentsX=" << d->scrollView->horizontalScrollBar()->value () + << ",contentsY=" << d->scrollView->verticalScrollBar()->value () + << ")"; + #endif + } + + + zoomToPost (); +} + +//--------------------------------------------------------------------- + +// private +void kpMainWindow::zoomToRect (const QRect &normalizedDocRect, + bool accountForGrips, + bool careAboutWidth, bool careAboutHeight) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::zoomToRect(normalizedDocRect=" + << normalizedDocRect + << ",accountForGrips=" << accountForGrips + << ",careAboutWidth=" << careAboutWidth + << ",careAboutHeight=" << careAboutHeight + << ")"; +#endif + // You can't care about nothing. + Q_ASSERT (careAboutWidth || careAboutHeight); + + // The size of the scroll view minus the current or future scrollbars. + const QSize usableScrollArea + (d->scrollView->maximumViewportSize().width() - d->scrollView->verticalScrollBar()->sizeHint().width(), + d->scrollView->maximumViewportSize().height() - d->scrollView->horizontalScrollBar()->sizeHint().height()); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "size=" << d->scrollView->maximumViewportSize() + << "scrollbar w=" << d->scrollView->verticalScrollBar()->sizeHint().width() + << "usableSize=" << usableScrollArea; +#endif + // Handle rounding error, mis-estimating the scroll view size and + // cosmic rays. We do this because we really don't want unnecessary + // scrollbars. This seems to need to be at least 2 for slotFitToWidth() + // and friends. + // least 2. + // TODO: I might have fixed this but check later. + const int slack = 0; + + // The grip and slack are in view coordinates but are never zoomed. + const int viewWidth = + usableScrollArea.width () - + (accountForGrips ? kpGrip::Size : 0) - + slack; + const int viewHeight = + usableScrollArea.height () - + (accountForGrips ? kpGrip::Size : 0) - + slack; + + // We want the selected document rectangle to fill the scroll view. + // + // The integer arithmetic rounds down, rather than to the nearest zoom + // level, as rounding down guarantees that the view, at the zoom level, + // will fit inside x . + const int zoomX = + careAboutWidth ? + qMax (1, viewWidth * 100 / normalizedDocRect.width ()) : + INT_MAX; + const int zoomY = + careAboutHeight ? + qMax (1, viewHeight * 100 / normalizedDocRect.height ()) : + INT_MAX; + + // Since kpView only supports identical horizontal and vertical zooms, + // choose the one that will show the greatest amount of document + // content. + const int zoomLevel = qMin (zoomX, zoomY); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tzoomX=" << zoomX + << " zoomY=" << zoomY + << " -> zoomLevel=" << zoomLevel; +#endif + + zoomToPre (zoomLevel); + { + d->mainView->setZoomLevel (zoomLevel, zoomLevel); + + const QPoint viewPoint = + d->mainView->transformDocToView (normalizedDocRect.topLeft ()); + + d->scrollView->horizontalScrollBar()->setValue(viewPoint.x()); + d->scrollView->verticalScrollBar()->setValue(viewPoint.y()); + } + zoomToPost (); +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotActualSize () +{ + zoomTo (100); +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotFitToPage () +{ + if ( d->document ) + { + zoomToRect ( + d->document->rect (), + true/*account for grips*/, + true/*care about width*/, true/*care about height*/); + } +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotFitToWidth () +{ + if ( d->document ) + { + const QRect docRect ( + 0/*x*/, + static_cast (d->mainView->transformViewToDocY (d->scrollView->verticalScrollBar()->value ()))/*maintain y*/, + d->document->width (), + 1/*don't care about height*/); + zoomToRect ( + docRect, + true/*account for grips*/, + true/*care about width*/, false/*don't care about height*/); + } +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotFitToHeight () +{ + if ( d->document ) + { + const QRect docRect ( + static_cast (d->mainView->transformViewToDocX (d->scrollView->horizontalScrollBar()->value ()))/*maintain x*/, + 0/*y*/, + 1/*don't care about width*/, + d->document->height ()); + zoomToRect ( + docRect, + true/*account for grips*/, + false/*don't care about width*/, true/*care about height*/); + } +} + +//--------------------------------------------------------------------- + +// public +void kpMainWindow::zoomIn (bool centerUnderCursor) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::zoomIn(centerUnderCursor=" + << centerUnderCursor << ") currentItem=" + << d->actionZoom->currentItem (); +#endif + const int targetItem = d->actionZoom->currentItem () + 1; + + if (targetItem >= static_cast (d->zoomList.count ())) { + return; + } + + d->actionZoom->setCurrentItem (targetItem); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tnew currentItem=" << d->actionZoom->currentItem (); +#endif + + zoomAccordingToZoomAction (centerUnderCursor); +} + +//--------------------------------------------------------------------- + +// public +void kpMainWindow::zoomOut (bool centerUnderCursor) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::zoomOut(centerUnderCursor=" + << centerUnderCursor << ") currentItem=" + << d->actionZoom->currentItem (); +#endif + const int targetItem = d->actionZoom->currentItem () - 1; + + if (targetItem < 0) { + return; + } + + d->actionZoom->setCurrentItem (targetItem); + +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "\tnew currentItem=" << d->actionZoom->currentItem (); +#endif + + zoomAccordingToZoomAction (centerUnderCursor); +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotZoomIn () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotZoomIn ()"; +#endif + + zoomIn (false/*don't center under cursor*/); +} + +//--------------------------------------------------------------------- + +// public slot +void kpMainWindow::slotZoomOut () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotZoomOut ()"; +#endif + + zoomOut (false/*don't center under cursor*/); +} + +//--------------------------------------------------------------------- + +// public +void kpMainWindow::zoomAccordingToZoomAction (bool centerUnderCursor) +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::zoomAccordingToZoomAction(centerUnderCursor=" + << centerUnderCursor + << ") currentItem=" << d->actionZoom->currentItem () + << " currentText=" << d->actionZoom->currentText (); +#endif + + // This might be a new zoom level the user has typed in. + zoomTo (::ZoomLevelFromString (d->actionZoom->currentText ()), + centerUnderCursor); +} + +//--------------------------------------------------------------------- + +// private slot +void kpMainWindow::slotZoom () +{ +#if DEBUG_KP_MAIN_WINDOW + qCDebug(kpLogMainWindow) << "kpMainWindow::slotZoom () index=" << d->actionZoom->currentItem () + << " text='" << d->actionZoom->currentText () << "'"; +#endif + + zoomAccordingToZoomAction (false/*don't center under cursor*/); +} + +//--------------------------------------------------------------------- diff --git a/org.kde.kolourpaint.appdata.xml b/org.kde.kolourpaint.appdata.xml new file mode 100644 index 0000000..3d13ad3 --- /dev/null +++ b/org.kde.kolourpaint.appdata.xml @@ -0,0 +1,429 @@ + + + org.kde.kolourpaint.desktop + MIT + BSD-2-Clause and LGPL-2.0+ and GFDL-1.2 + KolourPaint + الرسام + KolourPaint + KolurPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + KolourPaint + ilo KolourPaint + KolourPaint + KolourPaint + xxKolourPaintxx + KolourPaint 画图工具 + KolourPaint + Paint Program + برنامج تلوين + Програма за рисуване + Program za slikanje + Programa de dibuix + Programa de dibuix + Program pro malování + Tegneprogram + Mal- und Zeichenprogramm + Πρόγραμμα ζωγραφικής + Paint Program + Programa de dibujo + Joonistamisrakendus + Marrazteko programa + Piirto-ohjelma + Logiciel de dessin + Programa para pintar + Rajzolóprogram + Programma per pinger + Program Lukis + Programma di disegno + სახატავი პროგრამა + 그리기 프로그램 + Piešimo programa + Malepogram + Maalprogramm + Tekenprogramma + Teikneprogram + Program Paint + Programa de Pintura + Programa de desenho + Простой редактор изображений + Kresliaci program + Program za risanje + Ritprogram + ilo sitelen + Boyama Programı + Програма для малювання + xxPaint Programxx + 画图程序 + 繪圖程式 + +

+ KolourPaint is a simple painting program to quickly create raster images. + It is useful as a touch-up tool and simple image editing tasks. +

+

الرسام هو برنامج رسم بسيط لإنشاء صور نقطية بسرعة. إنه مفيد كأداة تحسين ومهام بسيطة لتحرير الصور.

+

KolourPaint е проста програма за рисуване на растерни изображения. Тя е полезна като инструмент за ретуширане и при стандартни задачи за редактиране на изображения.

+

KolourPaint je jednostavan crtaći program za brzo staranje rasterskih slika. On je koristan kao sredstvo retuširanja i jednostavne zadatke za uređivanje slika.

+

El KolourPaint és un programa senzill de dibuix per a crear ràpidament imatges ràster. És útil com a eina de retoc i tasques senzilles per a l'edició d'imatges.

+

KolourPaint és un programa senzill de dibuix per a crear ràpidament imatges ràster. És útil com a eina de retoc i tasques senzilles per a l'edició d'imatges.

+

KolourPaint er et simpelt tegneprogram til hurtigt at skabe raster-billeder. Det er et nyttigt værktøj til at tegne skitser eller udføre simple billedredigeringsopgaver.

+

KolourPaint ist ein einfach zu benutzendes Mal- und Zeichenprogramm um schnell Rasterbilder zu erstellen. Es kann für die Korrektur und einfache Bildbearbeitungsaufgaben benutzt werden.

+

Το KolourPaint είναι λενα απλό πρόγραμμα ζωραφικής για τη γρήγορη δημιουργία εικόνων χρωματικής περίπλεξης. Χρησιμεύει ως διορθωτικό και για απλές εργασίες επεξεργασίας εικόνων.

+

KolourPaint is a simple painting program to quickly create raster images. It is useful as a touch-up tool and simple image editing tasks.

+

KolourPaint es un sencillo programa de dibujo que permite crear imágenes de mapas de bits de una forma rápida. Resulta útil como herramienta de retoque y para tareas de edición sencillas.

+

KolourPaint on lihtne joonistamisrakendus rasterpiltide kiireks loomiseks. Sellega on hõlpus luua visandeid ja täita lihtsamaid piltide töötlemise ülesandeid.

+

KolourPaint margotzeko aplikazio xume bat da, «raster» irudiak azkar sortzeko balio duena. Baliagarria da berrukipen tresna gisa eta oinarrizko irudi editatzeko atazetarako.

+

KolourPaint on yksinkertainen piirto-ohjelma, jolla voi luoda nopeasti bittikartakuvia. Sitä voi käyttää myös kuvien parantamiseen ja yksinkertaiseen kuvankäsittelyyn.

+

KolourPaint est logiciel de dessin simple qui permet de créer rapidement des images. Il est pratique pour retoucher ou modifier simplement des images.

+

KolourPaint é un programa para pintar sinxelo que permite crear imaxes de mapa de bits rapidamente. É útil como ferramenta de retoque e para realizar tarefas sinxelas de edición de imaxes.

+

A KolourPaint egy egyszerű rajzolóprogram raszteres képek gyors létrehozásához. Hasznos retusálóeszközként és egyszerű képszerkesztő feladatokhoz.

+

KolourPAint es un simple programma per pinger o designar per crear rapidemente imagines raster. Il es utile como instrumento de retocco e per cargas simplice de modificar imagines.

+

KolourPaint adalah program melukis sederhana untuk membuat gambar raster dengan cepat. Ini berguna sebagai alat bantu dan tugas pengeditan gambar sederhana.

+

KolourPaint è un semplice programma di disegno per la creazione rapida di immagini. È utile come strumento da usare «al volo» e per effettuare semplici modifiche alle immagini.

+

KolourPaint는 래스터 그림을 빠르게 만드는 프로그램입니다. 간단한 보정 도구 및 편집 도구로 사용할 수 있습니다.

+

KolourPaint er et enkelt maleprogram som kjapt kan lage rasterbilder. Det er et nyttig verktøy for retusjering og enkle redigeringsoppgaver.

+

KolourPaint is en eenfach Maalprogramm, mit dat sik gau Pixelbiller opstellen laat. Dat is goot för lütte Utbetern un eenfache Bildbewerken.

+

KolourPaint is een eenvoudig tekenprogramma om snel rasterafbeeldingen te maken. Het is nuttig als een hulpmiddel voor bijwerken en eenvoudige taken voor bewerking van afbeeldingen.

+

KolourPaint er eit enkelt teikne­program for punkt­grafikk. Det er eit nyttig verktøy for retusjering og enkle redigerings­oppgåver.

+

KolourPaint jest prostym programem do malowania i szybkiego tworzenia obrazów rastrowych. Jest przydatny przy retuszowaniu i prostych pracach edytowania.

+

O KolourPaint é um programa simples de pintura que cria rapidamente imagens rasterizadas. É útil como uma ferramenta de retoques e para tarefas simples de edição de imagens.

+

KolourPaint é um programa de desenho simples, que cria rapidamente imagens rasterizadas. É útil como uma ferramenta de retoques e para tarefas simples de edição de imagens.

+

KolourPaint — простая программа для рисования и создания растровых изображений. Может быть полезна для внесения небольших правок в изображения.

+

KolourPaint je jednoduchý kresliaci program na rýchlu tvorbu rastrových obrázkov. Je užitočný ako touch-up nástroj a na jednoduché úpravy obrázkov.

+

KolourPaint je preprost program za risanje in hitro ustvarjanje rastrskih slik. Uporaben je za izboljšave slik in preprosto urejanje slik.

+

KolourPaint är ett enkelt ritprogram för att snabbt skapa punktavbildningar. Det är användbart som förbättringsverktyg och för enkla bildredigeringsuppgifter.

+

ilo KolourPaint li ilo sitelen li sitelen e sitelen pona. ona li pona kepeken li mute ala.

+

KolourPaint hızlıca taramalı resimler oluşturabileceğiniz basit bir boyama programıdır. Bir rötuş aracı ve basit resim düzenleme görevleri için yararlıdır.

+

KolourPaint — проста програма для малювання, за допомогою якої можна швидко створювати растрові зображення. Ця програма може бути корисною для виконання простих завдань з редагування зображень.

+

xxKolourPaint is a simple painting program to quickly create raster images. It is useful as a touch-up tool and simple image editing tasks.xx

+

KolourPaint 是一款简易画图程序,能够快速绘制栅格图像。您也可以将它作为简易修图工具使用。

+

KolourPaint 是一套類似小畫家的簡易繪圖程式。

+

Features:

+

الميزات:

+

Функции:

+

Svojstva:

+

Característiques:

+

Característiques:

+

Vlastnosti:

+

Funktioner:

+

Leistungsmerkmale:

+

Χαρακτηριστικά:

+

Features:

+

Funcionalidades:

+

Omadused:

+

Eginbideak:

+

Ominaisuudet:

+

Fonctionnalités :

+

Funcionalidades:

+

Szolgáltatások:

+

Characteristicas:

+

Fitur:

+

Caratteristiche:

+

თვისებები:

+

기능:

+

Galimybės:

+

Funksjoner:

+

Markmalen:

+

Mogelijkheden:

+

Funksjonar:

+

Cechy:

+

Funcionalidades:

+

Funcionalidades:

+

Возможности:

+

Funkcie:

+

Zmožnosti:

+

Funktioner:

+

ken pali:

+

Özellikler:

+

Можливості:

+

xxFeatures:xx

+

功能:

+

功能:

+
    +
  • Support for drawing various shapes - lines, rectangles, rounded rectangles, ovals and polygons
  • +
  • دعم لرسم أشكال مختلفة - خطوط ومستطيلات ومستطيلات مستديرة الشكل وأشكال بيضاوية ومضلعات
  • +
  • Поддръжка на чертане на различни фигури - линии, правоъгълници, овали и полигони.
  • +
  • Podrška za crtanje raznih oblika - linija, pravougaonika, zaobljenih pravougaonika, ovala i poligona
  • +
  • Permet dibuixar diverses formes: línies, rectangles, rectangles arrodonits, ovals i polígons
  • +
  • Permet dibuixar diverses formes: línies, rectangles, rectangles arredonits, ovals i polígons
  • +
  • Understøtter at tegne diverse former - linjer, firkanter, afrundede firkanter, ovaler og polygoner
  • +
  • Das Zeichnen verschiedener Objekte wie Linien, Rechtecke, abgerundete Rechtecke, Ellipsen und Polygone wird unterstützt.
  • +
  • Υποστήριξη για σχεδίαση διαφόρων σχημάτων - ευθείες, ορθογώνια παραλληλόγραμμα, στρογγυλεμένα ορθογώνια, ελλείψεις και πολύγωνα
  • +
  • Support for drawing various shapes - lines, rectangles, rounded rectangles, ovals and polygons
  • +
  • Permite dibujar distintas formas (líneas, rectángulos, rectángulos de esquinas redondeadas, óvalos y polígonos)
  • +
  • Mitmesuguste kujundite joonistamise toetus: jooned, ristkülikud, ümarnurksed ristkülikud, ovaalid, hulknurgad
  • +
  • Hainbat forma marraztu ditzake - lerroak, laukizuzenak, laukizuzen borobilduak, obaloak eta poligonoak
  • +
  • Piirtämistuki useille muodoille – viivoille, suorakaiteille, pyöristetyille suorakaiteille, ellipseille ja monikulmioille
  • +
  • Dessin de formes variées : lignes, rectangles, rectangles à bords arrondis, ovales, polygones
  • +
  • Permite debuxar varias formas: liñas, rectángulos, rectángulos arredondados, óvalos e polígonos.
  • +
  • Különféle alakzatok rajzolásának támogatása - vonalak, téglalapok, lekerekített téglalapok, oválisok és sokszögek
  • +
  • Supporto pro designar varie formas - lineas, rectangulos, rectangulos tundite, ovales e polygonos
  • +
  • Dukungan untuk menggambar berbagai bentuk - garis, persegi panjang, persegi panjang, bulat, oval dan poligon
  • +
  • Supporto per il disegno di varie forme - linee, rettangoli, rettangoli arrotondati, ovali e poligoni
  • +
  • 다양한 도형 그리기 - 직선, 사각형, 둥근 사각형, 타원형, 다각형
  • +
  • Støtte for å tegne mange former – linjer, rektangler, avrundede rektangler, ovaler og polygoner
  • +
  • Ünnerstütt dat Teken vun en Reeg vun Formen - Lienen, Rechtecks, afrundt Rechtecks, Ovalen un Veelecks
  • +
  • Ondersteuning voor het tekenen van verschillende vormen - lijnen, rechthoeken, afgeronde rechthoeken, ovalen en polygonen
  • +
  • Støtte for å teikna mange former – linjer, rektangel, avrunda rektangel, ellipsar og mangekantar
  • +
  • Obsługa rysowania rozmaitych kształtów - proste, prostokąty, zaokrąglone prostokąty, owale i wielokąty
  • +
  • Suporte para desenhar várias formas - linhas, rectângulos, rectângulos arredondados, ovais e polígonos
  • +
  • Suporte para desenhar várias formas - linhas, retângulos, retângulos arredondados, ovais e polígonos
  • +
  • Рисование различных фигур: отрезков, прямоугольников, скруглённых прямоугольников, овалов и многоугольников
  • +
  • Podpora pre kreslenie rôznych tvarov - čiary, obdĺžniky, zaoblené obdĺžniky, ovály a polygóny
  • +
  • Podpora risanju različnih oblik - črt, pravokotnikov, zaobljenih pravokotnikov, ovalov in mnogokotnikov
  • +
  • Stöd för att rita diverse former: linjer, rektanglar, rundade rektanglar, ovaler och polygoner
  • +
  • ona li ken sitelen e ni: linja, sike, leko en sijelo ante
  • +
  • Çeşitli şekiller, çizgiler, dörtgenler, yuvarlatılmış dörtgenler, ovaller ve poligonlar desteği
  • +
  • Підтримка малювання різноманітних форм: прямих, прямокутників, прямокутників із заокругленими кутами, овалів та багатокутників.
  • +
  • xxSupport for drawing various shapes - lines, rectangles, rounded rectangles, ovals and polygonsxx
  • +
  • 能够绘制各种几何图形 - 直线、矩形、圆角矩形、椭圆和多边形等
  • +
  • 支援繪出不同的形狀 -- 線條、矩形、圓角矩形、橢圓與多邊形等
  • +
  • Curves, lines and text
  • +
  • المنحنيات والخطوط والنص
  • +
  • Криви, линии и текст
  • +
  • Krive, linije i tekst
  • +
  • Corbes, línies i text
  • +
  • Corbes, línies i text
  • +
  • Křivky, čáry a text
  • +
  • Kurver, linjer og tekst
  • +
  • Kurven, Linien und Text
  • +
  • Καμπύλες, ευθείες και κείμενο
  • +
  • Curves, lines and text
  • +
  • Curvas, líneas y texto
  • +
  • Kõverad, sirged ja tekst
  • +
  • Kurbak, lerroak eta testua
  • +
  • Käyrät, viivat ja teksti
  • +
  • Courbes, lignes et textes
  • +
  • Curvas, liñas e texto.
  • +
  • Görbék, vonalak és szöveg
  • +
  • Curvas, lineas e texto
  • +
  • Lengkung, garis, dan teks
  • +
  • Curve, linee e testo
  • +
  • მრუდები, ხაზები და ტექსტი
  • +
  • 곡선, 직선 및 텍스트
  • +
  • Kreivės, tiesės ir tekstas
  • +
  • Kurver, linjer og tekst
  • +
  • Bagens, Lienen un Text
  • +
  • Krommen, lijnen en tekst
  • +
  • Kurver, linjer og tekst
  • +
  • Krzywe, proste i teks
  • +
  • Curvas, linhas e texto
  • +
  • Curvas, linhas e texto
  • +
  • Рисование гладких кривых, произвольных линий и вставка текста
  • +
  • Krivky, čiary a text
  • +
  • Krivulje, črte in besedilo
  • +
  • Kurvor, linjer och text
  • +
  • ona li ken sitelen e linja sike
  • +
  • Eğriler, çizgiler ve metin
  • +
  • Можливість малювання кривих, прямих та тексту.
  • +
  • xxCurves, lines and textxx
  • +
  • 曲线、直线和文本
  • +
  • 曲線、線條與文字
  • +
  • Colour picker
  • +
  • منتق الألوان
  • +
  • Избор на цвят
  • +
  • Dobavljač boja
  • +
  • Selector de color
  • +
  • Selector de color
  • +
  • Kapátko
  • +
  • Farvevælger
  • +
  • Farbwähler
  • +
  • Επιλογέας χρωμάτων
  • +
  • Colour picker
  • +
  • Selección de color
  • +
  • Värvivalija
  • +
  • Kolore hautatzailea
  • +
  • Värivalitsin
  • +
  • Sélecteur de couleur
  • +
  • Selector de cor
  • +
  • Színválasztó
  • +
  • Selector de color
  • +
  • Penukil warna
  • +
  • Selettore del colore
  • +
  • ფერების არჩევა
  • +
  • 색 선택기
  • +
  • Spalvų parinkiklis
  • +
  • Fargevelger
  • +
  • Klöörköör
  • +
  • Kleurkiezer
  • +
  • Fargeveljar
  • +
  • Wybierak barwy
  • +
  • Selecção de cores
  • +
  • Seleção de cor
  • +
  • Окно палитры
  • +
  • Výber farieb
  • +
  • Izbirnik barv
  • +
  • Färgväljare
  • +
  • ilo pi pana kule
  • +
  • Renk seçici
  • +
  • Піпетка для отримання кольору із зображення.
  • +
  • xxColour pickerxx
  • +
  • 拾色器
  • +
  • 顏色挑選器
  • +
  • Selections
  • +
  • التّحديدات
  • +
  • Селекции
  • +
  • Selekcije
  • +
  • Seleccions
  • +
  • Seleccions
  • +
  • Výběry
  • +
  • Markeringer
  • +
  • Mehre Auswahlarten
  • +
  • Επιλογές
  • +
  • Selections
  • +
  • Selecciones
  • +
  • Valikud
  • +
  • Hautapenak
  • +
  • Valintatyökalu
  • +
  • Sélections
  • +
  • Seleccións
  • +
  • Kijelölések
  • +
  • Selectiones
  • +
  • Pemilihan
  • +
  • Selezioni
  • +
  • მონიშნულები
  • +
  • 선택
  • +
  • Žymėjimai
  • +
  • Utvalg
  • +
  • Köören
  • +
  • Selecties
  • +
  • Utval
  • +
  • Zaznaczenia
  • +
  • Selecções
  • +
  • Seleções
  • +
  • Выделение областей
  • +
  • Výbery
  • +
  • Izbire
  • +
  • Markeringar
  • +
  • wile sitelen
  • +
  • Seçimler
  • +
  • Можливість позначення ділянок зображення.
  • +
  • xxSelectionsxx
  • +
  • 选区
  • +
  • 選取區
  • +
  • Rotation, monochrome and other advanced effects
  • +
  • دوران ، أحادية اللون وتأثيرات متقدمة أخرى
  • +
  • Ротация, монохромност и други ефекти
  • +
  • Rotacija, monohrom i drugi napredni efekti
  • +
  • Gir, monocrom i altres efectes avançats
  • +
  • Gir, monocrom i altres efectes avançats
  • +
  • Rotation, monokrom og andre avancerede effekter
  • +
  • Drehung, Umwandlung in Schwarzweiß und weitere Effekte können angewendet werden
  • +
  • Περιστροφή, μονοχρωμία και άλλα προηγμένα εφέ
  • +
  • Rotation, monochrome and other advanced effects
  • +
  • Rotación, conversión a monocromo y otros efectos avanzados
  • +
  • Pööramine, ühevärvilisus ja veel mõned efektid
  • +
  • Biraketa, monokromoa eta beste efektu aurreratu batzuk
  • +
  • Kierto, pelkistäminen yksiväriseksi sekä muita tehosteita
  • +
  • Rotation, monochrome et autres effets avancés
  • +
  • Rotación, monocroma e outros efectos avanzados.
  • +
  • Forgatás, fekete-fehér és egyéb speciális hatások
  • +
  • Rotation, monochrome e altere effectos avantiate
  • +
  • Perotasian, monokrom, dan efek tingkat lanjut lainnya
  • +
  • Rotazione, monocromia e altri effetti avanzati
  • +
  • მობრუნება, შავთეთრობა და სხვა დამატებითი ეფექტები
  • +
  • 회전, 흑백, 기타 고급 효과
  • +
  • Dreiing, monokrom og andre avanserte effekter
  • +
  • Dreihen, Swatt-Witt un en Reeg verwiedert Effekten
  • +
  • Roteren, monochroom en andere geavanceerde effecten
  • +
  • Dreiing, fargeredusering og fleire avanserte effektar
  • +
  • Obrót, monochromatyczność i inne zaawansowane efekty
  • +
  • Rotação, monocromáticos e outros efeitos avançados
  • +
  • Rotação, monocromático e outros efeitos avançados
  • +
  • Инструменты поворота, преобразования в чёрно-белое изображение и другие
  • +
  • Otáčanie, monochromatické a iné pokročilé efekty
  • +
  • Vrtenje, monokromatski in drugi napredni učinki
  • +
  • Rotation, svartvitt och andra avancerade effekter
  • +
  • Döndürme, tek renkli resim ve diğer gelişmiş efektler
  • +
  • Можливість обертання частин зображення, перетворення зображення на чорно-біле, різноманітні ефекти перетворення зображення.
  • +
  • xxRotation, monochrome and other advanced effectsxx
  • +
  • 旋转,纯黑白和其他高级效果
  • +
  • 旋轉、單色與其他進階效果
  • +
+
+ http://www.kolourpaint.org/ + https://bugs.kde.org/enter_bug.cgi?format=guided&product=kolourpaint + https://docs.kde.org/?application=kolourpaint + https://www.kde.org/community/donations/?app=kolourpaint&source=appdata + + + Painting in KolourPaint + الرسم على الرسام + Рисуване с KolourPaint + Pintant al KolourPaint + Pintant a KolourPaint + Malování v KolourPaint + Tegner i Kolourpaint + Malen mit KolourPaint + Ζωγραφική στο KolourPaint + Painting in KolourPaint + Dibujando con KolourPaint + Joonistamine KolourPaintis + Margako KolourPaint erabiliz + Maalaaminen KolourPaintissä + Dessin dans KolourPaint + Pintando en KolourPaint + Pingente in KolourPaint + Melukis di KolourPaint + Dipingere in KolourPaint + KolourPaint-ში ხატვა + KolourPaint로 그림 그리기 + In KolourPaint tekenen + Teikning med KolourPaint + Malowanie w KolourPaint + Pintura no KolourPaint + Pintando no KolourPaint + Рисование в KolourPaint + Kreslenie v KolourPaint + Slikanje v KolourPaint + Rita med KolourPaint + sitelen lon ilo KolourPaint + KolourPaint'te Boyama + Малювання у KolourPaint + xxPainting in KolourPaintxx + 使用 KolourPaint 绘画 + 在 KolourPaint 繪圖 + https://kde.org/images/screenshots/kolourpaint.png + + + KDE + + + kolourpaint + + + + + + + +
diff --git a/org.kde.kolourpaint.desktop b/org.kde.kolourpaint.desktop new file mode 100644 index 0000000..e460214 --- /dev/null +++ b/org.kde.kolourpaint.desktop @@ -0,0 +1,206 @@ +[Desktop Entry] + +Name=KolourPaint +Name[ar]=الرسام +Name[be]=KolourPaint +Name[bg]=KolourPaint +Name[br]=KolourPaint +Name[bs]=KolurPaint +Name[ca]=KolourPaint +Name[ca@valencia]=KolourPaint +Name[cs]=KolourPaint +Name[cy]=KolourPaint +Name[da]=KolourPaint +Name[de]=KolourPaint +Name[el]=KolourPaint +Name[en_GB]=KolourPaint +Name[eo]=KolourPaint +Name[es]=KolourPaint +Name[et]=KolourPaint +Name[eu]=KolourPaint +Name[fa]=KolourPaint +Name[fi]=KolourPaint +Name[fr]=KolourPaint +Name[ga]=KolourPaint +Name[gl]=KolourPaint +Name[he]=KolourPaint +Name[hi]=के-कलर-पेंट +Name[hne]=के-कलर-पेंट +Name[hr]=KolourPaint +Name[hu]=KolourPaint +Name[ia]=KolourPaint +Name[is]=KolourPaint +Name[it]=KolourPaint +Name[ja]=KolourPaint +Name[ka]=KolourPaint +Name[kk]=KolourPaint +Name[km]=KolourPaint +Name[ko]=KolourPaint +Name[ku]=KolourPaint +Name[lt]=KolourPaint +Name[lv]=KolourPaint +Name[ml]=കളർപെയിന്റ് +Name[mr]=कलरपेंट +Name[ms]=KolourPaint +Name[nb]=KolourPaint +Name[nds]=KolourPaint +Name[ne]=रङ पेन्ट +Name[nl]=KolourPaint +Name[nn]=KolourPaint +Name[pa]=ਕੇ-ਰੰਗ-ਪੇਂਟ +Name[pl]=KolourPaint +Name[pt]=KolourPaint +Name[pt_BR]=KolourPaint +Name[ro]=KolourPaint +Name[ru]=KolourPaint +Name[se]=KolourPaint +Name[si]=KolourPaint +Name[sk]=KolourPaint +Name[sl]=KolourPaint +Name[sr]=Колор-сликање +Name[sr@ijekavian]=Колор-сликање +Name[sr@ijekavianlatin]=Kolor-slikanje +Name[sr@latin]=Kolor-slikanje +Name[sv]=Kolourpaint +Name[ta]=நிற பெயின்ட் +Name[tg]=KolourPaint +Name[th]=วาดภาพระบายสี-K +Name[tr]=KolourPaint +Name[ug]=KolourPaint +Name[uk]=KolourPaint +Name[uz]=KolourPaint +Name[uz@cyrillic]=KolourPaint +Name[vi]=KolourPaint +Name[x-test]=xxKolourPaintxx +Name[zh_CN]=KolourPaint 画图工具 +Name[zh_HK]=KolourPaint +Name[zh_TW]=KolourPaint 小畫家 +GenericName=Paint Program +GenericName[af]=Verf Program +GenericName[ar]=برنامج تلوين +GenericName[bg]=Графичен редактор +GenericName[br]=Goulev tresañ +GenericName[bs]=Program za slikanje +GenericName[ca]=Programa de dibuix +GenericName[ca@valencia]=Programa de dibuix +GenericName[cs]=Program pro malování +GenericName[cy]=Rhaglen Peintio +GenericName[da]=Maleprogram +GenericName[de]=Mal- und Zeichenprogramm +GenericName[el]=Πρόγραμμα ζωγραφικής +GenericName[en_GB]=Paint Program +GenericName[eo]=Pentrilo +GenericName[es]=Programa de pintura +GenericName[et]=Joonistamisprogramm +GenericName[eu]=Marrazteko programa +GenericName[fa]=برنامه رنگ +GenericName[fi]=Piirto-ohjelma +GenericName[fr]=Programme de dessin +GenericName[ga]=Clár Péinteála +GenericName[gl]=Programa de debuxo +GenericName[he]=תוכנית ציור +GenericName[hi]=पेंट प्रोग्राम +GenericName[hne]=पेंट प्रोग्राम +GenericName[hr]=Program za slikanje +GenericName[hu]=Rajzolóprogram +GenericName[ia]=Programma per pinger +GenericName[is]=Myndmálunarforrit +GenericName[it]=Programma di disegno +GenericName[ja]=ペイントプログラム +GenericName[ka]=სახატავი პროგრამა +GenericName[kk]=Сурет салу бағдарламасы +GenericName[km]=កម្មវិធី​គូរ +GenericName[ko]=그리기 프로그램 +GenericName[ku]=Bernameya Nexşe Kirinê +GenericName[lt]=Piešimo programa +GenericName[lv]=Krāsošanas programma +GenericName[ml]=പെയിന്റ് പ്രോഗ്രാം +GenericName[mr]=रंग कार्यक्रम +GenericName[ms]=Program Mewarna +GenericName[nb]=Tegneprogram +GenericName[nds]=Maalprogramm +GenericName[ne]=रङ्गयाउने कार्यक्रम +GenericName[nl]=Tekenprogramma +GenericName[nn]=Teikneprogram +GenericName[pa]=ਰੰਗ ਪਰੋਗਰਾਮ +GenericName[pl]=Program Paint +GenericName[pt]=Programa de Pintura +GenericName[pt_BR]=Programa de desenho +GenericName[ro]=Program de desenare +GenericName[ru]=Простой редактор изображений +GenericName[se]=Málenprográmma +GenericName[si]=පින්තාරු වැඩසටහන +GenericName[sk]=Kresliaci program +GenericName[sl]=Program za risanje +GenericName[sr]=Програм за сликање +GenericName[sr@ijekavian]=Програм за сликање +GenericName[sr@ijekavianlatin]=Program za slikanje +GenericName[sr@latin]=Program za slikanje +GenericName[sv]=Ritprogram +GenericName[ta]=பெயிண்ட் நிரலி +GenericName[tg]=Муҳаррири графикӣ +GenericName[th]=โปรแกรมวาดภาพ +GenericName[tr]=Boyama Uygulaması +GenericName[ug]=سىزىش پروگراممىسى +GenericName[uk]=Програма для малювання +GenericName[uz]=Chizish dasturi +GenericName[uz@cyrillic]=Чизиш дастури +GenericName[vi]=Chương trình vẽ +GenericName[wa]=Program di dessinaedje +GenericName[xh]=Udweliso lwenkqubo lwepeyinti +GenericName[x-test]=xxPaint Programxx +GenericName[zh_CN]=画图程序 +GenericName[zh_HK]=繪圖程式 +GenericName[zh_TW]=繪圖程式 + +Comment=An easy-to-use paint program +Comment[ar]=برنامج تلوين سهل الاستخدام +Comment[bg]=Лесна за изпълнение програма за изпълнение +Comment[ca]=Un programa de dibuix senzill d'usar +Comment[ca@valencia]=Un programa de dibuix senzill d'utilitzar +Comment[cs]=Snadný nástroj pro malování +Comment[da]=Et nemt tegneprogram +Comment[de]=Ein einfach zu benutzendes Mal- und Zeichenprogramm +Comment[el]=Ένα εύκολο στη χρήση πρόγραμμα ζωγραφικής +Comment[en_GB]=An easy-to-use paint program +Comment[es]=Un programa para pintar fácil de usar +Comment[et]=Lihtne joonistamisprogramm +Comment[eu]=Erabiltzen erraza den marrazketa programa +Comment[fi]=Helppokäyttöinen piirto-ohjelma +Comment[fr]=Un programme de dessin facile à utiliser +Comment[gl]=Un programa de debuxo fácil de usar. +Comment[hu]=Egyszerűen használható rajzprogram +Comment[ia]=Un programma pro pinger facilemente +Comment[is]=Einfalt forrit til að teikna og mála myndir +Comment[it]=Un programma di disegno semplice da usare +Comment[ka]=ადვილი სახატავი პროგრამა +Comment[ko]=사용하기 쉬운 그리기 프로그램 +Comment[lt]=Paprasta piešimo programa +Comment[ml]=ലളിതമായി ഉപയോഗിക്കാവുന്ന പെയിന്റ് പ്രോഗ്രാം +Comment[nl]=Een gemakkelijk te gebruiken tekenprogramma +Comment[nn]=Eit teikneprogram som er lett å bruka +Comment[pl]=Łatwy w użyciu program do malowania +Comment[pt]=Um programa de pintura simples de usar +Comment[pt_BR]=Um programa de desenho fácil de usar +Comment[ru]=Простая в использовании программа для рисования +Comment[sk]=Jednoduchý maľovací program +Comment[sl]=Enostaven program za risanje +Comment[sv]=Ett lättanvänt ritprogram +Comment[tr]=Kolay kullanılır bir boyama programı +Comment[uk]=Проста у користуванні програма для малювання +Comment[x-test]=xxAn easy-to-use paint programxx +Comment[zh_CN]=一款简易画图程序 +Comment[zh_TW]=易於使用的繪圖程式 + +Icon=kolourpaint + +Type=Application +Exec=kolourpaint %u +X-DocPath=kolourpaint/index.html +StartupWMClass=kolourpaint + +# SYNC: Run kolourpaint --mimetypes +MimeType=application/x-krita;application/x-navi-animation;image/avif;image/bmp;image/gif;image/heif;image/jpeg;image/jxl;image/openraster;image/png;image/svg+xml;image/svg+xml-compressed;image/tiff;image/vnd.adobe.photoshop;image/vnd.microsoft.icon;image/vnd.wap.wbmp;image/webp;image/x-eps;image/x-exr;image/x-hdr;image/x-icns;image/x-mng;image/x-pcx;image/x-pic;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-rgb;image/x-sun-raster;image/x-tga;image/x-xbitmap;image/x-xcf;image/x-xpixmap; + +Categories=Qt;KDE;Graphics;2DGraphics;RasterGraphics; +Terminal=false diff --git a/patches/checkerboard-faster-render.diff b/patches/checkerboard-faster-render.diff new file mode 100644 index 0000000..7cc5c8b --- /dev/null +++ b/patches/checkerboard-faster-render.diff @@ -0,0 +1,147 @@ +At 100% zoom: kpMainWindow::drawTransparentBackground() accounts for +about 75% of kpView::paintEvent()'s time. Bottleneck is +QPainter::fillRect(). QPainter::drawPixmap() seems much faster. For +800x600, renderer goes from 10ms to 1ms. + +2007-10-12: +Have not reprofiled KolourPaint under Qt4 to determine whether this patch +is still worthwhile (I suspect it still is since QPainter/X11 could not +magically have gotten faster). In any case, the patch needs to be updated +before being applied. + +--- kpmainwindow.cpp 2004-08-05 02:10:38.000000000 +1000 ++++ kpmainwindow.cpp 2004-09-29 11:24:45.000000000 +1000 +@@ -838,12 +838,116 @@ + } + + ++#if 1 ++// (indexed by [isPreview][parity]) ++static QPixmap *checkerBoardCache [2][2] = {{0, 0}, {0, 0}}; ++ ++ ++static int checkerBoardCellSize (bool isPreview) ++{ ++ return !isPreview ? 16 : 10; ++} ++ ++ ++// public ++static QPixmap *createCheckerBoardCache (bool isPreview, bool parity) ++{ ++ int cellSize = checkerBoardCellSize (isPreview); ++ const int rep = 2; // must be multiple of 2 ++ ++ QPixmap *newPixmap = new QPixmap (cellSize * rep, cellSize * rep); ++ QPainter painter (newPixmap); ++ ++ int parityAsInt = parity ? 1 : 0; ++ for (int y = 0; y < rep; y++) ++ { ++ for (int x = 0; x < rep; x++) ++ { ++ QColor col; ++ ++ if ((parityAsInt + x + y) % 2) ++ { ++ if (!isPreview) ++ col = QColor (213, 213, 213); ++ else ++ col = QColor (224, 224, 224); ++ } ++ else ++ col = Qt::white; ++ ++ painter.fillRect (x * cellSize, y * cellSize, ++ cellSize, cellSize, ++ col); ++ } ++ } ++ ++ painter.end (); ++ return newPixmap; ++} ++ ++void kpMainWindow::drawTransparentBackground (QPainter *painter, ++ int /*viewWidth*/, int /*viewHeight*/, ++ const QRect &rect, ++ bool isPreview) ++{ ++#if DEBUG_KP_MAIN_WINDOW && 1 || 1 ++ kDebug () << "\tkpMainWindow::drawTransparentBackground(rect=" ++ << rect << ")" << endl; ++ QTime totalTimer; totalTimer.start (); ++#endif ++ ++ int cellSize = checkerBoardCellSize (isPreview); ++ ++ ++ int starty = rect.y (); ++ if (starty % cellSize) ++ starty -= (starty % cellSize); ++ ++ int startx = rect.x (); ++ if (startx % cellSize) ++ startx -= (startx % cellSize); ++ ++ ++ int parity = ((startx / cellSize + starty / cellSize) % 2) ? 1 : 0; ++ ++ if (!checkerBoardCache [isPreview][parity]) ++ { ++ checkerBoardCache [isPreview][parity] = createCheckerBoardCache (isPreview, parity); ++ } ++ ++ QPixmap *tilePixmap = checkerBoardCache [isPreview][parity]; ++ for (int y = starty; y <= rect.bottom (); y += tilePixmap->height ()) ++ { ++ for (int x = startx; x <= rect.right (); x += tilePixmap->width ()) ++ { ++ painter->drawPixmap (x - rect.x (), y - rect.y (), *tilePixmap); ++ } ++ } ++ ++#if DEBUG_KP_MAIN_WINDOW && 1 || 1 ++{ ++ const int totalTimerElapsed = totalTimer.elapsed (); ++ kDebug () << "\t\ttotal=" << totalTimerElapsed << endl; ++} ++#endif ++} ++ ++ ++#else ++ + // public + void kpMainWindow::drawTransparentBackground (QPainter *painter, + int /*viewWidth*/, int /*viewHeight*/, + const QRect &rect, + bool isPreview) + { ++#if DEBUG_KP_MAIN_WINDOW && 1 ++ kDebug () << "\tkpMainWindow::drawTransparentBackground(rect=" ++ << rect << ")" << endl; ++ QTime totalTimer; totalTimer.start (); ++#endif ++ ++ + const int cellSize = !isPreview ? 16 : 10; + + int starty = rect.y (); +@@ -877,8 +982,15 @@ + } + } + painter->restore (); +-} + ++#if DEBUG_KP_MAIN_WINDOW && 1 || 1 ++{ ++ const int totalTimerElapsed = totalTimer.elapsed (); ++ kDebug () << "\t\ttotal=" << totalTimerElapsed << endl; ++} ++#endif ++} ++#endif + + // private slot + void kpMainWindow::slotUpdateCaption () diff --git a/patches/linear-sharpen-effect.diff b/patches/linear-sharpen-effect.diff new file mode 100644 index 0000000..605852f --- /dev/null +++ b/patches/linear-sharpen-effect.diff @@ -0,0 +1,150 @@ +Changes the "Sharpen" effect to Blitz::sharpen() instead of +Blitz::gaussianSharpen(), in order to avoid parameters that are currently +set in a dangerously adhoc fashion (radius, sigma, repeat). + +Unfortunately, the results do not look good. + +2007-08-14 20:35 + + +Index: imagelib/effects/kpEffectBlurSharpen.cpp +=================================================================== +--- imagelib/effects/kpEffectBlurSharpen.cpp (revision 699849) ++++ imagelib/effects/kpEffectBlurSharpen.cpp (working copy) +@@ -26,7 +26,7 @@ + */ + + +-#define DEBUG_KP_EFFECT_BLUR_SHARPEN 0 ++#define DEBUG_KP_EFFECT_BLUR_SHARPEN 1 + + + #include +@@ -46,18 +46,10 @@ + #endif + + +-static QImage BlurQImage (const QImage qimage_, int strength) ++static int RadiusForStrength (int strength) + { +- QImage qimage = qimage_; +- if (strength == 0) +- return qimage; +- +- +- // The numbers that follow were picked by experimentation to try to get +- // an effect linearly proportional to and at the same time, +- // be fast enough. +- // +- // I still have no idea what "radius" means. ++ // (must be in range and not 0) ++ Q_ASSERT (strength > 0 && strength <= kpEffectBlurSharpen::MaxStrength); + + const double RadiusMin = 1; + const double RadiusMax = 10; +@@ -67,92 +59,36 @@ static QImage BlurQImage (const QImage q + (kpEffectBlurSharpen::MaxStrength - 1); + + #if DEBUG_KP_EFFECT_BLUR_SHARPEN +- kDebug () << "kpEffectBlurSharpen.cpp:BlurQImage(strength=" << strength << ")" ++ kDebug () << "kpEffectBlurSharpen.cpp:RadiusForStrength(strength=" << strength << ")" + << " radius=" << radius + << endl; + #endif + +- +- qimage = Blitz::blur (qimage, qRound (radius)); +- +- +- return qimage; ++ return qRound (radius); + } + +-static QImage SharpenQImage (const QImage &qimage_, int strength) ++ ++static QImage BlurQImage (const QImage qimage_, int strength) + { + QImage qimage = qimage_; + if (strength == 0) + return qimage; + + +- // The numbers that follow were picked by experimentation to try to get +- // an effect linearly proportional to and at the same time, +- // be fast enough. +- // +- // I still have no idea what "radius" and "sigma" mean. +- +- const double RadiusMin = .1; +- const double RadiusMax = 2.5; +- const double radius = RadiusMin + +- (strength - 1) * +- (RadiusMax - RadiusMin) / +- (kpEffectBlurSharpen::MaxStrength - 1); +- +- const double SigmaMin = .5; +- const double SigmaMax = 3.0; +- const double sigma = SigmaMin + +- (strength - 1) * +- (SigmaMax - SigmaMin) / +- (kpEffectBlurSharpen::MaxStrength - 1); +- +- const double RepeatMin = 1; +- const double RepeatMax = 2; +- const double repeat = qRound (RepeatMin + +- (strength - 1) * +- (RepeatMax - RepeatMin) / +- (kpEffectBlurSharpen::MaxStrength - 1)); ++ qimage = Blitz::blur (qimage, ::RadiusForStrength (strength)); + +-// I guess these values are more proper as they use an auto-calculated +-// radius but they cause sharpen() to be too slow. +-#if 0 +- const double radius = 0/*auto-calculate*/; +- +- const double SigmaMin = .6; +- const double SigmaMax = 1.0; +- const double sigma = SigmaMin + +- (strength - 1) * +- (SigmaMax - SigmaMin) / +- (kpEffectBlurSharpen::MaxStrength - 1); + +- const double RepeatMin = 1; +- const double RepeatMax = 3; +- const double repeat = qRound (RepeatMin + +- (strength - 1) * +- (RepeatMax - RepeatMin) / +- (kpEffectBlurSharpen::MaxStrength - 1)); +-#endif ++ return qimage; ++} + +-#if DEBUG_KP_EFFECT_BLUR_SHARPEN +- kDebug () << "kpEffectBlurSharpen.cpp:SharpenQImage(strength=" << strength << ")" +- << " radius=" << radius +- << " sigma=" << sigma +- << " repeat=" << repeat +- << endl; +-#endif ++static QImage SharpenQImage (const QImage &qimage_, int strength) ++{ ++ QImage qimage = qimage_; ++ if (strength == 0) ++ return qimage; + + +- for (int i = 0; i < repeat; i++) +- { +- #if DEBUG_KP_EFFECT_BLUR_SHARPEN +- QTime timer; timer.start (); +- #endif +- qimage = Blitz::gaussianSharpen (qimage, radius, sigma); +- #if DEBUG_KP_EFFECT_BLUR_SHARPEN +- kDebug () << "\titeration #" + QString::number (i) +- << ": " + QString::number (timer.elapsed ()) << "ms" << endl; +- #endif +- } ++ qimage = Blitz::sharpen (qimage, ::RadiusForStrength (strength) * 10); + + + return qimage; diff --git a/pics/CMakeLists.txt b/pics/CMakeLists.txt new file mode 100644 index 0000000..c56ef12 --- /dev/null +++ b/pics/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory( action ) +add_subdirectory( app ) diff --git a/pics/action/16-actions-tool_brush.png b/pics/action/16-actions-tool_brush.png new file mode 100644 index 0000000..372ff62 Binary files /dev/null and b/pics/action/16-actions-tool_brush.png differ diff --git a/pics/action/16-actions-tool_color_eraser.png b/pics/action/16-actions-tool_color_eraser.png new file mode 100644 index 0000000..0967ae9 Binary files /dev/null and b/pics/action/16-actions-tool_color_eraser.png differ diff --git a/pics/action/16-actions-tool_color_picker.png b/pics/action/16-actions-tool_color_picker.png new file mode 100644 index 0000000..2aba49a Binary files /dev/null and b/pics/action/16-actions-tool_color_picker.png differ diff --git a/pics/action/16-actions-tool_curve.png b/pics/action/16-actions-tool_curve.png new file mode 100644 index 0000000..c7e0b27 Binary files /dev/null and b/pics/action/16-actions-tool_curve.png differ diff --git a/pics/action/16-actions-tool_ellipse.png b/pics/action/16-actions-tool_ellipse.png new file mode 100644 index 0000000..4e2fe52 Binary files /dev/null and b/pics/action/16-actions-tool_ellipse.png differ diff --git a/pics/action/16-actions-tool_elliptical_selection.png b/pics/action/16-actions-tool_elliptical_selection.png new file mode 100644 index 0000000..acd1d6c Binary files /dev/null and b/pics/action/16-actions-tool_elliptical_selection.png differ diff --git a/pics/action/16-actions-tool_eraser.png b/pics/action/16-actions-tool_eraser.png new file mode 100644 index 0000000..f3ef915 Binary files /dev/null and b/pics/action/16-actions-tool_eraser.png differ diff --git a/pics/action/16-actions-tool_flood_fill.png b/pics/action/16-actions-tool_flood_fill.png new file mode 100644 index 0000000..f0900a7 Binary files /dev/null and b/pics/action/16-actions-tool_flood_fill.png differ diff --git a/pics/action/16-actions-tool_free_form_selection.png b/pics/action/16-actions-tool_free_form_selection.png new file mode 100644 index 0000000..31e3a48 Binary files /dev/null and b/pics/action/16-actions-tool_free_form_selection.png differ diff --git a/pics/action/16-actions-tool_line.png b/pics/action/16-actions-tool_line.png new file mode 100644 index 0000000..2bdb607 Binary files /dev/null and b/pics/action/16-actions-tool_line.png differ diff --git a/pics/action/16-actions-tool_pen.png b/pics/action/16-actions-tool_pen.png new file mode 100644 index 0000000..467b0d5 Binary files /dev/null and b/pics/action/16-actions-tool_pen.png differ diff --git a/pics/action/16-actions-tool_polygon.png b/pics/action/16-actions-tool_polygon.png new file mode 100644 index 0000000..bd0eac1 Binary files /dev/null and b/pics/action/16-actions-tool_polygon.png differ diff --git a/pics/action/16-actions-tool_polyline.png b/pics/action/16-actions-tool_polyline.png new file mode 100644 index 0000000..ca8dd6a Binary files /dev/null and b/pics/action/16-actions-tool_polyline.png differ diff --git a/pics/action/16-actions-tool_rect_selection.png b/pics/action/16-actions-tool_rect_selection.png new file mode 100644 index 0000000..35d9f18 Binary files /dev/null and b/pics/action/16-actions-tool_rect_selection.png differ diff --git a/pics/action/16-actions-tool_rectangle.png b/pics/action/16-actions-tool_rectangle.png new file mode 100644 index 0000000..b373fa4 Binary files /dev/null and b/pics/action/16-actions-tool_rectangle.png differ diff --git a/pics/action/16-actions-tool_rounded_rectangle.png b/pics/action/16-actions-tool_rounded_rectangle.png new file mode 100644 index 0000000..2fd0b3e Binary files /dev/null and b/pics/action/16-actions-tool_rounded_rectangle.png differ diff --git a/pics/action/16-actions-tool_spraycan.png b/pics/action/16-actions-tool_spraycan.png new file mode 100644 index 0000000..f34b2a1 Binary files /dev/null and b/pics/action/16-actions-tool_spraycan.png differ diff --git a/pics/action/16-actions-tool_text.png b/pics/action/16-actions-tool_text.png new file mode 100644 index 0000000..9eaa24d Binary files /dev/null and b/pics/action/16-actions-tool_text.png differ diff --git a/pics/action/22-actions-tool_brush.png b/pics/action/22-actions-tool_brush.png new file mode 100644 index 0000000..c51dd59 Binary files /dev/null and b/pics/action/22-actions-tool_brush.png differ diff --git a/pics/action/22-actions-tool_color_eraser.png b/pics/action/22-actions-tool_color_eraser.png new file mode 100644 index 0000000..f1065fd Binary files /dev/null and b/pics/action/22-actions-tool_color_eraser.png differ diff --git a/pics/action/22-actions-tool_color_picker.png b/pics/action/22-actions-tool_color_picker.png new file mode 100644 index 0000000..b59adff Binary files /dev/null and b/pics/action/22-actions-tool_color_picker.png differ diff --git a/pics/action/22-actions-tool_curve.png b/pics/action/22-actions-tool_curve.png new file mode 100644 index 0000000..9723e20 Binary files /dev/null and b/pics/action/22-actions-tool_curve.png differ diff --git a/pics/action/22-actions-tool_ellipse.png b/pics/action/22-actions-tool_ellipse.png new file mode 100644 index 0000000..5861f79 Binary files /dev/null and b/pics/action/22-actions-tool_ellipse.png differ diff --git a/pics/action/22-actions-tool_elliptical_selection.png b/pics/action/22-actions-tool_elliptical_selection.png new file mode 100644 index 0000000..10e8ed3 Binary files /dev/null and b/pics/action/22-actions-tool_elliptical_selection.png differ diff --git a/pics/action/22-actions-tool_eraser.png b/pics/action/22-actions-tool_eraser.png new file mode 100644 index 0000000..e3fa028 Binary files /dev/null and b/pics/action/22-actions-tool_eraser.png differ diff --git a/pics/action/22-actions-tool_flood_fill.png b/pics/action/22-actions-tool_flood_fill.png new file mode 100644 index 0000000..0b98f3a Binary files /dev/null and b/pics/action/22-actions-tool_flood_fill.png differ diff --git a/pics/action/22-actions-tool_free_form_selection.png b/pics/action/22-actions-tool_free_form_selection.png new file mode 100644 index 0000000..1434670 Binary files /dev/null and b/pics/action/22-actions-tool_free_form_selection.png differ diff --git a/pics/action/22-actions-tool_line.png b/pics/action/22-actions-tool_line.png new file mode 100644 index 0000000..22f5aa5 Binary files /dev/null and b/pics/action/22-actions-tool_line.png differ diff --git a/pics/action/22-actions-tool_pen.png b/pics/action/22-actions-tool_pen.png new file mode 100644 index 0000000..fcedd23 Binary files /dev/null and b/pics/action/22-actions-tool_pen.png differ diff --git a/pics/action/22-actions-tool_polygon.png b/pics/action/22-actions-tool_polygon.png new file mode 100644 index 0000000..9bf2d40 Binary files /dev/null and b/pics/action/22-actions-tool_polygon.png differ diff --git a/pics/action/22-actions-tool_polyline.png b/pics/action/22-actions-tool_polyline.png new file mode 100644 index 0000000..e5ef4ef Binary files /dev/null and b/pics/action/22-actions-tool_polyline.png differ diff --git a/pics/action/22-actions-tool_rect_selection.png b/pics/action/22-actions-tool_rect_selection.png new file mode 100644 index 0000000..39a7c29 Binary files /dev/null and b/pics/action/22-actions-tool_rect_selection.png differ diff --git a/pics/action/22-actions-tool_rectangle.png b/pics/action/22-actions-tool_rectangle.png new file mode 100644 index 0000000..8f94c8b Binary files /dev/null and b/pics/action/22-actions-tool_rectangle.png differ diff --git a/pics/action/22-actions-tool_rounded_rectangle.png b/pics/action/22-actions-tool_rounded_rectangle.png new file mode 100644 index 0000000..758e617 Binary files /dev/null and b/pics/action/22-actions-tool_rounded_rectangle.png differ diff --git a/pics/action/22-actions-tool_spraycan.png b/pics/action/22-actions-tool_spraycan.png new file mode 100644 index 0000000..bf8f2a4 Binary files /dev/null and b/pics/action/22-actions-tool_spraycan.png differ diff --git a/pics/action/22-actions-tool_text.png b/pics/action/22-actions-tool_text.png new file mode 100644 index 0000000..98602e3 Binary files /dev/null and b/pics/action/22-actions-tool_text.png differ diff --git a/pics/action/32-actions-tool_brush.png b/pics/action/32-actions-tool_brush.png new file mode 100644 index 0000000..1f60a55 Binary files /dev/null and b/pics/action/32-actions-tool_brush.png differ diff --git a/pics/action/32-actions-tool_color_eraser.png b/pics/action/32-actions-tool_color_eraser.png new file mode 100644 index 0000000..bf96e2d Binary files /dev/null and b/pics/action/32-actions-tool_color_eraser.png differ diff --git a/pics/action/32-actions-tool_color_picker.png b/pics/action/32-actions-tool_color_picker.png new file mode 100644 index 0000000..7714dc2 Binary files /dev/null and b/pics/action/32-actions-tool_color_picker.png differ diff --git a/pics/action/32-actions-tool_curve.png b/pics/action/32-actions-tool_curve.png new file mode 100644 index 0000000..ed69479 Binary files /dev/null and b/pics/action/32-actions-tool_curve.png differ diff --git a/pics/action/32-actions-tool_ellipse.png b/pics/action/32-actions-tool_ellipse.png new file mode 100644 index 0000000..84eac23 Binary files /dev/null and b/pics/action/32-actions-tool_ellipse.png differ diff --git a/pics/action/32-actions-tool_elliptical_selection.png b/pics/action/32-actions-tool_elliptical_selection.png new file mode 100644 index 0000000..dfc8eef Binary files /dev/null and b/pics/action/32-actions-tool_elliptical_selection.png differ diff --git a/pics/action/32-actions-tool_eraser.png b/pics/action/32-actions-tool_eraser.png new file mode 100644 index 0000000..dab6391 Binary files /dev/null and b/pics/action/32-actions-tool_eraser.png differ diff --git a/pics/action/32-actions-tool_flood_fill.png b/pics/action/32-actions-tool_flood_fill.png new file mode 100644 index 0000000..7302a98 Binary files /dev/null and b/pics/action/32-actions-tool_flood_fill.png differ diff --git a/pics/action/32-actions-tool_free_form_selection.png b/pics/action/32-actions-tool_free_form_selection.png new file mode 100644 index 0000000..ce0f518 Binary files /dev/null and b/pics/action/32-actions-tool_free_form_selection.png differ diff --git a/pics/action/32-actions-tool_line.png b/pics/action/32-actions-tool_line.png new file mode 100644 index 0000000..4dfcbdc Binary files /dev/null and b/pics/action/32-actions-tool_line.png differ diff --git a/pics/action/32-actions-tool_pen.png b/pics/action/32-actions-tool_pen.png new file mode 100644 index 0000000..ba35f90 Binary files /dev/null and b/pics/action/32-actions-tool_pen.png differ diff --git a/pics/action/32-actions-tool_polygon.png b/pics/action/32-actions-tool_polygon.png new file mode 100644 index 0000000..87dbe46 Binary files /dev/null and b/pics/action/32-actions-tool_polygon.png differ diff --git a/pics/action/32-actions-tool_polyline.png b/pics/action/32-actions-tool_polyline.png new file mode 100644 index 0000000..dd4ec9b Binary files /dev/null and b/pics/action/32-actions-tool_polyline.png differ diff --git a/pics/action/32-actions-tool_rect_selection.png b/pics/action/32-actions-tool_rect_selection.png new file mode 100644 index 0000000..17308a4 Binary files /dev/null and b/pics/action/32-actions-tool_rect_selection.png differ diff --git a/pics/action/32-actions-tool_rectangle.png b/pics/action/32-actions-tool_rectangle.png new file mode 100644 index 0000000..2cd5919 Binary files /dev/null and b/pics/action/32-actions-tool_rectangle.png differ diff --git a/pics/action/32-actions-tool_rounded_rectangle.png b/pics/action/32-actions-tool_rounded_rectangle.png new file mode 100644 index 0000000..2937e29 Binary files /dev/null and b/pics/action/32-actions-tool_rounded_rectangle.png differ diff --git a/pics/action/32-actions-tool_spraycan.png b/pics/action/32-actions-tool_spraycan.png new file mode 100644 index 0000000..215be80 Binary files /dev/null and b/pics/action/32-actions-tool_spraycan.png differ diff --git a/pics/action/32-actions-tool_text.png b/pics/action/32-actions-tool_text.png new file mode 100644 index 0000000..ea5ff10 Binary files /dev/null and b/pics/action/32-actions-tool_text.png differ diff --git a/pics/action/48-actions-tool_brush.png b/pics/action/48-actions-tool_brush.png new file mode 100644 index 0000000..71c5a8e Binary files /dev/null and b/pics/action/48-actions-tool_brush.png differ diff --git a/pics/action/48-actions-tool_color_eraser.png b/pics/action/48-actions-tool_color_eraser.png new file mode 100644 index 0000000..118fcfe Binary files /dev/null and b/pics/action/48-actions-tool_color_eraser.png differ diff --git a/pics/action/48-actions-tool_color_picker.png b/pics/action/48-actions-tool_color_picker.png new file mode 100644 index 0000000..a630c5a Binary files /dev/null and b/pics/action/48-actions-tool_color_picker.png differ diff --git a/pics/action/48-actions-tool_curve.png b/pics/action/48-actions-tool_curve.png new file mode 100644 index 0000000..98e220f Binary files /dev/null and b/pics/action/48-actions-tool_curve.png differ diff --git a/pics/action/48-actions-tool_ellipse.png b/pics/action/48-actions-tool_ellipse.png new file mode 100644 index 0000000..e23579f Binary files /dev/null and b/pics/action/48-actions-tool_ellipse.png differ diff --git a/pics/action/48-actions-tool_elliptical_selection.png b/pics/action/48-actions-tool_elliptical_selection.png new file mode 100644 index 0000000..92691a4 Binary files /dev/null and b/pics/action/48-actions-tool_elliptical_selection.png differ diff --git a/pics/action/48-actions-tool_eraser.png b/pics/action/48-actions-tool_eraser.png new file mode 100644 index 0000000..8cf4e23 Binary files /dev/null and b/pics/action/48-actions-tool_eraser.png differ diff --git a/pics/action/48-actions-tool_flood_fill.png b/pics/action/48-actions-tool_flood_fill.png new file mode 100644 index 0000000..61dd49f Binary files /dev/null and b/pics/action/48-actions-tool_flood_fill.png differ diff --git a/pics/action/48-actions-tool_free_form_selection.png b/pics/action/48-actions-tool_free_form_selection.png new file mode 100644 index 0000000..5eff822 Binary files /dev/null and b/pics/action/48-actions-tool_free_form_selection.png differ diff --git a/pics/action/48-actions-tool_line.png b/pics/action/48-actions-tool_line.png new file mode 100644 index 0000000..95a2fae Binary files /dev/null and b/pics/action/48-actions-tool_line.png differ diff --git a/pics/action/48-actions-tool_pen.png b/pics/action/48-actions-tool_pen.png new file mode 100644 index 0000000..9dfaef1 Binary files /dev/null and b/pics/action/48-actions-tool_pen.png differ diff --git a/pics/action/48-actions-tool_polygon.png b/pics/action/48-actions-tool_polygon.png new file mode 100644 index 0000000..579802a Binary files /dev/null and b/pics/action/48-actions-tool_polygon.png differ diff --git a/pics/action/48-actions-tool_polyline.png b/pics/action/48-actions-tool_polyline.png new file mode 100644 index 0000000..135ba32 Binary files /dev/null and b/pics/action/48-actions-tool_polyline.png differ diff --git a/pics/action/48-actions-tool_rect_selection.png b/pics/action/48-actions-tool_rect_selection.png new file mode 100644 index 0000000..fe228d0 Binary files /dev/null and b/pics/action/48-actions-tool_rect_selection.png differ diff --git a/pics/action/48-actions-tool_rectangle.png b/pics/action/48-actions-tool_rectangle.png new file mode 100644 index 0000000..3f40684 Binary files /dev/null and b/pics/action/48-actions-tool_rectangle.png differ diff --git a/pics/action/48-actions-tool_rounded_rectangle.png b/pics/action/48-actions-tool_rounded_rectangle.png new file mode 100644 index 0000000..3787d02 Binary files /dev/null and b/pics/action/48-actions-tool_rounded_rectangle.png differ diff --git a/pics/action/48-actions-tool_spraycan.png b/pics/action/48-actions-tool_spraycan.png new file mode 100644 index 0000000..51b397b Binary files /dev/null and b/pics/action/48-actions-tool_spraycan.png differ diff --git a/pics/action/48-actions-tool_text.png b/pics/action/48-actions-tool_text.png new file mode 100644 index 0000000..9fd75d9 Binary files /dev/null and b/pics/action/48-actions-tool_text.png differ diff --git a/pics/action/CMakeLists.txt b/pics/action/CMakeLists.txt new file mode 100644 index 0000000..b7cac1c --- /dev/null +++ b/pics/action/CMakeLists.txt @@ -0,0 +1,94 @@ +ecm_install_icons(ICONS + 16-actions-tool_brush.png + 16-actions-tool_color_eraser.png + 16-actions-tool_color_picker.png + 16-actions-tool_curve.png + 16-actions-tool_ellipse.png + 16-actions-tool_elliptical_selection.png + 16-actions-tool_eraser.png + 16-actions-tool_flood_fill.png + 16-actions-tool_free_form_selection.png + 16-actions-tool_line.png + 16-actions-tool_pen.png + 16-actions-tool_polygon.png + 16-actions-tool_polyline.png + 16-actions-tool_rect_selection.png + 16-actions-tool_rectangle.png + 16-actions-tool_rounded_rectangle.png + 16-actions-tool_spraycan.png + 16-actions-tool_text.png + 22-actions-tool_brush.png + 22-actions-tool_color_eraser.png + 22-actions-tool_color_picker.png + 22-actions-tool_curve.png + 22-actions-tool_ellipse.png + 22-actions-tool_elliptical_selection.png + 22-actions-tool_eraser.png + 22-actions-tool_flood_fill.png + 22-actions-tool_free_form_selection.png + 22-actions-tool_line.png + 22-actions-tool_pen.png + 22-actions-tool_polygon.png + 22-actions-tool_polyline.png + 22-actions-tool_rect_selection.png + 22-actions-tool_rectangle.png + 22-actions-tool_rounded_rectangle.png + 22-actions-tool_spraycan.png + 22-actions-tool_text.png + 32-actions-tool_brush.png + 32-actions-tool_color_eraser.png + 32-actions-tool_color_picker.png + 32-actions-tool_curve.png + 32-actions-tool_ellipse.png + 32-actions-tool_elliptical_selection.png + 32-actions-tool_eraser.png + 32-actions-tool_flood_fill.png + 32-actions-tool_free_form_selection.png + 32-actions-tool_line.png + 32-actions-tool_pen.png + 32-actions-tool_polygon.png + 32-actions-tool_polyline.png + 32-actions-tool_rect_selection.png + 32-actions-tool_rectangle.png + 32-actions-tool_rounded_rectangle.png + 32-actions-tool_spraycan.png + 32-actions-tool_text.png + 48-actions-tool_brush.png + 48-actions-tool_color_eraser.png + 48-actions-tool_color_picker.png + 48-actions-tool_curve.png + 48-actions-tool_ellipse.png + 48-actions-tool_elliptical_selection.png + 48-actions-tool_eraser.png + 48-actions-tool_flood_fill.png + 48-actions-tool_free_form_selection.png + 48-actions-tool_line.png + 48-actions-tool_pen.png + 48-actions-tool_polygon.png + 48-actions-tool_polyline.png + 48-actions-tool_rect_selection.png + 48-actions-tool_rectangle.png + 48-actions-tool_rounded_rectangle.png + 48-actions-tool_spraycan.png + 48-actions-tool_text.png + sc-actions-tool_brush.svgz + sc-actions-tool_color_eraser.svgz + sc-actions-tool_color_picker.svgz + sc-actions-tool_curve.svgz + sc-actions-tool_ellipse.svgz + sc-actions-tool_elliptical_selection.svgz + sc-actions-tool_eraser.svgz + sc-actions-tool_flood_fill.svgz + sc-actions-tool_free_form_selection.svgz + sc-actions-tool_line.svgz + sc-actions-tool_pen.svgz + sc-actions-tool_polygon.svgz + sc-actions-tool_polyline.svgz + sc-actions-tool_rect_selection.svgz + sc-actions-tool_rectangle.svgz + sc-actions-tool_rounded_rectangle.svgz + sc-actions-tool_spraycan.svgz + sc-actions-tool_text.svgz + DESTINATION ${KDE_INSTALL_DATADIR}/kolourpaint/icons + THEME hicolor +) diff --git a/pics/action/sc-actions-tool_brush.svgz b/pics/action/sc-actions-tool_brush.svgz new file mode 100644 index 0000000..4848fad Binary files /dev/null and b/pics/action/sc-actions-tool_brush.svgz differ diff --git a/pics/action/sc-actions-tool_color_eraser.svgz b/pics/action/sc-actions-tool_color_eraser.svgz new file mode 100644 index 0000000..e3b93a3 Binary files /dev/null and b/pics/action/sc-actions-tool_color_eraser.svgz differ diff --git a/pics/action/sc-actions-tool_color_picker.svgz b/pics/action/sc-actions-tool_color_picker.svgz new file mode 100644 index 0000000..e680a1a Binary files /dev/null and b/pics/action/sc-actions-tool_color_picker.svgz differ diff --git a/pics/action/sc-actions-tool_curve.svgz b/pics/action/sc-actions-tool_curve.svgz new file mode 100644 index 0000000..9aaa3e7 Binary files /dev/null and b/pics/action/sc-actions-tool_curve.svgz differ diff --git a/pics/action/sc-actions-tool_ellipse.svgz b/pics/action/sc-actions-tool_ellipse.svgz new file mode 100644 index 0000000..c57a0e6 Binary files /dev/null and b/pics/action/sc-actions-tool_ellipse.svgz differ diff --git a/pics/action/sc-actions-tool_elliptical_selection.svgz b/pics/action/sc-actions-tool_elliptical_selection.svgz new file mode 100644 index 0000000..63c3280 Binary files /dev/null and b/pics/action/sc-actions-tool_elliptical_selection.svgz differ diff --git a/pics/action/sc-actions-tool_eraser.svgz b/pics/action/sc-actions-tool_eraser.svgz new file mode 100644 index 0000000..d741594 Binary files /dev/null and b/pics/action/sc-actions-tool_eraser.svgz differ diff --git a/pics/action/sc-actions-tool_flood_fill.svgz b/pics/action/sc-actions-tool_flood_fill.svgz new file mode 100644 index 0000000..11cd796 Binary files /dev/null and b/pics/action/sc-actions-tool_flood_fill.svgz differ diff --git a/pics/action/sc-actions-tool_free_form_selection.svgz b/pics/action/sc-actions-tool_free_form_selection.svgz new file mode 100644 index 0000000..768eec8 Binary files /dev/null and b/pics/action/sc-actions-tool_free_form_selection.svgz differ diff --git a/pics/action/sc-actions-tool_line.svgz b/pics/action/sc-actions-tool_line.svgz new file mode 100644 index 0000000..6222482 Binary files /dev/null and b/pics/action/sc-actions-tool_line.svgz differ diff --git a/pics/action/sc-actions-tool_pen.svgz b/pics/action/sc-actions-tool_pen.svgz new file mode 100644 index 0000000..0dfdd29 Binary files /dev/null and b/pics/action/sc-actions-tool_pen.svgz differ diff --git a/pics/action/sc-actions-tool_polygon.svgz b/pics/action/sc-actions-tool_polygon.svgz new file mode 100644 index 0000000..d7358c9 Binary files /dev/null and b/pics/action/sc-actions-tool_polygon.svgz differ diff --git a/pics/action/sc-actions-tool_polyline.svgz b/pics/action/sc-actions-tool_polyline.svgz new file mode 100644 index 0000000..96ba22e Binary files /dev/null and b/pics/action/sc-actions-tool_polyline.svgz differ diff --git a/pics/action/sc-actions-tool_rect_selection.svgz b/pics/action/sc-actions-tool_rect_selection.svgz new file mode 100644 index 0000000..ddb1a27 Binary files /dev/null and b/pics/action/sc-actions-tool_rect_selection.svgz differ diff --git a/pics/action/sc-actions-tool_rectangle.svgz b/pics/action/sc-actions-tool_rectangle.svgz new file mode 100644 index 0000000..a4f8b15 Binary files /dev/null and b/pics/action/sc-actions-tool_rectangle.svgz differ diff --git a/pics/action/sc-actions-tool_rounded_rectangle.svgz b/pics/action/sc-actions-tool_rounded_rectangle.svgz new file mode 100644 index 0000000..359eed2 Binary files /dev/null and b/pics/action/sc-actions-tool_rounded_rectangle.svgz differ diff --git a/pics/action/sc-actions-tool_spraycan.svgz b/pics/action/sc-actions-tool_spraycan.svgz new file mode 100644 index 0000000..7e7c1ec Binary files /dev/null and b/pics/action/sc-actions-tool_spraycan.svgz differ diff --git a/pics/action/sc-actions-tool_text.svgz b/pics/action/sc-actions-tool_text.svgz new file mode 100644 index 0000000..52d87f8 Binary files /dev/null and b/pics/action/sc-actions-tool_text.svgz differ diff --git a/pics/app/128-apps-kolourpaint.png b/pics/app/128-apps-kolourpaint.png new file mode 100644 index 0000000..b0f2c26 Binary files /dev/null and b/pics/app/128-apps-kolourpaint.png differ diff --git a/pics/app/16-apps-kolourpaint.png b/pics/app/16-apps-kolourpaint.png new file mode 100644 index 0000000..5951eac Binary files /dev/null and b/pics/app/16-apps-kolourpaint.png differ diff --git a/pics/app/22-apps-kolourpaint.png b/pics/app/22-apps-kolourpaint.png new file mode 100644 index 0000000..4e93f63 Binary files /dev/null and b/pics/app/22-apps-kolourpaint.png differ diff --git a/pics/app/32-apps-kolourpaint.png b/pics/app/32-apps-kolourpaint.png new file mode 100644 index 0000000..19ae9bf Binary files /dev/null and b/pics/app/32-apps-kolourpaint.png differ diff --git a/pics/app/48-apps-kolourpaint.png b/pics/app/48-apps-kolourpaint.png new file mode 100644 index 0000000..fa64e2f Binary files /dev/null and b/pics/app/48-apps-kolourpaint.png differ diff --git a/pics/app/CMakeLists.txt b/pics/app/CMakeLists.txt new file mode 100644 index 0000000..86d73e9 --- /dev/null +++ b/pics/app/CMakeLists.txt @@ -0,0 +1,10 @@ +ecm_install_icons(ICONS + 16-apps-kolourpaint.png + 22-apps-kolourpaint.png + 32-apps-kolourpaint.png + 48-apps-kolourpaint.png + 128-apps-kolourpaint.png + sc-apps-kolourpaint.svgz + DESTINATION ${KDE_INSTALL_ICONDIR} + THEME hicolor +) diff --git a/pics/app/sc-apps-kolourpaint.svgz b/pics/app/sc-apps-kolourpaint.svgz new file mode 100644 index 0000000..8b5a63b Binary files /dev/null and b/pics/app/sc-apps-kolourpaint.svgz differ diff --git a/pics/custom/color_transparent_26x26.png b/pics/custom/color_transparent_26x26.png new file mode 100644 index 0000000..7dafc0c Binary files /dev/null and b/pics/custom/color_transparent_26x26.png differ diff --git a/pics/custom/colorbutton_swap_16x16.png b/pics/custom/colorbutton_swap_16x16.png new file mode 100644 index 0000000..b135272 Binary files /dev/null and b/pics/custom/colorbutton_swap_16x16.png differ diff --git a/pics/custom/image_rotate_anticlockwise.png b/pics/custom/image_rotate_anticlockwise.png new file mode 100644 index 0000000..a8b80c6 Binary files /dev/null and b/pics/custom/image_rotate_anticlockwise.png differ diff --git a/pics/custom/image_rotate_clockwise.png b/pics/custom/image_rotate_clockwise.png new file mode 100644 index 0000000..cd1e00b Binary files /dev/null and b/pics/custom/image_rotate_clockwise.png differ diff --git a/pics/custom/image_skew_horizontal.png b/pics/custom/image_skew_horizontal.png new file mode 100644 index 0000000..b6c3906 Binary files /dev/null and b/pics/custom/image_skew_horizontal.png differ diff --git a/pics/custom/image_skew_vertical.png b/pics/custom/image_skew_vertical.png new file mode 100644 index 0000000..7c6fad9 Binary files /dev/null and b/pics/custom/image_skew_vertical.png differ diff --git a/pics/custom/option_opaque.png b/pics/custom/option_opaque.png new file mode 100644 index 0000000..6c88cb4 Binary files /dev/null and b/pics/custom/option_opaque.png differ diff --git a/pics/custom/option_transparent.png b/pics/custom/option_transparent.png new file mode 100644 index 0000000..e865414 Binary files /dev/null and b/pics/custom/option_transparent.png differ diff --git a/pics/custom/resize.png b/pics/custom/resize.png new file mode 100644 index 0000000..ef25380 Binary files /dev/null and b/pics/custom/resize.png differ diff --git a/pics/custom/scale.png b/pics/custom/scale.png new file mode 100644 index 0000000..6941475 Binary files /dev/null and b/pics/custom/scale.png differ diff --git a/pics/custom/smooth_scale.png b/pics/custom/smooth_scale.png new file mode 100644 index 0000000..e2b590c Binary files /dev/null and b/pics/custom/smooth_scale.png differ diff --git a/pics/custom/tool_spraycan_17x17.png b/pics/custom/tool_spraycan_17x17.png new file mode 100644 index 0000000..9eb481d Binary files /dev/null and b/pics/custom/tool_spraycan_17x17.png differ diff --git a/pics/custom/tool_spraycan_29x29.png b/pics/custom/tool_spraycan_29x29.png new file mode 100644 index 0000000..686794d Binary files /dev/null and b/pics/custom/tool_spraycan_29x29.png differ diff --git a/pics/custom/tool_spraycan_9x9.png b/pics/custom/tool_spraycan_9x9.png new file mode 100644 index 0000000..06c8639 Binary files /dev/null and b/pics/custom/tool_spraycan_9x9.png differ diff --git a/pixmapfx/kpPixmapFX.h b/pixmapfx/kpPixmapFX.h new file mode 100644 index 0000000..7c4f3b6 --- /dev/null +++ b/pixmapfx/kpPixmapFX.h @@ -0,0 +1,249 @@ + +// REFACTOR: Split this class into one for each distinct functionality category +// (e.g. effects, mask operations)? + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_PIXMAP_FX_H +#define KP_PIXMAP_FX_H + + +#include +#include + +#include + +#include "imagelib/kpColor.h" + + +class QColor; +class QImage; +class QTransform; +class QPen; +class QImage; +class QPoint; +class QPolygon; +class QRect; + + + + +// +// QPixmap (view) Manipulation. +// +// Anything that is supposed to be manipulating the document contents +// (i.e. kpImage), should be moved to kpPainter. +// +// kpPainter uses us for its Qt backend but we don't use kpPainter. +// TODO: We should not use kpColor nor kpImage for the same reason. +// +class kpPixmapFX +{ +// +// Get/Set Parts of Pixmap +// + +public: + + // + // Returns the pixel and mask data found at the in . + // + static QImage getPixmapAt (const QImage &pm, const QRect &rect); + + // + // Sets the pixel and mask data at in <*destPixmapPtr> + // to . Neither 's width nor height are allowed + // to be bigger than 's (you can't copy more than you have). + // On the other hand, you can copy less than the size of + // - no scaling is done. + // + static void setPixmapAt (QImage *destPixmapPtr, const QRect &destRect, + const QImage &srcPixmap); + + // + // Sets the pixel and mask data at the rectangle in <*destPixmapPtr>, + // with the top-left and dimensions , + // to . + // + static void setPixmapAt (QImage *destPixmapPtr, const QPoint &destAt, + const QImage &srcPixmap); + static void setPixmapAt (QImage *destPixmapPtr, int destX, int destY, + const QImage &srcPixmap); + + // + // Draws on top of <*destPixmapPtr> at . + // The mask of <*destPixmapPtr> is adjusted so that all opaque + // pixels in will be opaque in <*destPixmapPtr>. + // + static void paintPixmapAt (QImage *destPixmapPtr, const QPoint &destAt, + const QImage &srcPixmap); + static void paintPixmapAt (QImage *destPixmapPtr, int destX, int destY, + const QImage &srcPixmap); + + // + // Returns the colour of the pixel at in . + // If the pixel is transparent, a value is returned such that + // kpTool::isColorTransparent() will return true. + // + static kpColor getColorAtPixel (const QImage &pm, const QPoint &at); + static kpColor getColorAtPixel (const QImage &pm, int x, int y); + +// +// Transforms +// + +public: + + // + // Resizes an image to the given width and height, + // filling any new areas with . + // + static void resize (QImage *destPtr, int w, int h, + const kpColor &backgroundColor); + static QImage resize (const QImage &pm, int w, int h, + const kpColor &backgroundColor); + + // + // Scales an image to the given width and height. + // If is true, a smooth scale will be used. + // + static void scale (QImage *destPtr, int w, int h, bool pretty = false); + static QImage scale (const QImage &pm, int w, int h, bool pretty = false); + + + // The minimum difference between 2 angles (in degrees) such that they are + // considered different. This gives you at least enough precision to + // rotate an image whose width <= 10000 such that its height increases + // by just 1 (and similarly with height <= 10000 and width). + // + // Currently used for skew & rotate operations. + static const double AngleInDegreesEpsilon; + + + // + // Skews an image. + // + // horizontal angle clockwise (-90 < x < 90) + // vertical angle clockwise (-90 < x < 90) + // color to fill new areas with + // if > 0, the desired width of the resultant pixmap + // if > 0, the desired height of the resultant pixmap + // + // Using & to generate preview pixmaps is + // significantly more efficient than skewing and then scaling yourself. + // + static QTransform skewMatrix (int width, int height, double hangle, double vangle); + static QTransform skewMatrix (const QImage &pixmap, double hangle, double vangle); + + static void skew (QImage *destPixmapPtr, double hangle, double vangle, + const kpColor &backgroundColor, + int targetWidth = -1, int targetHeight = -1); + static QImage skew (const QImage &pm, double hangle, double vangle, + const kpColor &backgroundColor, + int targetWidth = -1, int targetHeight = -1); + + // + // Rotates an image. + // + // clockwise angle to rotate by + // color to fill new areas with + // if > 0, the desired width of the resultant pixmap + // if > 0, the desired height of the resultant pixmap + // + // Using & to generate preview pixmaps is + // significantly more efficient than rotating and then scaling yourself. + // + static QTransform rotateMatrix (int width, int height, double angle); + static QTransform rotateMatrix (const QImage &pixmap, double angle); + + static bool isLosslessRotation (double angle); + + static void rotate (QImage *destPixmapPtr, double angle, + const kpColor &backgroundColor, + int targetWidth = -1, int targetHeight = -1); + static QImage rotate (const QImage &pm, double angle, + const kpColor &backgroundColor, + int targetWidth = -1, int targetHeight = -1); + +// +// Drawing Shapes +// + +public: + + // Returns a pen suitable for drawing a rectangle with 90 degree + // corners ("MiterJoin"). This is necessary since Qt4 defaults to + // "BevelJoin". is passed straight to QPen without modification. + static QPen QPainterDrawRectPen (const QColor &color, int qtWidth); + + // Returns a pen suitable for drawing lines / polylines / polygons / + // curves with rounded corners. This is necessary since Qt4 defaults + // to square corners ("SquareCap") and "BevelJoin". + // is passed straight to QPen without modification. + static QPen QPainterDrawLinePen (const QColor &color, int qtWidth); + + static bool Only1PixelInPointArray(const QPolygon &points); + + // Draws a line from (x1,y1) to (x2,y2) onto , with + // and . The corners are rounded and centred at those + // coordinates so if > 1, the line is likely to extend past + // a rectangle with those corners. + // + // If is valid, it draws a stippled line alternating + // between long strips of and short strips of . + static void drawPolyline (QImage *image, + const QPolygon &points, + const kpColor &color, int penWidth, + const kpColor &stippleColor = kpColor::Invalid); + + // = shape completed else drawing but haven't finalised. + // If not , the edge that would form the closure, if the + // shape were finalised now, is highlighted specially. + // + // Odd-even fill. + static void drawPolygon (QImage *image, + const QPolygon &points, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor = kpColor::Invalid, + bool isFinal = true, + const kpColor &fStippleColor = kpColor::Invalid); + + static void fillRect (QImage *image, + int x, int y, int width, int height, + const kpColor &color, + const kpColor &stippleColor = kpColor::Invalid); + + static void drawStippleRect(QImage *image, + int x, int y, int width, int height, + const kpColor &fcolor, + const kpColor &fStippleColor); + +}; + + +#endif // KP_PIXMAP_FX_H diff --git a/pixmapfx/kpPixmapFX_DrawShapes.cpp b/pixmapfx/kpPixmapFX_DrawShapes.cpp new file mode 100644 index 0000000..6e164e1 --- /dev/null +++ b/pixmapfx/kpPixmapFX_DrawShapes.cpp @@ -0,0 +1,285 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_PIXMAP_FX 0 + + +#include "kpPixmapFX.h" + + +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "imagelib/kpColor.h" +#include "kpDefs.h" + +//--------------------------------------------------------------------- + +// Returns whether there is only 1 distinct point in . +bool kpPixmapFX::Only1PixelInPointArray (const QPolygon &points) +{ + if (points.count () == 0) { + return false; + } + + for (int i = 1; i < static_cast (points.count ()); i++) + { + if (points [i] != points [0]) { + return false; + } + } + + return true; +} + +//--------------------------------------------------------------------- + +// Warp the given from 1 to 0. +// This is not always done (specifically if ) because +// width 0 sometimes looks worse. +// +// Qt lines of width 1 look like they have a width between 1-2 i.e.: +// +// # +// ## +// # +// # +// +// compared to Qt's special "width 0" which just means a "proper" width 1: +// +// # +// # +// # +// # +// +static int WidthToQPenWidth (int width, bool drawingEllipse = false) +{ + if (width == 1) + { + // 3x10 ellipse with Qt width 0 looks like rectangle. + // Therefore, do not apply this 1 -> 0 transformations for ellipses. + if (!drawingEllipse) + { + // Closer to looking width 1, for lines at least. + return 0; + } + } + + return width; +} + +//--------------------------------------------------------------------- + +static void QPainterSetPenWithStipple (QPainter *p, + const kpColor &fColor, + int penWidth, + const kpColor &fStippleColor = kpColor::Invalid, + bool isEllipseLike = false) +{ + if (!fStippleColor.isValid ()) + { + p->setPen ( + kpPixmapFX::QPainterDrawLinePen ( + fColor.toQColor(), + ::WidthToQPenWidth (penWidth, isEllipseLike))); + } + else + { + QPen usePen = kpPixmapFX::QPainterDrawLinePen ( + fColor.toQColor(), + ::WidthToQPenWidth (penWidth, isEllipseLike)); + usePen.setStyle (Qt::DashLine); + p->setPen (usePen); + + p->setBackground (fStippleColor.toQColor()); + p->setBackgroundMode (Qt::OpaqueMode); + } +} + +//--------------------------------------------------------------------- + +// public static +QPen kpPixmapFX::QPainterDrawRectPen (const QColor &color, int qtWidth) +{ + return QPen (color, qtWidth, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin); +} + +//--------------------------------------------------------------------- + +// public static +QPen kpPixmapFX::QPainterDrawLinePen (const QColor &color, int qtWidth) +{ + return QPen (color, qtWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); +} + +//--------------------------------------------------------------------- +// +// drawPolyline() / drawLine() +// + +// public static +void kpPixmapFX::drawPolyline (QImage *image, + const QPolygon &points, + const kpColor &color, int penWidth, + const kpColor &stippleColor) +{ + QPainter painter(image); + + ::QPainterSetPenWithStipple(&painter, + color, penWidth, + stippleColor); + + // Qt bug: single point doesn't show up depending on penWidth. + if (Only1PixelInPointArray(points)) + { + #if DEBUG_KP_PIXMAP_FX + qCDebug(kpLogPixmapfx) << "\tinvoking single point hack"; + #endif + painter.drawPoint(points[0]); + return; + } + + painter.drawPolyline(points); +} + +//--------------------------------------------------------------------- +// +// drawPolygon() +// + +// public static +void kpPixmapFX::drawPolygon (QImage *image, + const QPolygon &points, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + bool isFinal, + const kpColor &fStippleColor) +{ + QPainter p(image); + + ::QPainterSetPenWithStipple (&p, + fcolor, penWidth, + fStippleColor); + + if (bcolor.isValid ()) { + p.setBrush (QBrush (bcolor.toQColor())); + } + // HACK: seems to be needed if set_Pen_(Qt::color0) else fills with Qt::color0. + else { + p.setBrush (Qt::NoBrush); + } + + // Qt bug: single point doesn't show up depending on penWidth. + if (Only1PixelInPointArray (points)) + { + #if DEBUG_KP_PIXMAP_FX + qCDebug(kpLogPixmapfx) << "\tinvoking single point hack"; + #endif + p.drawPoint(points [0]); + return; + } + + // TODO: why aren't the ends rounded? + p.drawPolygon(points, Qt::OddEvenFill); + + if ( isFinal ) { + return; + } + + if ( points.count() <= 2 ) { + return; + } + + p.setCompositionMode(QPainter::RasterOp_SourceXorDestination); + p.setPen(QPen(Qt::white)); + p.drawLine(points[0], points[points.count() - 1]); +} + +//--------------------------------------------------------------------- +// public static + +void kpPixmapFX::fillRect (QImage *image, + int x, int y, int width, int height, + const kpColor &color, + const kpColor &stippleColor) +{ + QPainter painter(image); + + if (!stippleColor.isValid ()) + { + painter.fillRect (x, y, width, height, color.toQColor()); + } + else + { + const int StippleSize = 4; + + painter.setClipRect (x, y, width, height); + + for (int dy = 0; dy < height; dy += StippleSize) + { + for (int dx = 0; dx < width; dx += StippleSize) + { + const bool parity = ((dy + dx) / StippleSize) % 2; + + kpColor useColor; + if (!parity) { + useColor = color; + } + else { + useColor = stippleColor; + } + + painter.fillRect (x + dx, y + dy, StippleSize, StippleSize, useColor.toQColor()); + } + } + + } +} + +//--------------------------------------------------------------------- + +void kpPixmapFX::drawStippleRect(QImage *image, + int x, int y, int width, int height, + const kpColor &fColor, + const kpColor &fStippleColor) +{ + QPainter painter(image); + + painter.setPen(QPen(fColor.toQColor(), 1, Qt::DashLine)); + painter.setBackground(fStippleColor.toQColor()); + painter.setBackgroundMode(Qt::OpaqueMode); + painter.drawRect(x, y, width - 1, height - 1); +} + +//--------------------------------------------------------------------- diff --git a/pixmapfx/kpPixmapFX_GetSetPixmapParts.cpp b/pixmapfx/kpPixmapFX_GetSetPixmapParts.cpp new file mode 100644 index 0000000..2c28747 --- /dev/null +++ b/pixmapfx/kpPixmapFX_GetSetPixmapParts.cpp @@ -0,0 +1,142 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_PIXMAP_FX 0 + + +#include "kpPixmapFX.h" + + +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include "imagelib/kpColor.h" + +//--------------------------------------------------------------------- + +// public static +QImage kpPixmapFX::getPixmapAt (const QImage &image, const QRect &rect) +{ + return image.copy(rect); +} + +//--------------------------------------------------------------------- + +// public static +void kpPixmapFX::setPixmapAt(QImage *destPtr, const QRect &destRect, + const QImage &src) +{ +#if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "kpPixmapFX::setPixmapAt(destPixmap->rect=" + << destPtr->rect () + << ",destRect=" + << destRect + << ",src.rect=" + << src.rect () + << ")"; +#endif + + Q_ASSERT (destPtr); + + // You cannot copy more than what you have. + Q_ASSERT (destRect.width () <= src.width () && + destRect.height () <= src.height ()); + + QPainter painter(destPtr); + // destination shall be source only + painter.setCompositionMode(QPainter::CompositionMode_Source); + painter.drawImage(destRect.topLeft(), src, QRect(0, 0, destRect.width(), destRect.height())); +} + +//--------------------------------------------------------------------- + +// public static +void kpPixmapFX::setPixmapAt (QImage *destPtr, const QPoint &destAt, + const QImage &src) +{ + kpPixmapFX::setPixmapAt (destPtr, + QRect (destAt.x (), destAt.y (), + src.width (), src.height ()), + src); +} + +//--------------------------------------------------------------------- + +// public static +void kpPixmapFX::setPixmapAt (QImage *destPtr, int destX, int destY, + const QImage &src) +{ + kpPixmapFX::setPixmapAt (destPtr, QPoint (destX, destY), src); +} + +//--------------------------------------------------------------------- + +// public static +void kpPixmapFX::paintPixmapAt (QImage *destPtr, const QPoint &destAt, + const QImage &src) +{ + // draw image with SourceOver composition mode + QPainter painter(destPtr); + painter.drawImage(destAt, src); +} + +//--------------------------------------------------------------------- + +// public static +void kpPixmapFX::paintPixmapAt (QImage *destPtr, int destX, int destY, + const QImage &src) +{ + kpPixmapFX::paintPixmapAt(destPtr, QPoint (destX, destY), src); +} + +//--------------------------------------------------------------------- + +// public static +kpColor kpPixmapFX::getColorAtPixel (const QImage &img, const QPoint &at) +{ + if (!img.valid (at.x (), at.y ())) { + return kpColor::Invalid; + } + + QRgb rgba = img.pixel(at); + return kpColor (rgba); +} + +//--------------------------------------------------------------------- + +// public static +kpColor kpPixmapFX::getColorAtPixel (const QImage &img, int x, int y) +{ + return kpPixmapFX::getColorAtPixel (img, QPoint (x, y)); +} + +//--------------------------------------------------------------------- diff --git a/pixmapfx/kpPixmapFX_Transforms.cpp b/pixmapfx/kpPixmapFX_Transforms.cpp new file mode 100644 index 0000000..083c66d --- /dev/null +++ b/pixmapfx/kpPixmapFX_Transforms.cpp @@ -0,0 +1,669 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_PIXMAP_FX 0 + + +#include "kpPixmapFX.h" + +#include + +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "imagelib/kpColor.h" +#include "kpDefs.h" + +//--------------------------------------------------------------------- + +// public static +void kpPixmapFX::resize (QImage *destPtr, int w, int h, + const kpColor &backgroundColor) +{ +#if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "kpPixmapFX::resize()"; +#endif + + if (!destPtr) { + return; + } + + const int oldWidth = destPtr->width (); + const int oldHeight = destPtr->height (); + + if (w == oldWidth && h == oldHeight) { + return; + } + + QImage newImage (w, h, QImage::Format_ARGB32_Premultiplied); + + // Would have new undefined areas? + if (w > oldWidth || h > oldHeight) { + newImage.fill (backgroundColor.toQRgb ()); + } + + // Copy over old pixmap. + QPainter painter(&newImage); + painter.setCompositionMode(QPainter::CompositionMode_Source); + painter.drawImage(0, 0, *destPtr); + painter.end(); + + // Replace pixmap with new one. + *destPtr = newImage; +} + +//--------------------------------------------------------------------- + +// public static +QImage kpPixmapFX::resize (const QImage &image, int w, int h, + const kpColor &backgroundColor) +{ + QImage ret = image; + kpPixmapFX::resize (&ret, w, h, backgroundColor); + return ret; +} + +//--------------------------------------------------------------------- + +// public static +void kpPixmapFX::scale (QImage *destPtr, int w, int h, bool pretty) +{ + if (!destPtr) { + return; + } + + *destPtr = kpPixmapFX::scale (*destPtr, w, h, pretty); +} + +//--------------------------------------------------------------------- + +// public static +QImage kpPixmapFX::scale (const QImage &image, int w, int h, bool pretty) +{ +#if DEBUG_KP_PIXMAP_FX && 0 + qCDebug(kpLogPixmapfx) << "kpPixmapFX::scale(oldRect=" << image.rect () + << ",w=" << w + << ",h=" << h + << ",pretty=" << pretty + << ")"; +#endif + + if (w == image.width () && h == image.height ()) { + return image; + } + + return image.scaled(w, h, Qt::IgnoreAspectRatio, + pretty ? Qt::SmoothTransformation : Qt::FastTransformation); +} + +//--------------------------------------------------------------------- + +// public static +const double kpPixmapFX::AngleInDegreesEpsilon = + qRadiansToDegrees (std::tan (1.0 / 10000.0)) + / (2.0/*max error allowed*/ * 2.0/*for good measure*/); + + +static void MatrixDebug (const QString& matrixName, const QTransform &matrix, + int srcPixmapWidth = -1, int srcPixmapHeight = -1) +{ +#if DEBUG_KP_PIXMAP_FX + const int w = srcPixmapWidth, h = srcPixmapHeight; + + qCDebug(kpLogPixmapfx) << matrixName << "=" << matrix; + // Sometimes this precision lets us see unexpected rounding errors. + fprintf (stderr, "m11=%.24f m12=%.24f m21=%.24f m22=%.24f dx=%.24f dy=%.24f\n", + matrix.m11 (), matrix.m12 (), + matrix.m21 (), matrix.m22 (), + matrix.dx (), matrix.dy ()); + if (w > 0 && h > 0) + { + qCDebug(kpLogPixmapfx) << "(0,0) ->" << matrix.map (QPoint (0, 0)); + qCDebug(kpLogPixmapfx) << "(w-1,0) ->" << matrix.map (QPoint (w - 1, 0)); + qCDebug(kpLogPixmapfx) << "(0,h-1) ->" << matrix.map (QPoint (0, h - 1)); + qCDebug(kpLogPixmapfx) << "(w-1,h-1) ->" << matrix.map (QPoint (w - 1, h - 1)); + } + +#else + + Q_UNUSED (matrixName); + Q_UNUSED (matrix); + Q_UNUSED (srcPixmapWidth); + Q_UNUSED (srcPixmapHeight); + +#endif // DEBUG_KP_PIXMAP_FX +} + +//--------------------------------------------------------------------- + +// Theoretically, this should act the same as QPixmap::trueMatrix() but +// it doesn't. As an example, if you rotate tests/transforms.png by 90 +// degrees clockwise, this returns the correct of 26 but +// QPixmap::trueMatrix() returns 27. +// +// You should use the returned matrix to map points accurately (e.g. selection +// borders). For QPainter::drawPixmap()/drawImage() + setWorldMatrix() +// rendering accuracy, pass the returned matrix through QPixmap::trueMatrix() +// and use that. +// +// TODO: If you put the flipMatrix() of tests/transforms.png through this, +// the output is the same as QPixmap::trueMatrix(): is one off +// (dy=27 instead of 26). +// SYNC: I bet this is a Qt4 bug. +static QTransform MatrixWithZeroOrigin (const QTransform &matrix, int width, int height) +{ +#if DEBUG_KP_PIXMAP_FX + qCDebug(kpLogPixmapfx) << "matrixWithZeroOrigin(w=" << width << ",h=" << height << ")"; + qCDebug(kpLogPixmapfx) << "\tmatrix: m11=" << matrix.m11 () + << "m12=" << matrix.m12 () + << "m21=" << matrix.m21 () + << "m22=" << matrix.m22 () + << "dx=" << matrix.dx () + << "dy=" << matrix.dy (); +#endif + + QRect mappedRect = matrix.mapRect (QRect (0, 0, width, height)); +#if DEBUG_KP_PIXMAP_FX + qCDebug(kpLogPixmapfx) << "\tmappedRect=" << mappedRect; +#endif + + QTransform translatedMatrix ( + matrix.m11 (), matrix.m12 (), + matrix.m21 (), matrix.m22 (), + matrix.dx () - mappedRect.left (), matrix.dy () - mappedRect.top ()); + +#if DEBUG_KP_PIXMAP_FX + qCDebug(kpLogPixmapfx) << "\treturning" << translatedMatrix; + qCDebug(kpLogPixmapfx) << "(0,0) ->" << translatedMatrix.map (QPoint (0, 0)); + qCDebug(kpLogPixmapfx) << "(w-1,0) ->" << translatedMatrix.map (QPoint (width - 1, 0)); + qCDebug(kpLogPixmapfx) << "(0,h-1) ->" << translatedMatrix.map (QPoint (0, height - 1)); + qCDebug(kpLogPixmapfx) << "(w-1,h-1) ->" << translatedMatrix.map (QPoint (width - 1, height - 1)); +#endif + + return translatedMatrix; +} + +//--------------------------------------------------------------------- + +static double TrueMatrixEpsilon = 0.000001; + +// An attempt to reverse tiny rounding errors introduced by QPixmap::trueMatrix() +// when skewing tests/transforms.png by 45% horizontally (with TransformPixmap() +// using a QPixmap painter, prior to the 2007-10-09 change -- did not test after +// the change). +// Unfortunately, this does not work enough to stop the rendering errors +// that follow. But it was worth a try and might still help us given the +// sometimes excessive aliasing QPainter::draw{Pixmap,Image}() gives us, when +// QPainter::SmoothPixmapTransform is disabled. +static double TrueMatrixFixInts (double x) +{ + if (std::fabs (x - qRound (x)) < TrueMatrixEpsilon) { + return qRound (x); + } + + return x; +} + +//--------------------------------------------------------------------- + +static QTransform TrueMatrix (const QTransform &matrix, int srcPixmapWidth, int srcPixmapHeight) +{ + ::MatrixDebug (QStringLiteral("TrueMatrix(): org"), matrix); + + const QTransform truMat = QPixmap::trueMatrix (matrix, srcPixmapWidth, srcPixmapHeight); + ::MatrixDebug (QStringLiteral("TrueMatrix(): passed through QPixmap::trueMatrix()"), truMat); + + const QTransform retMat ( + ::TrueMatrixFixInts (truMat.m11 ()), + ::TrueMatrixFixInts (truMat.m12 ()), + ::TrueMatrixFixInts (truMat.m21 ()), + ::TrueMatrixFixInts (truMat.m22 ()), + ::TrueMatrixFixInts (truMat.dx ()), + ::TrueMatrixFixInts (truMat.dy ())); + ::MatrixDebug (QStringLiteral("TrueMatrix(): fixed ints"), retMat); + + return retMat; +} + +//--------------------------------------------------------------------- + +// Like QPixmap::transformed() but fills new areas with +// (unless is invalid) and works around internal QTransform +// floating point -> integer oddities, that would otherwise give fatally +// incorrect results. If you don't believe me on this latter point, compare +// QPixmap::transformed() to us using a flip matrix or a rotate-by-multiple-of-90 +// matrix on tests/transforms.png -- QPixmap::transformed()'s output is 1 +// pixel too high or low depending on whether the matrix is passed through +// QPixmap::trueMatrix(). +// +// Use and to specify the intended output size +// of the pixmap. -1 if don't care. +static QImage TransformPixmap (const QImage &pm, const QTransform &transformMatrix_, + const kpColor &backgroundColor, + int targetWidth, int targetHeight) +{ + QTransform transformMatrix = transformMatrix_; + +#if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "kppixmapfx.cpp: TransformPixmap(pm.size=" << pm.size () + << ",targetWidth=" << targetWidth + << ",targetHeight=" << targetHeight + << ")"; +#endif + + QRect newRect = transformMatrix.mapRect (pm.rect ()); +#if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "\tmappedRect=" << newRect; + +#endif + + QTransform scaleMatrix; + if (targetWidth > 0 && targetWidth != newRect.width ()) + { + #if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "\tadjusting for targetWidth"; + #endif + scaleMatrix.scale (double (targetWidth) / double (newRect.width ()), 1); + } + + if (targetHeight > 0 && targetHeight != newRect.height ()) + { + #if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "\tadjusting for targetHeight"; + #endif + scaleMatrix.scale (1, double (targetHeight) / double (newRect.height ())); + } + + if (!scaleMatrix.isIdentity ()) + { + #if DEBUG_KP_PIXMAP_FX && 1 + // TODO: What is going on here??? Why isn't matrix * working properly? + QTransform wrongMatrix = transformMatrix * scaleMatrix; + QTransform oldHat = transformMatrix; + + if (targetWidth > 0 && targetWidth != newRect.width ()) { + oldHat.scale (double (targetWidth) / double (newRect.width ()), 1); + } + if (targetHeight > 0 && targetHeight != newRect.height ()) { + oldHat.scale (1, double (targetHeight) / double (newRect.height ())); + } + + QTransform altHat = transformMatrix; + + altHat.scale ((targetWidth > 0 && targetWidth != newRect.width ()) ? double (targetWidth) / double (newRect.width ()) : 1, + (targetHeight > 0 && targetHeight != newRect.height ()) ? double (targetHeight) / double (newRect.height ()) : 1); + QTransform correctMatrix = scaleMatrix * transformMatrix; + + qCDebug(kpLogPixmapfx) << "\tsupposedlyWrongMatrix: m11=" << wrongMatrix.m11 () // <<<---- this is the correct matrix??? + << " m12=" << wrongMatrix.m12 () + << " m21=" << wrongMatrix.m21 () + << " m22=" << wrongMatrix.m22 () + << " dx=" << wrongMatrix.dx () + << " dy=" << wrongMatrix.dy () + << " rect=" << wrongMatrix.mapRect (pm.rect ()) + << "\n" + << "\ti_used_to_use_thisMatrix: m11=" << oldHat.m11 () + << " m12=" << oldHat.m12 () + << " m21=" << oldHat.m21 () + << " m22=" << oldHat.m22 () + << " dx=" << oldHat.dx () + << " dy=" << oldHat.dy () + << " rect=" << oldHat.mapRect (pm.rect ()) + << "\n" + << "\tabove but scaled at the same time: m11=" << altHat.m11 () + << " m12=" << altHat.m12 () + << " m21=" << altHat.m21 () + << " m22=" << altHat.m22 () + << " dx=" << altHat.dx () + << " dy=" << altHat.dy () + << " rect=" << altHat.mapRect (pm.rect ()) + << "\n" + << "\tsupposedlyCorrectMatrix: m11=" << correctMatrix.m11 () + << " m12=" << correctMatrix.m12 () + << " m21=" << correctMatrix.m21 () + << " m22=" << correctMatrix.m22 () + << " dx=" << correctMatrix.dx () + << " dy=" << correctMatrix.dy () + << " rect=" << correctMatrix.mapRect (pm.rect ()); + #endif + + transformMatrix = transformMatrix * scaleMatrix; + + newRect = transformMatrix.mapRect (pm.rect ()); + #if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "\tnewRect after targetWidth,targetHeight adjust=" << newRect; + #endif + } + + + ::MatrixDebug (QStringLiteral("TransformPixmap(): before trueMatrix"), transformMatrix, + pm.width (), pm.height ()); +#if DEBUG_KP_PIXMAP_FX && 1 + QMatrix oldMatrix = transformMatrix; +#endif + + // Translate the matrix to account for Qt rounding errors, + // so that flipping (if it used this method) and rotating by a multiple + // of 90 degrees actually work as expected (try tests/transforms.png). + // + // SYNC: This was not required with Qt3 so we are actually working + // around a Qt4 bug/feature. + // + // COMPAT: Qt4's rendering with a matrix enabled is low quality anyway + // but does this reduce quality even further? + // + // With or without it, skews by 45 degrees with the QImage + // painter below look bad (with it, you get an extra transparent + // line on the right; without, you get only about 1/4 of a source + // line on the left). In Qt3, with TrueMatrix(), the source + // image is translated 1 pixel off the destination image. + // + // Also, if you skew a rectangular selection, the skewed selection + // border does not line up with the skewed image data. + // TODO: do we need to pass through this new matrix? + transformMatrix = ::TrueMatrix (transformMatrix, + pm.width (), pm.height ()); + +#if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "trueMatrix changed matrix?" << (oldMatrix == transformMatrix); +#endif + ::MatrixDebug (QStringLiteral("TransformPixmap(): after trueMatrix"), transformMatrix, + pm.width (), pm.height ()); + + + QImage newQImage (targetWidth > 0 ? targetWidth : newRect.width (), + targetHeight > 0 ? targetHeight : newRect.height (), + QImage::Format_ARGB32_Premultiplied); + + if ((targetWidth > 0 && targetWidth != newRect.width ()) || + (targetHeight > 0 && targetHeight != newRect.height ())) + { + #if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "kppixmapfx.cpp: TransformPixmap(pm.size=" << pm.size () + << ",targetWidth=" << targetWidth + << ",targetHeight=" << targetHeight + << ") newRect=" << newRect + << " (you are a victim of rounding error)"; + #endif + } + + +#if DEBUG_KP_PIXMAP_FX && 0 + qCDebug(kpLogPixmapfx) << "\ttranslate top=" << painter.xForm (QPoint (0, 0)); + qCDebug(kpLogPixmapfx) << "\tmatrix: m11=" << painter.worldMatrix ().m11 () + << " m12=" << painter.worldMatrix ().m12 () + << " m21=" << painter.worldMatrix ().m21 () + << " m22=" << painter.worldMatrix ().m22 () + << " dx=" << painter.worldMatrix ().dx () + << " dy=" << painter.worldMatrix ().dy () + << endl; +#endif + + + // Note: Do _not_ use "p.setRenderHints (QPainter::SmoothPixmapTransform);" + // as the user does not want their image to get blurier every + // time they e.g. rotate it (especially important for multiples + // of 90 degrees but also true for every other angle). Being a + // pixel-based program, we generally like to preserve RGB values + // and avoid unnecessary blurs -- in the worst case, we'd rather + // drop pixels, than blur. + QPainter p (&newQImage); + { + // Make sure transparent pixels are drawn into the destination image. + p.setCompositionMode (QPainter::CompositionMode_Source); + + // Fill the entire new image with the background color. + if (backgroundColor.isValid ()) + { + p.fillRect (newQImage.rect (), backgroundColor.toQColor ()); + } + + p.setWorldTransform (transformMatrix); + p.drawImage (QPoint (0, 0), pm); + } + p.end (); + +#if DEBUG_KP_PIXMAP_FX && 1 + qCDebug(kpLogPixmapfx) << "Done"; +#endif + + return newQImage; +} + +//--------------------------------------------------------------------- + +// public static +QTransform kpPixmapFX::skewMatrix (int width, int height, double hangle, double vangle) +{ + if (std::fabs (hangle - 0) < kpPixmapFX::AngleInDegreesEpsilon && + std::fabs (vangle - 0) < kpPixmapFX::AngleInDegreesEpsilon) + { + return {}; + } + + + /* Diagram for completeness :) + * + * |---------- w ----------| + * (0,0) + * _ _______________________ (w,0) + * | |\~_ va | + * | | \ ~_ | + * | |ha\ ~__ | + * | \ ~__ | dy + * h | \ ~___ | + * | \ ~___ | + * | | \ ~___| (w,w*tan(va)=dy) + * | | \ * \ + * _ |________\________|_____|\ vertical shear factor + * (0,h) dx ^~_ | \ | + * | ~_ \________\________ General Point (x,y) V + * | ~__ \ Skewed Point (x + y*tan(ha),y + x*tan(va)) + * (h*tan(ha)=dx,h) ~__ \ ^ + * ~___ \ | + * ~___ \ horizontal shear factor + * Key: ~___\ + * ha = hangle (w + h*tan(ha)=w+dx,h + w*tan(va)=w+dy) + * va = vangle + * + * Skewing really just twists a rectangle into a parallelogram. + * + */ + + //QTransform matrix (1, tan (KP_DEGREES_TO_RADIANS (vangle)), tan (KP_DEGREES_TO_RADIANS (hangle)), 1, 0, 0); + // I think this is clearer than above :) + QTransform matrix; + matrix.shear (std::tan (qDegreesToRadians (hangle)), + std::tan (qDegreesToRadians (vangle))); + + return ::MatrixWithZeroOrigin (matrix, width, height); +} + +//--------------------------------------------------------------------- + +// public static +QTransform kpPixmapFX::skewMatrix (const QImage &pixmap, double hangle, double vangle) +{ + return kpPixmapFX::skewMatrix (pixmap.width (), pixmap.height (), hangle, vangle); +} + +//--------------------------------------------------------------------- + + +// public static +void kpPixmapFX::skew (QImage *destPtr, double hangle, double vangle, + const kpColor &backgroundColor, + int targetWidth, int targetHeight) +{ + if (!destPtr) { + return; + } + + *destPtr = kpPixmapFX::skew (*destPtr, hangle, vangle, + backgroundColor, + targetWidth, targetHeight); +} + +//--------------------------------------------------------------------- + +// public static +QImage kpPixmapFX::skew (const QImage &pm, double hangle, double vangle, + const kpColor &backgroundColor, + int targetWidth, int targetHeight) +{ +#if DEBUG_KP_PIXMAP_FX + qCDebug(kpLogPixmapfx) << "kpPixmapFX::skew() pm.width=" << pm.width () + << " pm.height=" << pm.height () + << " hangle=" << hangle + << " vangle=" << vangle + << " targetWidth=" << targetWidth + << " targetHeight=" << targetHeight; +#endif + + if (std::fabs (hangle - 0) < kpPixmapFX::AngleInDegreesEpsilon && + std::fabs (vangle - 0) < kpPixmapFX::AngleInDegreesEpsilon && + (targetWidth <= 0 && targetHeight <= 0)/*don't want to scale?*/) + { + return pm; + } + + if (std::fabs (hangle) > 90 - kpPixmapFX::AngleInDegreesEpsilon || + std::fabs (vangle) > 90 - kpPixmapFX::AngleInDegreesEpsilon) + { + qCCritical(kpLogPixmapfx) << "kpPixmapFX::skew() passed hangle and/or vangle out of range (-90 < x < 90)"; + return pm; + } + + + QTransform matrix = skewMatrix (pm, hangle, vangle); + + return ::TransformPixmap (pm, matrix, backgroundColor, targetWidth, targetHeight); +} + +//--------------------------------------------------------------------- + + +// public static +QTransform kpPixmapFX::rotateMatrix (int width, int height, double angle) +{ + if (std::fabs (angle - 0) < kpPixmapFX::AngleInDegreesEpsilon) + { + return {}; + } + + QTransform matrix; + matrix.translate (width / 2, height / 2); + matrix.rotate (angle); + + return ::MatrixWithZeroOrigin (matrix, width, height); +} + +//--------------------------------------------------------------------- + +// public static +QTransform kpPixmapFX::rotateMatrix (const QImage &pixmap, double angle) +{ + return kpPixmapFX::rotateMatrix (pixmap.width (), pixmap.height (), angle); +} + +//--------------------------------------------------------------------- + + +// public static +bool kpPixmapFX::isLosslessRotation (double angle) +{ + const double angleIn = angle; + + // Reflect angle into positive if negative + if (angle < 0) { + angle = -angle; + } + + // Remove multiples of 90 to make sure 0 <= angle <= 90 + angle -= (static_cast (angle)) / 90 * 90; + + // "Impossible" situation? + if (angle < 0 || angle > 90) + { + qCCritical(kpLogPixmapfx) << "kpPixmapFX::isLosslessRotation(" << angleIn + << ") result=" << angle; + return false; // better safe than sorry + } + + const bool ret = (angle < kpPixmapFX::AngleInDegreesEpsilon || + 90 - angle < kpPixmapFX::AngleInDegreesEpsilon); +#if DEBUG_KP_PIXMAP_FX + qCDebug(kpLogPixmapfx) << "kpPixmapFX::isLosslessRotation(" << angleIn << ")" + << " residual angle=" << angle + << " returning " << ret; +#endif + return ret; +} + +//--------------------------------------------------------------------- + + +// public static +void kpPixmapFX::rotate (QImage *destPtr, double angle, + const kpColor &backgroundColor, + int targetWidth, int targetHeight) +{ + if (!destPtr) { + return; + } + + *destPtr = kpPixmapFX::rotate (*destPtr, angle, + backgroundColor, + targetWidth, targetHeight); +} + +//--------------------------------------------------------------------- + +// public static +QImage kpPixmapFX::rotate (const QImage &pm, double angle, + const kpColor &backgroundColor, + int targetWidth, int targetHeight) +{ + if (std::fabs (angle - 0) < kpPixmapFX::AngleInDegreesEpsilon && + (targetWidth <= 0 && targetHeight <= 0)/*don't want to scale?*/) + { + return pm; + } + + + QTransform matrix = rotateMatrix (pm, angle); + + return ::TransformPixmap (pm, matrix, backgroundColor, targetWidth, targetHeight); +} + +//--------------------------------------------------------------------- diff --git a/po/ar/kolourpaint.po b/po/ar/kolourpaint.po new file mode 100644 index 0000000..1899787 --- /dev/null +++ b/po/ar/kolourpaint.po @@ -0,0 +1,2968 @@ +# translation of kolourpaint.po to Arabic +# translation of kolourpaint4.po to +# translation of kolourpaint.po to +# محمد سعد Mohamed SAAD , 2006. +# محمد مجدى Mohamed Magdy , 2007. +# Youssef Chahibi , 2007. +# zayed , 2008, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-01-04 17:29+0400\n" +"Last-Translator: Zayed Al-Saidi \n" +"Language-Team: ar\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Lokalize 21.07.70\n" +"X-Poedit-SourceCharset: utf-8\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Mohamed SAAD محمد سعد,زايد السعيدي" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "metehyi@free.fr,zayed.alsaidi@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "التوازن" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "ليّن" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "اشحذ" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "امسح" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "المحدد: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "أبرز" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "سطّح" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "اختزل إلى تدرج الرمادي" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "التدرج ، الإشباع ، القيمة" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "اعكس الألوان" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "اعكس" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "اختزل إلى أ&حادي اللون (منتشر)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "اختزل إلى أحادي اللون" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "اختزل إلى 256 لونا (منتشر)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "اختزل إلى 256 لونا" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "المدرج الإحصائي المعادل" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "اقلب" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "اقلب أفقياً أو عمودياً" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "اقلب أفقياً" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "اقلب عمودياً" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "النص: صندوق تغيير الحجم" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "التحديد: القياس" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "المحدد: القياس السلس" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "غيّر الحجم" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "غيّر القياس" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "غيّر القياس بنعومة" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "أدر" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "انحراف" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&تراجع: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&تراجع" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&كرّر: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&كرّر" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "تراجع: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "تراجع" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "كرّر: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "كرّر" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "لا عنصرا إضافيا" +msgstr[1] "عنصر إضافي واحد" +msgstr[2] "عنصران إضافيان" +msgstr[3] "%1 عناصر إضافية" +msgstr[4] "%1 عنصرا إضافيا" +msgstr[5] "%1 عنصر إضافي" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "منتقي اللون" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "ملء بالسوائل" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "المزيد من التأثيرات الصورة (المحدد)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "المزيد من التأثيرات الصورة" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "التأ&ثير:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "انقص الألوان" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "ليّن و اشحذ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "خصائص المستند" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "نقاط لكلّ &بوصة" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "غير محدد" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " × " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "أفقي:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "عمودي:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

" +msgstr "" +"

نقطة لكل بوصة (DPI) تحدد عدد البكسلات الصورة التي يجب أن تطبع " +"بداخل بوصة واحدة (2.54سم).

كلما زاد النقاط كلما صغرت الصورة المطبوعة. " +"لا حظ أن طابعتك في الأغلب لن تنتج صورة عالية الجودة إذا زاد عدد النقاط عن " +"300 أو 600 (يعتمد على الطابعة).

إذا رغبت في طباعة الصورة كما تظهر في " +"الشاشة ، ضع قيمة النقاط في كل بوصة تساوي ما هو معروض في الشاشة.

إذا " +"كانت قيمة نقاط لكل بوصة غر محددة فإن الصورة ستطبع كحجمها في الشاشة.

ليس كل أنساق الصور تدعم قيم النقاط لكل بوصة. إذا كان الذي تحفظ فيه لا " +"يدعم هه الميزة ، فإن هذه القيمة لن تحفظ.

" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "الإ&زاحة" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

The Offset is the relative position where this image should be " +"placed, compared to other images.

Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

" +msgstr "" +"

الازاجةهي موضع نسبي يمثل أين يجب وضع هذه الصورة بالمقارنة مع " +"الصورة الأخرى.

ليس كل أنساق الصور تدعم ميزةالإزاحة. إذا كان " +"التنسيق لا تحفظ به لا يدعمها ، فإن القيمة المخصصة هنا لن تحفظ.

" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&حقول نصية" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "أ&ضف صفا" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "ا&حذف الصف" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "استر&جع" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

" +msgstr "" +"

حقول النص تعطي معلومات إضافية عن الصورة قد تكون منطقة تعليقات " +"حيث يمكنك كتابة أي شيء بحرية.

على كل حال هذه شيء خاص بالتنسيق ، لذا " +"فقد يمكن تفسير المعلومات الموجودة فيها عن طريق الحاسوب فلذا لا ينبغي " +"تعديلها ، لكن هذا نادرا.

ليس كل أنساق الصور تدعم حقول النص. " +"إذا لم يكن تحفظ به يدعم هذه الميزة فإنها لن تحفظ.

" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "المفتاح" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "القيمة" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "قيمة النص \"%1\" في السطر %2 تحتاج إلى مفتاح." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"يجب أن تكون كل المفاتيح النصية مميزة. المفتاح النصي \"%1\" في السطرين %2 و " +"%3 متطابقان." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "حقول نصية غير صالحة" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "الأبعاد" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "الأصلية:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 × %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "معاينة" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&حدّث" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "تغيير الحجم/ القياس" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "ط&بّق على:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "كامل الصورة" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "التحديد" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "صندوق النص" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "العملية" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
  • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
  • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
  • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
" +msgstr "" +"
  • تحجيم: سيزيد حجم الصورة بإضافة مناطقإلى اليمين أو/و " +"الأسفل (ستملأ بلون الخلفية)أو بإنقاص مناطق بقطعها من اليمين أو/و الأسفل.
  • تغيير القياس:ستمدد الصورة بتكرار البكسلات أو ستقلص بحذف " +"البكسلات.
  • تغير القياس بنعومة: هذا نفس تغيير القياس " +"باستثناء أنه يخلط البكسلات المجاورة لينتج صورة بمظهر أكثر نعومة.
" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "غيّر ال&حجم" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "غيّر ال&قياس" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "غيّر القياس بس&لاسة" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "العرض:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "الطول:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "×" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&جديد:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "النسبة الم&ئوية:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "أبقِ النس&بة المظهرية" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

Are you sure you want to resize the text box?

" +msgstr "" +"

تحجيم مربع النص إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة.وهذا قد " +"يسبب في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

هل " +"أنت متأكد أنك تريد تحجيم مربع النص؟

" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "هل أغيّر حجم صندوق النص؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "غيّر &حجم صندوق النص" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

Are you sure you want to resize the image?

" +msgstr "" +"

تحجيم الصورة إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة.وهذا قد يسبب " +"في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

هل أنت " +"متأكد أنك تريد تحجيم الصورة؟

" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "هل أغيّر حجم الصورة؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&غيّر حجم الصورة" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

Are you sure you want to scale the image?

" +msgstr "" +"

تغير قياس الصورة إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة.وهذا قد " +"يسبب في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

هل " +"أنت متأكد أنك تريد تغير قياس الصورة؟

" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "هل أغيّر قياس الصورة؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "غيّر &قياس الصورة" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

Are you sure you want to scale the selection?

" +msgstr "" +"

تغير قياس التحديد إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة.وهذا قد " +"يسبب في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

هل " +"أنت متأكد أنك تريد تغير قياس المحدد؟

" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "هل أغيّر قياس التحديد؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "غيّر &قياس التحديد" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

Are you sure you want to smooth scale the image?" +msgstr "" +"

تغير قياس الصورة بنعومة إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة." +"وهذا قد يسبب في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

هل أنت متأكد أنك تريد تغيير قياس الصورة بنعومة؟

" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "هل أغير قياس الصورة بنعومة؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "غيّر قياس الصورة بنعو&مة" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

Are you sure you want to smooth scale the selection?" +"

" +msgstr "" +"

تغير قياس المحدد بنعومة إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة." +"وهذا قد يسبب في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

هل أنت متأكد أنك تريد تغيير قياس المحدد بنعومة؟

" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "أغير مقاس المحدد بنعومة ؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "تغيير مقاس المحدد &بنعومة" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "أدر المحدد" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "أدر الصورة" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "بعد الدوران:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "الاتجاه" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "عكسَ عقارب ال&ساعة" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "مثلَ عقارب الس&اعة" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "الزاوية" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &درجة" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 د&رجة" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 در&جة" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "م&خصّص:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "درجات" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

Are you sure you want to rotate the selection?

" +msgstr "" +"

تدوير المحدد إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة.وهذا قد يسبب " +"في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

هل أنت " +"متأكد أنك تريد تدوير المحدد؟

" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "هل أدير المحدد؟" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "أد&ر المحدد" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

Are you sure you want to rotate the image?

" +msgstr "" +"

تدوير الصورة إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة.وهذا قد يسبب " +"في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

هل أنت " +"متأكد أنك تريد تدوير الصورة؟

" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "هل أدير الصورة؟" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "أ&در الصورة" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "اجعل المحدد منحرفا" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "اجعل الصورة منحرفة" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "بعد الانحراف:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "أفقيا:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&عموديا:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

Are you sure you want to skew the selection?

" +msgstr "" +"

حرف المحدد إلى %1×%2 قد يأخذ كمية كمية من الذاكرة .وهذا قد يؤدي إلى " +"خفض مدى استجابة النظام و يسبب مشاكل لبعض التطبيقات .

هل أنت متأكد أنك " +"تريد حرف المحدد؟

" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "أتجعل المحدد منحرفا؟" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "اجعل الصورة منحرفة" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

Are you sure you want to skew the image?

" +msgstr "" +"

حرف الصورة إلى %1×%2 قد يأخذ كمية كمية من الذاكرة .وهذا قد يؤدي إلى " +"خفض مدى استجابة النظام و يسبب مشاكل لبعض التطبيقات .

هل أنت متأكد أنك " +"تريد حرف المحدد؟

" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "أتجعل الصورة منحرفة؟" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "اجعل الصورة من&حرفة؟" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "تشابه اللون" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "مسافة مكعب الألوان &آر‌جي‌بي" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "المطابقة التامة" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "ما هو تشابه الألوان؟" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "احفظ المعاينة" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "لا بايتا (تقريباً %2%)" +msgstr[1] "بايت واحد (تقريباً %2%)" +msgstr[2] "بايتان (تقريباً %2%)" +msgstr[3] "%1 بايتات (تقريباً %2%)" +msgstr[4] "%1 بايتا (تقريباً %2%)" +msgstr[5] "%1 بايت (تقريباً %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "لم أتمكن من فتح \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"لم أتمكن من فتح \"%1\" - هيئة الصورة غير مدعمة.\n" +"أو أنّ الملف معطوب." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "لم أتمكن من حفظ الصورة - المعلومات غير كافية." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"العنوان: %1\n" +"نوع التنسيق: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<فارغ>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "خطأ داخلي" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

The %1 format may not be able to preserve all of the image's " +"color information.

Are you sure you want to save in this format?

" +msgstr "" +"

يمكن للهيئة %1 أن لا تحافظ على كل معلومات الألوان للصورة.

هل أنت متأكد أنك تريد الحفظ بهذه الهيئة ؟

" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "تنسيق ملف مضيع" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

Are " +"you sure you want to save at this color depth?

" +msgstr "" +"

إنّ حفظ الصورة في عمق اللون %1-بت قد يتسبب في نقص في معلومات اللون. " +"سيتم أيضاً حذف الشفافية.

هل أنت متأكد من أنك تريد الحفظ بهذا العمق " +"اللوني؟

" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "عمق اللون منخفض" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "لم أتمكن من حفظ الصورة - غير قادر على إنشاء الملف المؤقت." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "لم أتمكن من الحفظ كــ \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "خطأ حفظ الصورة" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "لم أتمكن من حفظ الصورة - فشلت في التحميل." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "أزل ال&حافة الداخلية" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "أزل الحافة الداخلية" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "قص &تلقائي" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "قص تلقائي" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "الرسام لا يمكنه إزالة الحافات الداخلية للاختيار ولا تحديد موقعه." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "غير قادر على إزالة الحافة الداخلية" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"الرسام لا يمكنه الحصول تلقائياً على الصورة وكذلك الحدود لا يمكن تحديدها." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "لا يمكن القص التلقائي" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "عيّن كصورة" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "التحديد: أنشئ" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "الرسام" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "برنامج الرسم بواسطة كدي" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "كلارانس دانج (Clarence Dang)" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "مؤسس المشروع" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "ثارستون دانج (Thurston Dang)" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "الباحث الرئيسي" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "مارتين كوللر (Martin Koller)" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "دعم المسح ، دعم ألفا ، المشرف الحالي" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "كريستوف بوري (Kristof Borrey)" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "الأيقونات" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "دعم منهج الإدخال" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "كازوكي أوهتا (Kazuki Ohta)" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "نونو بينييرو (Nuno Pinheiro)" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "داني آلن (Danny Allen)" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "مايك جاشلر (Mike Gashler)" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "تأثيرات الصورة" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "لوران مونتال (Laurent Montel)" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "النقل إلى كدي4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "النقل إلىKF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "الشّكر إلى آخرين كثيرين الذين ساعدوا لجعل هذا البرنامج ممكنا." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "ملفات الصورة لفتحه ، اختياري" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "تسرد جميع أنواع MIME للصور القابلة للقراءة" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&انظر" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&صورة" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "الأل&وان" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "شريط الأدوات الرئيسي" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "شريط أدوات النص" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "أداة اختيار قائمة RMB" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&حرر" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "المصغرة" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "اسحب المقبض إلى اليسار لتغيير حجم الصورة." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "تحجيم صورة: دع كل أزرار الفأرة" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "تحجيم الصورة: انقر باليمين للإلغاء." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "النص" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "لا يمكن فتح لوحة الألوان \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"لا يمكن فتح لوحة الألوان \"%1\" - التنسيق غير مدعوم. قد يكون الملف تالف." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "لا يمكن فتح لوحة الألوان كدي \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "لا يمكن حفظ لوحة الألوان \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "بدون ‌عنوان" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "استعمل افتراضات الرسام" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "استخدم الخاص بكدي" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "ا&فتح ..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "أعد الت&حميل" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "ا&حفظ" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "احفظ &كـ..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "أضف صفا" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "احذف أخر صف" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "صندوق الألوان" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"تم تعديل لوحة الألوان \"%1\" .\n" +"هل تريد حفظها؟" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"تم تعديل لوحة ألوان كدي \"%1\". \n" +"هل تريد حفظها في ملف؟" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"لوحة الألوان الافتراضية عدلت.\n" +"هل تريد حفظها في ملف؟" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "افتح لوحة الألوان" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"لوحة الألوان \"%1\" عدلت.\n" +"إعادة تحميلها ستضيع كل التعديلات التي لم تحفظ.\n" +"هل أنت متأكد؟" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "أعد ال&تحميل" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"لوحة ألوان كدي \"%1\" عدلت.\n" +"إعادة تحميلها ستضيع كل التعديلات.\n" +"هل أنت متأكد؟" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"لوحة الألوان الافتراضية عدلت.\n" +"إعادة تحميلها ستضيع كل التعديلات.\n" +"هل أنت متأكد؟" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "احفظ لوحة الألوان كـ" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "ألصق في النافذة ال&جديدة" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "ا&مح المحدد" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "ا&نسخ إلى الملف..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "ألصق &من الملف..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "النص: أنشئ صندوقا" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "النص: ألصق" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +" لا يمكن لـ كولار بنت لصق محتويات الحافظة لأنها ذات تنسيق غير معروف. " + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "لا أستطيع اللصق" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "النص: امح الصندوق" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "المحدد: امح" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "النص: أنه" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "المحدد: أزل التحديد" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "انسخ إلى الملف" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "ألصق من ملف" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "ص&در..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "امسح ضوئيا..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "خذ لقطات الشاشة" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "الخصائص" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "أعد الت&حميل" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "كلّ الملفّات المدعومة (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "افتح الصورة" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "فشل في فتح حواري المسح الضوئي." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "فشل المسح الضوئي" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "تأخير اللقطة:" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " ثانية" +msgstr[1] " ثانية واحدة" +msgstr[2] " ثانيتين" +msgstr[3] " ثواني" +msgstr[4] "ثانية" +msgstr[5] " ثانية" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "بدون تأخير" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "أخفِ النافذة الرئيسية" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "خصائص الوثيقة" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "احفظ الصورة كــ" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "صدّر" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"لقد تم تغيير المستند \"%1\".\n" +"إن إعادة التحميل ستسبب خسارة كل التغييرات التي حصلت منذ آخر عملية للحفظ.\n" +"هل أنت متأكد ؟" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"لقد تمّ تغيير المستند \"%1\".\n" +"إعادة التحميل ستلغي كلّ التغييرات.\n" +"هل أنت متأكد ؟" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "اطبع الصورة" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"يجب عليك حفظ هذه الصورة قبل إرسالها.\n" +"هل تريد حفظها ؟" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"لقد تم تغيير المستند \"%1\" .\n" +"هل تريد حفظه ؟" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "تغيير ال&حجم/ القياس..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "تعيي&ن كصورة (قصّ)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "اقلب (رأساً على عقب)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "اعكس (أفقيًّا)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&دور..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "د&ور لليسار" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "دور لل&يمين" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "ا&حرف..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "انقص إلى أ&حادي اللون (منتشر)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "انقص إلى تدرج ال&رمادي" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "أع&كس الألوان" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "امس&ح" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "اجعله سري" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "ال&مزيد من التأثيرات..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "ال&صورة" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "ال&تحديد" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "أظهر ال&مسار" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "الرسم الناعم" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1 ، %2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1 ، %2 - %3 ، %4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1×%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 بت في بكسل" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "عائلة الخط" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "حجم الخط" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "عريض" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "مائل" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "تسطير" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "مسطر عليه" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "خيار الأداة السابق (المجموعة رقم 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "خيار الأداة التالي (المجموعة رقم 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "خيار الأداة السابق (المجموعة رقم 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "خيار الأداة التالي (المجموعة رقم 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "ا&رسم معتم" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "ارسم بالتشابه اللوني..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "صندوق الأدوات" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "أظهر ال&شبكة" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "اعرض الأ&ظافر" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "نمط المصغرات الم&كبرة" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "تمكين مست&طيل المصغرات" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&كبر" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "اكتسب الصورة" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "فشل فتح الماسح الضّوئيّ المحدّد." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "الفرشاة" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "ارسم باستخدام فرش مختلفة الأشكال والأحجام" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "انقر كي ترسم نقاطا أو اسحب كي ترسم شخطات." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "ماحي اللون" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "استبدل بكسلات لون الأمامية بلون الخلفية" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "انقر أو اسحب كي تمحي بكسلات لون الأمامية." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "الماحية" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "يجعلك تمحي الأخطاء" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "انقر أو اسحب لكي تمحي." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "اترك أزرار الفأرة." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "القلم" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "يرسم نقاطا و شخطات" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "علبة البخاخ" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "يبخّ رسما جداريا" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "انقر أو اسحب كي ترشّ رسما جداريا" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "انقر باليمين للإلغاء." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "انقر باليسار للإلغاء." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "يجعلك تختار لونا من الصورة" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "انقر لتختار لونا." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "يملئ مناطق من الصورة" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "انقر لتملئ منطقة ما." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "كبّر" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "يكبر ويصغر الصورة" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "انقر كبر/صغر أو اسحب يسارا لتكبر في المنطقة المحددة." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "المنحنى" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "يرسم منحنيات" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "اسحب نقاط البداية والنهاية." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "اسحب بالزر الأيسر لوضع نقطة التحكم الأولى أو انقر باليمين للانتهاء." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "اسحب بالزر الأيمن لوضع نقطة التحكم الأولى أو انقر باليسار للانتهاء." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "اسحب بالزر الأيسر لوضع نقطة التحكم الأخيرة أو انقر باليمين للانتهاء." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "اسحب بالزر الأيمن لوضع نقطة التحكم الأخيرة أو انقر باليسار للانتهاء." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "السطر" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "يرسم أسطرا" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "اسحب كي ترسم." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "المضلّع" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "يرسم مضلّعات" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "اسحب كي ترسم الخط الأول." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "اسحب بالزرّ الأيسر خطا آخر أو انقر باليمين للانتهاء." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "اسحب بالزرّ الأيمن خط آخر أو انقر باليسار للانتهاء." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "الخطوط المتصلة" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "يرسم خطوطا متصلة" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "إهليلج" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "يرسم إهليلجا ودائرات" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "المستطيل" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "يرسم مستطيلات ومربعات" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "مستطيل مدوّر" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "يرسم مستطيلات ومربعات بزوايا مدوّرة" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "اسحب بالزر الأيسر لإنشاء الاختيار." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "اسحب بالزر الأيسر لنقل الاختيار." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "اسحب بالزر الأيسر لتغيير قياس المحدد" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "التحديد: معتم" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "التحديد: شفاف" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "التحديد: لون الشفافية" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "التحديد: تشابه لون الشفافية" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "التحديد (إهليلجي)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "يختار منطقة عل شكل إهليلج أو دائرة" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "المحدد (شكل حرّ)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "يجعلك تختار شكلا حرّا" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "التحديد (المستطيل)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "يصنع تحديد مستطيل" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "المحدد: حرّك" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: المسحة" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "يكتب النص" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "النص: حرف فارغ إلى الوراء" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "النص: اُمح" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "النص: سطر جديد" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "النص: اُكتب" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "اسحب بالزر الأيسر لإنشاء صندوق نص." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "اسحب بالزر الأيسر لنقل صندوق النص." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "النص: حرك الصندوق" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "اسحب بالزر الأيسر لتغيير حجم صندوق النص." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "اسحب بالزر الأيسر لتغيير موقع المؤشر." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "النص: خلفية معتمة" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "النص: خلفية شفافة" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "النص: بدّل الألوان" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "النص: لون الأمامية" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "النص: لون الخلفية" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "النص: الخط" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "النص: حجم الخط" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "نص: عريض" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "النص: مائل" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "النص: مسطر تحته" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "النص: مسطر عليه" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "وضعية غير مكبرة - صورة مصغرة" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - مصغرة" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

This feature applies " +"to:

  • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
  • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
  • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
  • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

To configure it, click on the cube.

" +msgstr "" +"

التشابه اللونيهو كيفيةتشابه ألوان البكسلات المختلفة حتى " +"تعتبرها العمليات أنها متطابقة.

إذا وضعتها لشيء غير التطابق التام فيمكنك العمل بكفاءة أكثر مع الصور أو الرسومات منعمة الحواف بصورة يمكن " +"مقارنتها مع ميزة\"العصا السحرية\" في تطبيقات الرسم الأخرى.

هذه الميزة " +"يمكن تطبيقها على:

  • الانتقاءات: في نمط الشفافية ، أي " +"لون في الانتقاءمشابه للون الخلفية سيصبح شفافا..
  • الملء " +"بالسوائل: أي منطقة تشابه - لكن لا تطابق - البكسلات الملونة ، " +"الوضع العالي سيملأ بكسلات أكثر..
  • مسح الألوان: أي بكسل يكون " +"لونه مشابه للون المقدمة سيستبدل بلون الخلفية.
  • القص " +"التلقائي و إزالة الحواف الداخلية: للحدود التيتشابه - لكن " +"لا تطابق - البكسلات الملونة، الوضع العالي سيقص كل الحد في الغالب.
  • الأوضاع العالية تعني أن العمليات ستعتبر المدى المزيد للألوان أنه كافي " +"لتعتبرها متشابه وكأنها نفسها. لذا لا بد أن تزيد الأوضاع إذا كانت " +"العمليات التي بالأعلى لا تؤثر على البكسلات التي تعتبر ألوانها متشابه بما فيه " +"الكفاية.

    على كل حال ، إذا كانت لتلك العمليات تأثير كبير و تغير الألوان " +"التي تعبرها أنها غير متشابهة(على سبيل المثال إذا كان الملء بالسوائليغير الكثير من البكسلات) ، فيجب عليك إنقاص الإعداد.

    لتضبطه انقر على " +"المكعب.

    " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

    This feature applies " +"to:

    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

    " +msgstr "" +"

    التشابه اللونيهو كيفيةتشابه ألوان البكسلات المختلفة حتى " +"تعتبرها العمليات أنها متطابقة.

    إذا وضعتها لشيء غير التطابق التام فيمكنك العمل بكفاءة أكثر مع الصور أو الرسومات منعمة الحواف بصورة يمكن " +"مقارنتها مع ميزة\"العصى السحرية\" في تطبيقات الرسم الأخرى.

    هذه الميزة " +"يمكن تطبيقها على:

    • الانتقاءات: في نمط الشفافية ، أي " +"لون في الانتقاءمشابه للون الخلفية سيصبح شفافا..
    • الملء " +"بالسوائل: أي منطقة تشابه - لكن لا تطابق - البكسلات الملونة ، " +"الوضع العالي سيملأ بكسلات أكثر..
    • مسح الألوان: أي بكسل يكون " +"لونه مشابه للون المقدمة سيستبدل بلون الخلفية.
    • القص " +"التلقائي و إزالة الحواف الداخلية: للحدود التيتشابه - لكن " +"لا تطابق - البكسلات الملونة، الوضع العالي سيقص كل الحد في الغالب.
    • الأوضاع العالية تعني أن العمليات ستعتبر المدى المزيد للألوان أنه كافي " +"لتعتبرها متشابه وكأنها نفسها. لذا لا بد أن تزيد الأوضاع إذا كانت " +"العمليات التي بالأعلى لا تؤثر على البكسلات التي تعتبر ألوانها متشابه بما فيه " +"الكفاية.

      على كل حال ، إذا كانت لتلك العمليات تأثير كبير و تغير الألوان " +"التي تعبرها أنها غير متشابهة(على سبيل المثال إذا كان الملء بالسوائليغير الكثير من البكسلات) ، فيجب عليك إنقاص الإعداد.

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

      Color Similarity: %1%

      Click to configure.

      " +msgstr "

      التشابه اللوني: %1%

      انقر لتضبط.

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

      Color Similarity: Exact Match

      Click to configure." +msgstr "

      التشابه اللوني: تطابق كلي

      انقر لتضبط.

      " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "ال&سطوع:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "است&رجع" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "التب&اين:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&الغاما:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "استرج&ع" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "ال&قنوات:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "الكلّ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "الأحمر" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "الأخضر" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "الأزرق" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "استرجع &كلّ القيم" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "التعيينات" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "ال&كمّية:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "تم&كين" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "الألوان" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "ال&تدرج:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "ال&تشبع:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&قيمة:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "أ&حمر" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "أ&خضر" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "أ&زرق" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "ال&كلّ" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "القنوات" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "أ&حادي اللون" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "أحا&دي اللون (منتشر)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 ل&ون" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 لو&ن (منتشر)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "لون 24 &بت" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "انقص إلى" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "ال&حبيبيات:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

      To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

      To change the color of a color cell itself, double-click on it.

      You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

      " +msgstr "" +"

      لتنتقي اللون الأمامي لتستخدمه الأدوات ، انقر على خلية الملء. لتنتقي " +"لون الخلفية انقر باليمين بدلا عن ذلك.

      لتغير لون خلية للون انقر نقرا " +"مزدوجا عليها.

      يمكنك أن تبدل لون خلية الملء بخلية أخرى بواسطة السحب و " +"الإفلات. كذلك إذا أمسكت مفتاحCtrl فإن لون خلية المقصد سيعاد كتابته " +"بدلا أن يبدل بلون خلية المصدر.

      " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "&حوّل إلى:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "الج&ودة:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&معاينة" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "أحادي اللون" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "أحادي اللون (منتشر)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 لون" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 لون (منتشر)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "لون 24 بت" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "موضع الصو&رة" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&وسط الصفحة" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&يسار-أعلى الصفحة" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "شفاف" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "افتراضيات الرسام" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "الألوان: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "الألوان: %1 [معدل]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1×1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "دائرة" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "مربع" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "شَّرطة" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "الشّرطة الخلفية" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1×%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "لا تملئ" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "املئ بلون الخلفية" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "املئ بلون الأمامية" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "معتم" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "يوجد مستند باسم \"%1\" مسبقاً.\n" +#~ "هل تريد الكتابة عليه ؟" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "لوحة الألوان المسماة \"%1\" موجودة.\n" +#~ "هل تريد الكتابة فوقها؟" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "وضع مستوى التكبير كقيمة ليست من مضروبات 100% قد يؤدي إلى تحرير غير دقيق و " +#~ "شطحات في الرسم .\n" +#~ "هل ترغب حقا في وضع مستوى التكبير إلى %1%؟" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "تعيين مستوى التكبير إلى %1%" + +#~ msgid "None" +#~ msgstr "بدون" + +#~ msgid "" +#~ "

      Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

      Are you sure want to resize the image?

      " +#~ msgstr "" +#~ "

      تحجيم الصورة إلى %1×%2 قد يستهلك كمية كبيرة من الذاكرة.وهذا قد " +#~ "يسبب في إبطاء استجابة النظام و بعض مشاكل الموارد للتطبيقات الأخرى.

      هل أنت متأكد أنك تريد تحجيم الصورة؟

      " + +#~ msgid "Overwrite" +#~ msgstr "اكتب عليه" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "لم أتمكن من فتح \"%1\" - نوع التنسيق غير معروف." + +#~ msgid "Save Preview" +#~ msgstr "احفظ المعاينة" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "لتحصل على دعم، من فضلك زر الموقع." + +#~ msgid "No Scanning Support" +#~ msgstr "لا يوجد دعم للمسح" + +#~ msgid "Scanning support is not installed." +#~ msgstr "دعم المسح غير مثبت." + +#~ msgid "" +#~ "

      KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

      This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

      " +#~ msgstr "" +#~ "

      كولو.بانت لا يمكنه لصق محتويات ذاكرة النصوص كبيانات مخفية بشكل " +#~ "مفاجئ.

      هذا يحدث عادة عندما يكون التطبيق المسؤول عن محتويات ذاكرة " +#~ "النصوص قد تم إغلاقه.

      " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "اكتساب لقطات ال&شاشة" + +#, fuzzy +#~| msgid "" +#~| "

      To acquire a screenshot, press %1. The screenshot will be " +#~| "placed into the clipboard and you will be able to paste it in " +#~| "KolourPaint.

      You may configure the Desktop Screenshot " +#~| "shortcut in the KDE Control Center module Keyboard Shortcuts.

      Alternatively, you may try the " +#~| "application KSnapshot.

      " +#~ msgid "" +#~ "

      To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

      You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

      Alternatively, you may try the application KSnapshot.

      " +#~ msgstr "" +#~ "

      للحصول على لقطة شاشة ،اضغط%1. ستوضع لقطة الشاشةفي الحافظة ، و " +#~ "يمكنك الصاقها في كولور.بانت.

      يمكنك ضبط اختصارإلتقاط شاشة سطح " +#~ "المكتب فيوحدة التحكم اختصارات " +#~ "لوحة المفاتيح.

      و يمكنك أيضا استخدام هذا التطبيق ك.سناب شوت.

      " + +#~ msgid "" +#~ "

      You do not appear to be running KDE.

      Once you have loaded KDE:" +#~ "

      To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

      Alternatively, you may try the " +#~ "application KSnapshot.

      " +#~ msgstr "" +#~ "

      يبدو أنك لا تستخدم كدي.

      حلما تحمل كدي:

      للحصول على " +#~ "لقطة شاشة ،اضغط%1. ستوضع لقطة الشاشة في الحافظة ، و يمكنك إلصاقها " +#~ "في كولور.بانت..

      و يمكنك أيضا استخدام هذا التطبيق ك.سناب شوت كخيار بديل.

      " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "تعيين كورق جدا&ر (ممركز)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "تعيين كورق جدار (م&بلّط)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "يجب عليك حفظ هذه الصورة قبل تعيينها كورق الجدار.\n" +#~ "هل تريد حفظها ؟" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "يجب عليك حفظ هذه الصورة قبل تعيينها كورق الجدار.\n" +#~ "هل تريد حفظها ؟" + +#~ msgid "Could not change wallpaper." +#~ msgstr "لم أتمكن من تغيير ورق الجدار." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "اقلب المحدد" + +#~ msgid "Flip Image" +#~ msgstr "اقلب الصورة" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "أ&فقياً (رأساً على عقب)" + +#~ msgid "&Horizontal" +#~ msgstr "&عمودياً" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "خسارة معلومات اللون و شبه الشفافية" + +#~ msgid "Loss of Color Information" +#~ msgstr "الخسارة معلومات اللون" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "الخسارة معلومات شبه الشفافية" + +#~ msgid "" +#~ "

      KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

      To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

      " +#~ msgstr "" +#~ "

      كولور.بانت لا يدعم عمق الشاشة حالي %1بت لكل بوصة. سيحاول كولور." +#~ "بانت البدء ولكن قد يكون غير موثوق.

      لتجنب هذه المشكلة غير عمق شاشتك " +#~ "إلى 24 بت و أعد تشغيل كولور.بانت.

      " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "وضع شاشة غير مدعوم" + +#~ msgid "" +#~ "

      This effect does not support the current screen depth of %1bpp.

      To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

      " +#~ msgstr "" +#~ "

      هذا التأثير لا يدعم عمق الشاشة الحالي %1بت.

      لتجنب هذه " +#~ "المشكلة غير عمق شاشتك إلى 24 بتوأعد تشغيل كولور.بانت.

      " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "لا يستطيع المسح -نفذت الذاكرة الرسومية." + +#~ msgid "Cannot Scan" +#~ msgstr "غير قادر على المسح" + +#~ msgid "&Flip..." +#~ msgstr "ا&قلب..." + +#~ msgid "" +#~ "

      The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

      If you save this image, any color loss will " +#~ "become permanent.

      To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


      It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

      If you save " +#~ "this image, this loss of translucency will become permanent.

      " +#~ msgstr "" +#~ "

      الصورة المراد لصقها قد تحوي على ألوان أكثر مما يدعم نمط عمق الشاشة " +#~ "الحالي.من أجل عرضها ستزال بعض معلومات الألوان.

      إذا حفظت هذه " +#~ "الصورة فإن خسارة الألوان ستكون دائمة.

      لتجنب هذه المشكلة ، زد من " +#~ "عمق الشاشة على الأقل إلى %1بت وثم أعد تشغيل كولور.بانت.


      وهي " +#~ "كذلك تحوي على شبه شفافية و هي غير مدعومة بشكل كامل. بيانات شبه الشفافية " +#~ "ستقرب بواسطة قناع الشافية 1-بت .

      إذا حفظت هذه الصورة فإن خسارة " +#~ "شبه شفافية ستكون دائمة.

      " + +#~ msgid "" +#~ "

      The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

      If you save this image, any color loss will " +#~ "become permanent.

      To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

      " +#~ msgstr "" +#~ "

      الصورة المراد لصقها قد تحوي على ألوان أكثر مما يدعم نمط عمق الشاشة " +#~ "الحالي.من أجل عرضها ستزال بعض معلومات الألوان.

      إذا حفظت هذه " +#~ "الصورة فإن خسارة الألوان ستكون دائمة.

      لتجنب هذه المشكلة ، زد من " +#~ "عمق الشاشة على الأقل إلى %1بت وثم أعد تشغيل كولور.بانت.

      " + +#~ msgid "" +#~ "

      The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

      If you save this image, this loss of " +#~ "translucency will become permanent.

      " +#~ msgstr "" +#~ "

      الصورة المراد لصقها تحوي على شبه شفافية و هي غير مدعومة بشكل " +#~ "كامل. بيانات شبه الشفافية ستقرب بواسطة قناع الشافية 1-بت .

      إذا " +#~ "حفظت هذه الصورة فإن خسارة شبه شفافية ستكون دائمة.

      " + +#~ msgid "

      There is nothing in the clipboard to paste.

      " +#~ msgstr "

      لا يوجد شيء في الحافظة للصقه.

      " + +#~ msgid "" +#~ "

      The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

      If you save this image, any color loss will become " +#~ "permanent.

      To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


      It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

      If you save this " +#~ "image, this loss of translucency will become permanent.

      " +#~ msgstr "" +#~ "

      الصورة \"%1\" قد تحوي على ألوان أكثر مما يدعم نمط عمق الشاشة " +#~ "الحالي.من أجل عرضها ستزال بعض معلومات الألوان.

      إذا حفظت هذه " +#~ "الصورة فإن خسارة الألوان ستكون دائمة.

      لتجنب هذه المشكلة ، زد من " +#~ "عمق الشاشة على الأقل إلى %2بت وثم أعد تشغيل كولور.بانت.


      كذلك " +#~ "تحوي على شبه شفافية و هي غير مدعومة بشكل كامل. بيانات شبه الشفافية ستقرب " +#~ "بواسطة قناع الشافية 1-بت .

      إذا حفظت هذه الصورة فإن خسارة شبه " +#~ "شفافية ستكون دائمة.

      " + +#~ msgid "" +#~ "

      The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

      If you save this image, any color loss will become " +#~ "permanent.

      To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

      " +#~ msgstr "" +#~ "

      الصورة \"%1\" قد تحوي على ألوان أكثر مما يدعم نمط عمق الشاشة " +#~ "الحالي.من أجل عرضها ستزال بعض معلومات الألوان.

      إذا حفظت هذه " +#~ "الصورة فإن خسارة الألوان ستكون دائمة.

      لتجنب هذه المشكلة ، زد من " +#~ "عمق الشاشة على الأقل إلى %2بت وثم أعد تشغيل كولور.بانت.

      " + +#~ msgid "" +#~ "

      The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

      If you save this image, this loss of " +#~ "translucency will become permanent.

      " +#~ msgstr "" +#~ "

      الصورة \"%1\" تحوي على شبه شفافية و هي غير مدعومة بشكل كامل. " +#~ "بيانات شبه الشفافية ستقرب بواسطة قناع الشافية 1-بت .

      إذا حفظت " +#~ "هذه الصورة فإن خسارة شبه شفافية ستكون دائمة.

      " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "لم أتمكن من فتح \"%1\" - الذاكرة الرسومية غير كافية." + +#~ msgid "Scanning Support" +#~ msgstr "دعم المسح" diff --git a/po/be/kolourpaint.po b/po/be/kolourpaint.po new file mode 100644 index 0000000..e106c19 --- /dev/null +++ b/po/be/kolourpaint.po @@ -0,0 +1,2611 @@ +# translation of kolourpaint.po to Belarusian +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Darafei Praliaskouski , 2007. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2007-06-25 11:12+0300\n" +"Last-Translator: Darafei Praliaskouski \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || n%10>=5 && n%10<=9 || n" +"%100>=11 && n%100<=14 ? 2 : 3);\n" +"X-Generator: KBabel 1.11.4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Дарафей Праляскоўскі" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "komzpa@licei2.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Ачысціць" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Змяніць памер" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Вярнуць: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Вярнуць" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Паўтарыць: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "Па&ўтарыць" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Вярнуць: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Вярнуць" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Паўтарыць: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Паўтарыць" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "" +msgstr[1] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Эфект:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, fuzzy, kde-format +#| msgid "%1 x %2" +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "%1 x %2" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, fuzzy, kde-format +#| msgid "&Horizontal" +msgid "Horizontal:" +msgstr "&Гарызантальна" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

      Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

      The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

      If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

      If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

      Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

      " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, fuzzy, kde-format +#| msgid "&Effect:" +msgid "O&ffset" +msgstr "&Эфект:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

      The Offset is the relative position where this image should be " +"placed, compared to other images.

      Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

      " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "С&кінуць" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

      Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

      However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

      Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

      " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, fuzzy, kde-format +#| msgid "Blue" +msgid "Value" +msgstr "Сіні" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Памер" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Прагляд" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Абнавіць" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "Resize" +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Змяніць памер" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Вылучэнне" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Аперацыя" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
      • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
      • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
      • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "З&мяніць памер" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Шырыня:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

      Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to resize the text box?

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

      Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to resize the image?

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +#| msgid "Resize" +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Змяніць памер" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

      Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to scale the image?

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Запісаць малюнак як" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

      Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to scale the selection?

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Вылучэнне" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

      Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

      Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the selection?" +"

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Вылучэнне" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Запісаць малюнак як" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "град." + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

      Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to rotate the selection?

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Вылучэнне" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

      Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to rotate the image?

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Запісаць малюнак як" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Вылучэнне" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Запісаць малюнак як" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

      Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to skew the selection?

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Вылучэнне" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

      Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to skew the image?

      " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Запісаць малюнак як" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, fuzzy, kde-format +#| msgid "Preview" +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Прагляд" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "" +msgstr[1] "" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<пусты>" + +#: document/kpDocument_Save.cpp:89 +#, fuzzy, kde-format +#| msgid "Internal Error" +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Унутраная памылка" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

      The %1 format may not be able to preserve all of the image's " +"color information.

      Are you sure you want to save in this format?

      " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

      Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

      Are " +"you sure you want to save at this color depth?

      " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "" + +#: kolourpaint.cpp:72 +#, fuzzy, kde-format +#| msgid "Main Toolbar" +msgid "Martin Koller" +msgstr "Галоўная панель начыння" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Значкі" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Выгляд" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Адбітак" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, fuzzy, kde-format +#| msgid "Colors" +msgid "&Colors" +msgstr "Колеры" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Галоўная панель начыння" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, fuzzy, kde-format +#| msgid "Main Toolbar" +msgid "Text Toolbar" +msgstr "Галоўная панель начыння" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Змяніць" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +#| msgid "Thumbnail" +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Мініятура" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Тэкст" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Безназоўны" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, fuzzy, kde-format +#| msgid "Reloa&d" +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "&Абнавіць" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Запісаць малюнак як" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, fuzzy, kde-format +#| msgid "Colors" +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Колеры" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Абнавіць" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, fuzzy, kde-format +#| msgid "Colors" +msgid "Save Color Palette As" +msgstr "Колеры" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "Экспарт..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&Абнавіць" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +#| msgid "&Image" +msgctxt "@title:window" +msgid "Open Image" +msgstr "&Адбітак" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Запісаць малюнак як" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, fuzzy, kde-format +#| msgid "Export" +msgctxt "@title:window" +msgid "Export" +msgstr "Экспартаваць" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "А&чысціць" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Адбітак" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Памер шрыфта" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Цёмны" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Курсіў" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Падкрэслены" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Паказаць &сетку" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Маштабаванне" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Запісаць малюнак як" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "" + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, fuzzy, kde-format +#| msgid "&Zoom" +msgid "Zoom" +msgstr "&Маштабаванне" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Лінейны" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Прамакутнік" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      To configure it, click on the cube.

      " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

      Color Similarity: %1%

      Click to configure.

      " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

      Color Similarity: Exact Match

      Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Яркасць:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Усе" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Чырвоны" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Зялёны" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Сіні" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Настаўленні" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Агулам:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Колеры" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, fuzzy, kde-format +#| msgid "Blue" +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "Сіні" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Усе" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Каналы" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

      To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

      To change the color of a color cell itself, double-click on it.

      You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

      " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Прагляд" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Монахром" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Празрысты" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, fuzzy, kde-format +#| msgid "Colors" +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Колеры" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, fuzzy, kde-format +msgid "Circle" +msgstr "Нулік" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "" + +#~ msgid "None" +#~ msgstr "Няма" + +#~ msgid "Overwrite" +#~ msgstr "Замяніць" + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "&Horizontal" +#~ msgstr "&Гарызантальна" + +#, fuzzy +#~| msgid "Colors" +#~ msgid "Reload Colors" +#~ msgstr "Колеры" + +#~ msgid "Maintainer" +#~ msgstr "Падтрымка" + +#, fuzzy +#~ msgid "Michele" +#~ msgstr "Нулік" diff --git a/po/bg/kolourpaint.po b/po/bg/kolourpaint.po new file mode 100644 index 0000000..69e6e29 --- /dev/null +++ b/po/bg/kolourpaint.po @@ -0,0 +1,2732 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Zlatko Popov , 2006, 2007. +# Yasen Pramatarov , 2010, 2011. +# Mincho Kondarev , 2022. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-06-19 18:51+0200\n" +"Last-Translator: Mincho Kondarev \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 22.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Ясен Праматаров,Радостин Раднев,Красимир Арнаудов,Златко Попов" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"yasen@lindeas.com,radnev@yahoo.com,krasi.arnaudov@gmail.com,zlatkopopov@fsa-" +"bg.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Баланс" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Омекотяване" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Изостряне" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Изчистване" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Избрано: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Релефност" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Изглаждане" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Намаляване до сива гама" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Оттенък, насищане, стойност" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Обръщане на цветовете" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Обръщане" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Намаляване до едноцветно (dithered)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Намаляване до едноцветно" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Намаляване до 256 цвята (dithered)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Намаляване до 256 цвята" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Еквалайзер на хистограма" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Завъртане" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Завъртане хоризонтално и вертикално" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Завъртане хоризонтално" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Завъртане вертикално" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Текст: преоразмеряване на поле" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Избрано: мащабиране" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Избрано: плавно мащабиране" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Преоразмеряване" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Мащабиране" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Плавно мащабиране" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Завъртане" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Наклоняване" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Отмяна: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Отмяна" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Повтаряне: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Повтаряне" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Отмяна: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Отмяна" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Повтаряне: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Повтаряне" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "още %1 обект" +msgstr[1] "още %1 обекта" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Избор на цвят" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Запълване" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Допълнителни ефекти (за избраното)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Допълнителни ефекти" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Ефект:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Намаляване на цветовете" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Омекотяване и изостряне" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Данни на документ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "То&чки на инч (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Неопределено" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Хоризонтално:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Вертикално:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

      Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

      The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

      If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

      If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

      Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Точки на инч (DPI) определя количеството пиксели на " +"изображението, които да бъдат отпечатани в рамките на един инч (2.54cm).

      Колкото по-висока е стойността, толкова по-малко е печатаното " +"изображение. Имайте предвид, че принтерът ви вероятно няма да печата с " +"високо качество, ако увеличите с 300 или 600 DPI.

      Ако искате да " +"разпечатате изображението с размера с който се вижда на екрана, настройте " +"стойностите да бъдат такива като на екрана.

      Ако \"точки на инч\" е " +"Неопределено изображението ще бъде разпечатано със същия размер като " +"екрана.

      Не всички формати поддържат \"точки на инч\".

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Отместване" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

      The Offset is the relative position where this image should be " +"placed, compared to other images.

      Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

      " +msgstr "" +"

      Отместването е относителната позиция спрямо други изображения " +"където да бъде поставено изображението.

      Не всички формати поддържат " +"тази функционалност.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Текстови полета" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Добавяне на ред" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Изтриване на ред" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Възстановяване" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

      Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

      However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

      Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Текстови полета предоставят допълнителна информация за " +"изображението. Това вероятно еобласт за коментар, в която можете свободно да " +"напишете всеки текст.

      обаче това е специфично за формата, така че " +"полетата да бъдат теоретичнокомпютърно -интерпретирани данни - че не трябва " +"да променяте - но това емалко вероятно.

      Не всички формати на " +"изображението поддържат текстови полета . Акоформатът, в който " +"запазвате, не ги поддържа, те няма да бъдат запазени.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Ключ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Стойност" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Стойност \"%1\" на ред %2 изисква ключ." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Всички текстови ключове трябва да са уникални. Ключовете \"%1\" на редове %2 " +"и %3 са еднакви." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Невалидни текстови полета" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Размери" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Оригинал:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Преглед" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Обновяване" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Преоразмеряване и мащабиране" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Пр&илагане за:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Цяло изображение" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Избрано" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Текстово поле" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Действие" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
      • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
      • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
      • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
      " +msgstr "" +"
      • Промяна на размера: Размерите на изображението ще бъдат " +"увеличени или намалени. При увеличаване новата област, която ще се появи в " +"долния десен ъгъл, ще бъде запълнена с цвета на фона. При намаляване ще се " +"изреже част от изображението в долния десен ъгъл.
      • Мащабиране: " +"Изображението ще бъде увеличено или намалено, като се разширяват или " +"намаляват пиксели.
      • Плавно мащабиране: При плавното мащабиране " +"се извършва сливане на съседни пиксели, за да изглежда новото изображение по-" +"омекотено.
      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Преоразмеряване" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Мащабиране" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "П&лавно мащабиране" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Широчина:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Височина:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Нов:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Процент:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "&Запазване на съотношението" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

      Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to resize the text box?

      " +msgstr "" +"

      Промяната на размера на текстовото поле до %1x%2 може да отнеме много " +"памет. Това може да доведе до забавяне на останалите програми и системата " +"като цяло.

      Сигурни ли сте, че искате размерът на текстовото поле да " +"бъде променен?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Да се преоразмери ли текстовото поле?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "&Преоразмеряване на текстовото поле" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

      Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to resize the image?

      " +msgstr "" +"

      Промяната на размера на изображението до %1x%2 може да отнеме много " +"памет. Това може да доведе до забавяне на останалите програми и системата " +"като цяло.

      Сигурни ли сте, че искате размерът на изображението да бъде " +"променен?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Да се преоразмери ли изображението?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&Преоразмеряване на изображението" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

      Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to scale the image?

      " +msgstr "" +"

      Мащабирането на изображението до %1x%2 може да отнеме много памет. " +"Това може да доведе до забавяне на останалите програми и системата като цяло." +"

      Сигурни ли сте, че искате изображението да бъде мащабирано?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Да се мащабира ли изображението?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&Мащабиране на изображението" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

      Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to scale the selection?

      " +msgstr "" +"

      Мащабирането на избраната област до %1x%2 може да отнеме много памет. " +"Това може да доведе до забавяне на останалите програми и системата като цяло." +"

      Сигурни ли сте, че искате маркираната област да бъде мащабирана?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Да се мащабира ли избраната област?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Мащабиране на избраното" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

      Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the image?" +msgstr "" +"

      Плавното мащабиране на изображението до %1x%2 може да отнеме много " +"памет. Това може да доведе до забавяне на останалите програми и системата " +"като цяло.

      Сигурни ли сте, че искате изображението да бъде плавно " +"мащабирано?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Да се мащабира ли плавно изображението?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "П&лавно мащабиране на изображението" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

      Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the selection?" +"

      " +msgstr "" +"

      Плавното мащабиране на избраната област до %1x%2 може да отнеме много " +"памет. Това може да доведе до забавяне на останалите програми и системата " +"като цяло.

      Сигурни ли сте, че искате избраната област да бъде плавно " +"мащабирана?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Да се мащабира ли плавно избраната област?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "П&лавно мащабиране на избраното" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Завъртане на избраното" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Завъртане на изображението" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "След завъртане:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Посока" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Обратно на &часовниковата стрелка" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "По ч&асовниковата стрелка" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Ъгъл" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &градуса" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 г&радуса" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 гр&адуса" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Потребителски:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "градуса" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

      Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to rotate the selection?

      " +msgstr "" +"

      Завъртането на избраната област до %1x%2 може да отнеме много памет. " +"Това може да доведе до забавяне на останалите програми и системата като цяло." +"

      Сигурни ли сте, че искате избраната област да бъде завъртяна?

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Да се завърти ли избраното?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "&Завъртане на избраното" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

      Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to rotate the image?

      " +msgstr "" +"

      Завъртането на изображението до %1x%2 може да отнеме много памет. " +"Това може да доведе до забавяне на останалите програми и системата като цяло." +"

      Сигурни ли сте, че искате изображението да бъде завъртяно?

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Да се завърти ли изображението?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "&Завъртане на изображението" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Наклоняване на избраната област" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Наклоняване на изображението" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "След накланяне:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Хоризонтално:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Вертикално:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

      Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to skew the selection?

      " +msgstr "" +"

      Наклоняването на избраната област до %1x%2 може да отнеме много " +"памет. Това може да доведе до забавяне на останалите програми и системата " +"като цяло.

      Сигурни ли сте, че искате избраната област да бъде " +"наклонена?

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Да се наклони ли избраната област?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&Наклоняване на избраното" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

      Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to skew the image?

      " +msgstr "" +"

      Наклоняването на изображението до %1x%2 може да отнеме много памет. " +"Това може да доведе до забавяне на останалите програми и системата като цяло." +"

      Сигурни ли сте, че искате изображението да бъде наклонено?

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Да се наклони ли изображението?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&Наклоняване на изображението" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Подобие на цветове" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&Цветови спектър RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Точно съвпадение" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Какво е \"подобие на цветовете\"?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Запис на прегледа" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 байт (около %2%)" +msgstr[1] "%1 байта (около %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Грешка при отваряне на \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Грешка при отваряне на \"%1\" - неподдържан формат на изображение.\n" +"Файлът може да е повреден." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Грешка при запис на изображение - непълни данни." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Адрес: %1\n" +"Вид по MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<празно>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Вътрешна грешка" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

      The %1 format may not be able to preserve all of the image's " +"color information.

      Are you sure you want to save in this format?

      " +msgstr "" +"

      Записът на изображението във формат \"%1\" може да доведе до загуба " +"на качество.

      Сигурни ли сте, че искате изображението да бъде записано " +"в този формат?

      " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Файлов формат със загуби" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

      Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

      Are " +"you sure you want to save at this color depth?

      " +msgstr "" +"

      Записът на изображението с качество на цветовете от %1 бита може да " +"доведе до загуба на качество. Също така, прозрачността ще бъде премахната.

      Сигурни ли сте, че искате изображението да бъде записано с това " +"качество на цветовете?

      " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Ниска дълбочина на цветовете" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Грешка при запис на изображение - неуспешно създаване на временен файл." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Грешка при запис като \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Грешка при запазване на изображението" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Грешка при запис на изображение - неуспешно качване." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Премахване на &вътрешна граница" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Премахване на вътрешна граница" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "&Автоматично изрязване" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Автоматично изрязване" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"Вътрешната граница на избраното не може да бъде премахната, защото не може " +"да бъде определена." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Грешка при премахване на вътрешна граница" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"Не може да се извърши автоматично изрязване, защото не може да бъде " +"определена вътрешната граница на избраното." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Грешка при автоматично изрязване" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Задаване като изображение" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Избрано: създаване" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Програма за рисуване в KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Основател на проекта" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Главен разследващ" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Поддръжка на сканиране, поддръжка на прозрачност, текущ разработчик" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Икони" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Поддръжка на InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Ефекти за изображения" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Версия за KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF 5 порт" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Благодарим на многото хора, които помогнаха тази програма да види бял свят." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Изображение за отваряне, по избор" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Списък на поддържаните видове MIME" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "Из&глед" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Изображение" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Цветове" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Главна лента с инструменти" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Лента с инструменти за текст" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Меню на десния бутон с инструменти за избиране" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Редактиране" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Миниатюра" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Хванете и влачете за промяна на размера." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Преоразмеряване: отпуснете всички бутони на мишката." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Преоразмеряване: десен бутон за отказ." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Текст" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Грешка при отваряне на палитра \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Грешка при отваряне на палитрата \"%1\" - неподдържан формат.\n" +"Файлът може да е повреден." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Грешка при отваряне на цветова палитра на KDE \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Грешка при запис на палитрата като \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Неозаглавено" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Използване подразбиращите се за KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Използване от KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Отваряне..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Презаре&ждане" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Запис" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Запис &като..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Добавяне на ред" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Изтриване на последния ред" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Цветово поле" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Палитрата \"%1\" е променена.\n" +"Искате ли да се запише?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Палитрата на KDE \"%1\" е променена.\n" +"Искате ли да се запише във файл?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Подразбиращата се цветова палитра е променена.\n" +"Искате ли да се запише във файл?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Отваряне на цветова палитра" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Цветовата палитра \"%1\" е променена.\n" +"При презареждане ще се загубят всички промени.\n" +"Сигурни ли сте, че искате да продължите?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Презаре&ждане" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Цветовата палитра на KDE \"%1\" е променена.\n" +"При презареждане ще се загубят всички промени.\n" +"Сигурни ли сте, че искате да продължител?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Подразбиращата се цветова палитра е променена.\n" +"При презареждане ще се загубят всички промени.\n" +"Сигурни ли сте, че искате да продължите?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Запис на палитрата като" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Поставяне в &нов прозорец" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Изтриване на избраното" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "К&опиране във файл..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Поставяне о&т файл..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Текст: създаване на поле" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Текст: поставяне" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint не може да постави съдържанието от клипборда, защото " +"съдържанието е с неизвестен формат." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Грешка при поставяне" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Текст: изтриване на поле" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Избрано: изтриване" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Текст: завършване" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Избрано: размаркиране" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Копиране във файл" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Поставяне от файл" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Изнасяне..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Претърсване..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Снимка на екрана" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Свойства" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Презаре&ждане" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Всички поддържани файлове (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Отваряне на изображение" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Грешка при отваряне на диалоговия прозорец за сканиране" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Сканирането е неуспешно" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Изчакване за снимката" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " секунда" +msgstr[1] " секунди" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Без изчакване" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Скриване на основния прозорец" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Данни на документ" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Запис на изображението като" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Изнасяне" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Документът \"%1\" е променен \n" +"При презареждане ще се загубят промените след последния запис.\n" +"Сигурни ли сте, че искате да бъде презареден?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Документът \"%1\" е променен \n" +"При презареждане ще се загубят промените след последния запис.\n" +"Сигурни ли сте, че искате документът да бъде презареден?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Отпечатване на изображението" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Трябва да запишете изображението преди да го изпратите.\n" +"Искате ли да се запише сега?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Документът \"%1\" е променен.\n" +"Искате ли да се запише?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "П&реоразмеряване и мащабиране..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "&Задаване като изображение (изрязване)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Вертикално обръщане" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Огледално по хоризонтала" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Завъртане..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Завъртане на&ляво" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Завъртане на&дясно" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Накланяне..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Намаляване до едно&цветно (dithered)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Намаляване до &сива гама" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Обръщане на цветовете" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "И&зчистване" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Задаване като поверителен" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Допълнителни ефекти..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Изображение" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "&Избрано" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Показване на п&ът" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Изчертаване с изглаждане" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Вид шрифт" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Размер на шрифт" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Получер" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Курсив" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Подчертан" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Задраскан" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Предишен инструмент (група 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Следващ инструмент (група 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Предишен инструмент (група 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Следващ инструмент (група 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Рисуване с &непрозрачност" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Рисуване с подобни цветове..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Кутия с инструменти" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Показване на &мрежа" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Показване на &миниатюра" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Режим увеличени &миниатюри" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Включване на &квадратни миниатюри" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Мащабиране" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Придобиване на изображение" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Грешка при отваряне на избрания скенер." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Четка" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Рисуване с четка с различни форми и размери" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Щракнете за точки или движете мишката за рисуване на щрихи." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Изтриване на цвят" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Заместване на пиксели от цвета на преден план с цвета на фона" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" +"Щракнете или движете мишката, за да изтриете пиксели от цвета на преден план." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Гума" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Изтриване с гума" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Щракнете или движете мишката, за да изтриете." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Отпуснете всички бутони на мишката." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Писалка" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Рисуване на точки и щрихи" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Спрей" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Пръскане със спрей за графити" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Щракване или изтегляне за пръскане с графити." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2%)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Десен бутон за отказ." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Ляв бутон за отказ." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Избор на цвят от изображението" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Щракнете за избор на цвят." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Запълване на области в изображението" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Щракнете за запълване на област." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Мащабиране" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Увеличаване и намаляване на изображението" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "Щракнете с мишката за увеличаване или намаляване." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Крива" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Рисуване на криви" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Движете мишката от началната до крайната точка." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Изтегляне с левия бутон на мишката за задаване на първата контролна точка " +"или десен бутон за край." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Изтегляне с десния бутон на мишката за задаване на първата контролна точка " +"или ляв бутон за край." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Изтегляне с левия бутон на мишката за задаване на последната контролна точка " +"или десен бутон за край." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Изтегляне с десния бутон на мишката за задаване на последната контролна " +"точка или ляв бутон за край." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Линия" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Рисуване на линии" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Движете мишката, за да рисувате." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Многоъгълник" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Рисуване на многоъгълници" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Движете мишката, за да нарисувате първата линия." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Изтегляне с левия бутон на мишката за друга линия или десен бутон за край." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Изтегляне с десния бутон на мишката за друга линия или ляв бутон за край." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Свързани линии" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Рисуване на свързани линии" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Елипса" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Рисуване на елипси и окръжности" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Правоъгълник" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Рисуване на правоъгълници и квадрати" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Заоблен правоъгълник" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Рисуване на правоъгълници и квадрати със заоблени ъгли" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Изтегляне с левия бутон за избиране на област." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Изтегляне с левия бутон за преместване на избраното." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Изтегляне с левия бутон за мащабиране на избраното." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Избрано: непрозрачност" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Избрано: прозрачност" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Избрано: прозрачен цвят" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Избрано: подобен прозрачен цвят" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Елиптично избиране" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Избиране на елипсовидна или кръгла област от изображението" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Свободно избиране" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Свободно избиране на област от изображението" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Правоъгълно избиране" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Избиране на правоъгълна област от изображението" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Избрано: преместване" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: замазване" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Писане на текст" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Текст: връщане назад" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Текст: изтриване" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Текст: нов ред" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Текст: писане" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Изтегляне с левия бутон за създаване на текстово поле." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Изтегляне с левия бутон за преместване на текстовото поле." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Текст: преместване на поле" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Изтегляне с левия бутон за промяна на размера на текстовото поле." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Щракване с левия бутон за промяна позицията на курсора." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Текст: непрозрачен фон" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Текст: прозрачен фон" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Текст: размяна на цветове" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Текст: цвят на текста" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Текст: цвят на фона" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Текст: шрифт" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Текст: размер на шрифт" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Текст: получер" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Текст: курсив" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Текст: подчертан" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Текст: зачертан" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Немащабиран режим - миниатюра" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - миниатюра" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      To configure it, click on the cube.

      " +msgstr "" +"

      Сходство на цветовете колкосходни трябва да бъдат " +"цветовете на различните пиксели, за да се приемат като еднакви при " +"операциите.

      Ако го настроите на нещо различно от Напълно " +"съвпадане, ще можете да бъдете по-ефективни с изображения и снимки, " +"сравними с тези на функцията \"Вълшебна пръчица\" на други програми за " +"рисуване

      Тази функция може да се приложи на:

      • Селекции: В режим Прозрачен. Всеки цвят в селекцията, който е сходен с цвета на фона ще бъде направен прозрачен.
      • Запълване: За " +"области със сходни, но неидентични цветни пиксели, по-високи " +"стойности ще запълни повече пиксели.
      • Изтриване на цвят: " +"Всеки пиксел, който е сходен с цвета на преден план ще бъде заменен с " +"цвета на фона.
      • Автоизрязване и Премахване на вутрешни " +"рамки: За рамки със сходни , но неидентични цветни пиксели, по-" +"високи стойности ще изреже цялата рамка.

      По-високите настройки " +"означават, че операциите смятат, че увеличения обхват от цветове е " +"достатъчно сходен, за да се приемат за еднакви. Затова трябва да " +"увеличите стойностите, ако операциите не засягат пикселите, чиито цветове " +"смятате за достатъчно сходни.

      Ако обаче имат твърде подчертанефект и " +"променяте пиксели, чиито цветове не смятате за подобни (напр. ако " +"Запълване променя твърде много пиксели), ще трябва да намалите " +"стойностите .

      За да го конфигурирате, щракнете върху куба.

      " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      " +msgstr "" +"

      Сходство на цветовете колкосходни трябва да бъдат " +"цветовете на различните пиксели, за да се приемат като еднакви при " +"операциите.

      Ако го настроите на нещо различно от Напълно " +"съвпадане, ще можете да бъдете по-ефективни с изображения и снимки, " +"сравними с тези на функцията \"Вълшебна пръчица\" на други програми за " +"рисуване

      Тази функция може да се приложи на:

      • Селекции: В режим Прозрачен. Всеки цвят в селекцията, който е сходен с цвета на фона ще бъде направен прозрачен.
      • Запълване: За " +"области със сходни, но неидентични цветни пиксели, по-високи " +"стойности ще запълни повече пиксели.
      • Изтриване на цвят: " +"Всеки пиксел, който е сходен с цвета на преден план ще бъде заменен с " +"цвета на фона.
      • Автоизрязване и Премахване на вутрешни " +"рамки: За рамки със сходни , но неидентични цветни пиксели, по-" +"високи стойности ще изреже цялата рамка.

      По-високите настройки " +"означават, че операциите смятат, че увеличения обхват от цветове е " +"достатъчно сходен, за да се приемат за еднакви. Затова трябва да " +"увеличите стойностите, ако операциите не засягат пикселите, чиито цветове " +"смятате за достатъчно сходни.

      Ако обаче имат твърде подчертанефект и " +"променяте пиксели, чиито цветове не смятате за подобни (напр. ако " +"Запълване променя твърде много пиксели), ще трябва да намалите " +"стойностите .

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

      Color Similarity: %1%

      Click to configure.

      " +msgstr "" +"

      Подобие на цветове: %1%

      Натиснете за настройка.

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

      Color Similarity: Exact Match

      Click to configure." +msgstr "" +"

      Подобие на цветове: точно съвпадение

      Натиснете за " +"настройка.

      " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Яркост:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Възстановяване" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Кон&траст:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Гама:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&Възстановяване" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Ка&нали:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Всички" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Червено" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Зелено" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Синьо" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Възстановяване на вси&чко" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Настройки" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "Коли&чество:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Вкл&ючване" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Цветове" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Оттенък:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "На&сищане:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Стойност:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Червено" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Зелено" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Синьо" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Всички" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Канали" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Едноцветно" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Едно&цветно (dithered)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &цвята" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 цв&ята (dithered)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24 &битов цвят" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Намаляване до" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Зърненост:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

      To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

      To change the color of a color cell itself, double-click on it.

      You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

      " +msgstr "" +"

      За да изберете цвета на преден план, който инструментите използват за " +"рисуване, щракнете с левия бутон на мишката върху цветна клетка. За да " +"изберете цвета на фона, вместо това щракнете с десния бутон.

      За да " +"промените цвета на самата цветна клетка, щракнете два пъти върху нея.

      Можете също така да смените цвета на цветната клетка с всяка друга " +"клетка с влачене и пускане с мишката. Също така, ако задържите клавиша " +"Ctrl цветът на клетката на дестинацията ще бъде презаписан, вместо да " +"бъде подменен с цвета на изходната клетка.

      " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Пре&образуване в:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Ка&чество:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Пре&глед" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Едноцветно" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Едноцветно (dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 цвята" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 цвята (dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24 битов цвят" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Позиция на &изображението" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "В &центъра на страницата" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "В &горен ляв ъгъл на страницата" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Прозрачност" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "По подразбиране за KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Цветове: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Цветове: %1 [променено]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Окръжност" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Квадрат" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Наклонена черта" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Обратно наклонена черта" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Без запълване" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Запълване с цвета на фона" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Запълване с цвета на преден план" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Непрозрачност" diff --git a/po/bs/kolourpaint.po b/po/bs/kolourpaint.po new file mode 100644 index 0000000..9d196e1 --- /dev/null +++ b/po/bs/kolourpaint.po @@ -0,0 +1,2799 @@ +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2015-01-06 06:28+0000\n" +"Last-Translator: Nejra Pašić \n" +"Language-Team: \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Launchpad (build 17341)\n" +"X-Launchpad-Export-Date: 2015-02-15 06:01+0000\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Aldin Kapetanovic, Samir Ribić,Nejra Pašić" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "Aldinkapetanovic@gmail.com,samir.ribic@etf.unsa.ba,npasic1@etf.unsa.ba" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balans" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Umekšaj" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Izoštri" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Očisti" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selekcija: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Ugraviraj" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Spljoštiti" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Snizi na nijanse sive" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Nijansa, Zasićenje, Vrijednost" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Izokreni boje" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Izokreni" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Snizi na monohromatski (Dithered)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Snizi na monohromatski" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Snizi na 256 boja (Dithered)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Snizi na 256 boja" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogram ujednačenja" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Okreni" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Okreni vodoravno i uspravno" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Okreni vodoravno" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Okreni uspravno" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Tekst: Promijeni veličinu kutije" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Izbor: skaliraj" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Izbor: Komotna skala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Promijeni veličinu" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Razmjera" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Komotna skala" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rotiraj" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Iskrivi" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Poništi: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Poništi" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Vrati: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Vrati" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Poništi: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Poništi" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Vrati: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Vrati" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 stavka preostala" +msgstr[1] "%1 stavke preostale" +msgstr[2] "%1 stavki preostalo" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Izbornik boja" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Popunjavanje" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Više efekata slike (Selekcija)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Više efekata slike" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Smanji boje" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Smekšanost & Izoštrenost" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Svojstva dokumenta" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Tačaka &po inču (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nenavedeno" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Vodoravno:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Uspravno:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

      Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

      The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

      If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

      If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

      Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Tačaka po inču (DPI) određuje broj piksela slike koji bi " +"trebali biti štampani unutar jednog inča(2.54cm).

      Što je veći DPI, " +"manja je odšampana slika. Imajte na umu da je malo vjerovatno da će štampač " +"proizvesti visokokvalitetne ispise ako to povećati to na više od 300 ili 600 " +"DPI, ovisno o štampaču.

      Ako želite odštampati sliku, tako da je iste " +"veličine kao što je prikazano na ekranu, postavite sliku na DPI vrijednosti " +"iste koje ima ekran.

      Ako je i jedna DPI vrijednost Nenavedena, " +"slika će se štampati istom veličinom kao na ekranu.

      Ne podržavaju svi " +"formati DPI vrijednosti. Ako format u kojim snimate ih ne podržava, one neće " +"biti snimljene.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Po&mak" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

      The Offset is the relative position where this image should be " +"placed, compared to other images.

      Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

      " +msgstr "" +"

      Pomakje relativni položaj gdje je slika trebala biti " +"smještena, u odnosu na druge slike.

      Ne podržavaju svi formati slika " +"Pomak. Ako ste snimili u format koji ih ne podržava, vrijednosti " +"specificirane ovdje neće biti snimljene.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Tekstualna polja" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Dodaj red" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Obriši red" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Poništi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

      Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

      However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

      Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Tekst poljadaju dodatne informacije o slici. To je vjerojatno " +"komentar područjeu koje možete slobodno napisati bilo koji tekst u.

      Međutim, to je format specifično tako da bi polja teoretski mogla biti " +"računarski-interpretirani podaci - koje ne treba mijenjati - ali to je malo " +"vjerojatno.

      Ne podržavaju svi formati slika Tekstualna polja. " +"Ako format u kojim ih spremate ne podržava, oni neće biti spašeni.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Ključ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Vrijednost" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Tekstualna vrijednost \"%1\" u redu %2 zahtijeva ključ." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Svi tekstualni ključevi moraju biti jedinstveni. Tekstualni ključevi \"%1\" " +"na linijama %2 i %3 su identični." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Nevažeća tekstualna polja" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimenzije" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Prikaz" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Ažuriraj" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Promijeni veličinu / Razmjera" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Ak&t na:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Cijela slika" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selekcija" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Tekst kutija" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operacija" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
      • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
      • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
      • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
      " +msgstr "" +"
      • Promijeni veličinu: Veličina slike će biti povećana " +"pravljenjem novih oblasti desno i/ili na dnu (popunjenih bojom pozadine) ili " +"smanjena odsijecanjem djela desno i/ili na dnu.
      • Skaliraj: " +"Slika će biti proširena udvostručavanjem piksela ili sabijena ispuštanjem " +"piksela.
      • Glatko skaliraj: Ovo je isto kao Skaliraj, " +"osim što stapa susjedne piksele kako bi se napravila manje nazubljena slika." +"
      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Promijeni veličinu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Razmjera" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Ko&motna skala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Širina:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Visina:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Novo:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "P&ostotak:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Zadrži &razmjeru izgleda" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

      Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to resize the text box?

      " +msgstr "" +"

      Promjena veličine tekstualnog okvira na %1x%2 zahtijeva dosta " +"memorije. To će smanjiti reagovanje sistema i izazvati druge probleme s " +"programskim resursima.

      Da li ste sigurni da želite promijeniti " +"veličinu okvira

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Promijeni veličinu tekst kutije?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Pr&omijeni veličinu tekst kutije" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

      Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to resize the image?

      " +msgstr "" +"

      Promjena veličine slike na %1x%2 zahtijeva dosta memorije. To će " +"smanjiti reagovanje sistema i izazvati druge probleme s programskim " +"resursima.

      Da li ste sigurni da želite promijeniti veličinu slike

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Promijeni veličinu slike?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "P&romijeni veličinu slike" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

      Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to scale the image?

      " +msgstr "" +"

      Skaliranje slike na %1x%2 zahtijeva dosta memorije. To će smanjiti " +"reagovanje sistema i izazvati druge probleme s programskim resursima.

      Da li ste sigurni da želite skaliranje slike

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Mijenjaj razmjeru slike?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Mi&jenjaj razmjeru slike" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

      Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to scale the selection?

      " +msgstr "" +"

      Skaliranje izbora na %1x%2 zahtijeva dosta memorije. To će smanjiti " +"reagovanje sistema i izazvati druge probleme s programskim resursima.

      Da li ste sigurni da želite skaliranje izbora

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Mijenjaj razmjeru selekcije?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Mij&enjaj razmjeru selekcije" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

      Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the image?" +msgstr "" +"

      Glatko skaliranje slike na %1x%2 zahtijeva dosta memorije. To će " +"smanjiti reagovanje sistema i izazvati druge probleme s programskim " +"resursima.

      Da li ste sigurni da želite glatko skaliranje slike

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Glatko skaliranje slike?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Glatko skaliranj&e slike" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

      Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the selection?" +"

      " +msgstr "" +"

      Glatko skaliranje izbora na %1x%2 zahtijeva dosta memorije. To će " +"smanjiti reagovanje sistema i izazvati druge probleme s programskim " +"resursima.

      Da li ste sigurni da želite glatko skaliranje izbora

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Glatko skaliranje izbora?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Glatko skaliranje izbora" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rotiraj izbor" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rotiraj sliku" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Nakon rotacije:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Smjer" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Supr&otno kretanju kazaljki na satu" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "U s&mjeru kazaljki na satu" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Ugao" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &stepeni" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 stepen&i" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 step&eni" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "P&rilagođeno:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "stepeni" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

      Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

      Are you sure want to rotate the selection?

      " +msgid "" +"

      Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to rotate the selection?

      " +msgstr "" +"

      Rotiranje izbora na %1x%2 zahtijeva dosta memorije. To će smanjiti " +"reagovanje sistema i izazvati druge probleme s programskim resursima.

      Da li ste sigurni da želite rotiranje izbora

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rotiraj selekciju?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rotira&j selekciju" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

      Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

      Are you sure want to rotate the image?

      " +msgid "" +"

      Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to rotate the image?

      " +msgstr "" +"

      Rotiranje slike na %1x%2 zahtijeva dosta memorije. To će smanjiti " +"reagovanje sistema i izazvati druge probleme s programskim resursima.

      Da li ste sigurni da želite rotiranje slike

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rotiraj sliku?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rotiraj sli&ku" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Iskosi izbor" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Iskosi sliku" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Nakon izvrtanja:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Vodoravno:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Uspravno:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

      Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

      Are you sure want to skew the selection?

      " +msgid "" +"

      Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to skew the selection?

      " +msgstr "" +"

      Iskrivljenje izbora na %1x%2 zahtijeva dosta memorije. To će smanjiti " +"reagovanje sistema i izazvati druge probleme s programskim resursima.

      Da li ste sigurni da želite iskrivljenje izbora

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Iskrivi selekciju?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Is&krivi selekciju?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

      Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

      Are you sure want to skew the image?

      " +msgid "" +"

      Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to skew the image?

      " +msgstr "" +"

      Iskrivljenje slike na %1x%2 zahtijeva dosta memorije. To će smanjiti " +"reagovanje sistema i izazvati druge probleme s programskim resursima.

      Da li ste sigurni da želite iskrivljenje slike

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Iskrivi sliku?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Iskri&vi sliku?" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Sličnost boja" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB udaljenost obojene kocke" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Tačan pogodak" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "
      What is Color Similarity?" +msgstr "Šta je sličnost boja?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Snimi prikaz" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 bajt (oko %2%)" +msgstr[1] "%1 bajta (oko %2%)" +msgstr[2] "%1 bajtova (oko %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Nisam mogao otvoriti \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Nije moguće otvoriti „%1“ - format slike nije podržan.\n" +"Datoteka je možda oštećena." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Nisam mogao snimiti sliku - nedovoljno informacija." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mime tip: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Interna greška" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

      The %1 format may not be able to preserve all of the image's " +"color information.

      Are you sure you want to save in this format?

      " +msgstr "" +"

      %1 možda neće moći sačuvati sve informacije o boji slike.

      Sigurno želite snimiti u ovom formatu?

      " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Lossy format datoteke" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

      Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

      Are " +"you sure you want to save at this color depth?

      " +msgstr "" +"

      Snimanje slike na nisku dubinu boja od %1-bit može rezultovati " +"gubitkom informacije o bojama. Prozirnost će također biti uklonjena.

      Želite li snimiti na ovu dubinu boja?

      " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Niska dubina boje" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Nisam mogao da snimim sliku - nemogućnost pravljenja privremene datoteke." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Ne mogu snimiti kao \"%1\"." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Ne mogu snimiti sliku kao - neuspjeh uploada." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Premjesti unutrašnju g&ranicu" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Premjesti unutrašnju granicu" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Auto&izrezivanje" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Autoizrezivanje" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint ne može premjestiti unutrašnju granicu selekcije jer je ne može " +"se locirati." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Ne mogu premjestiti unutrašnju granicu" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint ne može automatski izrezati sliku jer njena granica nemože biti " +"locirana." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Ne mogu autoizrezivati" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Postavi kao sliku" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selekcija: Napravi" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "Program za crtanje za KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projekt započeo" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Glavni istražitelj" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Podrška za skeniranje, alfa podrškam trenutno održava" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikone" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Podrška za metode unosa" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efekti slika" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 prilagođenje" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "KDE 4 prilagođenje" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Hvala mnogim drugima koji su pomogli da je ovaj program moguć." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "Slika datoteka za otvaranje" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Pogled" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Slika" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Boje" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Glavna alatna traka" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Traka sa tekstualnim alatima" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Meni desnog dugmet miša za alat izbora" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Izmijeni" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Sličica" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Lijevim dugmetom vucite ručku kako biste promijenili veličinu slike." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Promijeni veličinu slike: Let go of all the mouse buttons." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Promijeni veličinu slike: Desni klik za odustani." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Ne mogu otvoriti paletu boja \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Ne mogu otvoriti paletu boja \"%1\" - nepodržan format.\n" +"Datoteka je možda oštećena." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Ne mogu otvoriti KDE paletu boja \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Ne mogu spremiti paletu boja kao \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Bez naslova" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Koristite KolourPaint zadano" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Koristi KDE-ovo" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Otvori..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Ponovo &učitaj" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Snimi" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Snimi k&ao..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Dodaj red" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Obriši zadnji red" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Kutija boja" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Paleta boja \"%1\" je bila mijenjana.\n" +"Želite li je snimiti?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE paleta boja \"%1\" je izmijenjena.\n" +"Želite li je snimiti u datoteku?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Podrazumijevana paleta boja je izmijenjena.\n" +"Želite li je snimiti u datoteku?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Otvori paletu boja" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Paleta boja \"%1\" je izmijenjena.\n" +"Ponovnim učitavanjem će se izgubiti sve promjene od zadnjeg snimanja.\n" +"Jeste li sigurni?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Ponovo učitaj" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE paleta boja \"%1\" je izmijenjena.\n" +"Ponovnim učitavanjem će se izgubiti sve promjene.\n" +"Jeste li sigurni?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Podrazumijevana paleta boja je izmijenjena.\n" +"Ponovnim učitavanjem će se izgubiti sve promjene.\n" +"Jeste li sigurni?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Snimi paletu boja kao" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Umetni u &Novi prozor" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Briši selekciju" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opiraj u datoteku..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Umetni &Iz dateteke..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Tekst: Napravi okvir" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Tekst: Umetni" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint ne može umetnuti sadržaj odlagališta jer ima nepoznat format." +"" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Ne mogu umetnuti" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Tekst: Izbriši okvir" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selekcija: Izbriši" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Tekst: Završeno" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selekcija: Deselektuj" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopiraj u datoteku" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Umetni iz datoteke" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Izvezi..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skeniraj..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Pravljenje snimaka ekrana" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Svojstva" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&Ponovo učitaj" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Otvori sliku" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Kašnjenje slike ekrana" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekunda" +msgstr[1] " sekunde" +msgstr[2] " sekundi" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Bez kašnjenja" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Sakrij glavni prozor" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Svojstva dokumenta" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Snimi sliku kao" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Izvezi" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokument \"%1\" je izmijenjen.\n" +"Ponovnim učitavanjem će se izgubiti sve promjene koje ste zadnji put " +"spasili.\n" +"Dali ste sigurni?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokument \"%1\" je izmijenjen.\n" +"Ponovnim učitavanjem će se izgubiti sve promjene.\n" +"Dali ste sigurni?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Štampaj sliku" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Prije nego što pošaljete sliku morate je spasiti.\n" +"Želite li je spasiti?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokument \"%1\" je izmijenjen.\n" +"Želite li ga snimiti?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "P&romijeni veličinu / Skale..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "P&ostavi kao sliku (Isjeci)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Prevrni (odozgo prema dole)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Ogledalo vodoravno" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "R&otiraj..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rotiraj &lijevo" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rotiraj &Desno" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Is&kriviti..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Snizi na mo&nohromatsko (Dithered)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Snizi na N&ijanse sive" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "I&zokreni boje" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Očisti" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Vi&še efekata..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Slika" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Oda&bir" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Prikaži &putanju" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Familija fontova" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Veličina slova" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Podebljano" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kurzivno" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Podvučeno" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Linija preko" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Prethodne opcije alata (Grupa #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Sljedeće opcije alata (Grupa #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Prethodne opcije alata (Grupa #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Sljedeće opcije alata (Grupa #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Crtaj &neprozirno" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Crtanje u boji sličnosti ..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Kutija alata" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Pokaži &mrežu" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Prikaži T&humbnail" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Režim &uveličanih minijatura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Uključi &pravougaonik minijatura" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Uvećaj" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Cijela slika" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Četka" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Crtaj koristeći četke različitih oblika i veličina" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Kliknite za crtanje tačaka ili prevucite za poteze." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Brisač boje" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Zamjenjuje piksele prednje strane boje sa bojom pozadine" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Kliknite ili povucite za brisnje boje piksela prednje strane." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Guma za brisanje" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Omogućava vam da izbrišete greške" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Kliknite ili povucite za brisanje." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Otpusti sve tipke miša." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Olovka" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Crta tačke i poteze slobodnom rukom" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Sprej" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Grafiti sprejom" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Kliknite ili povucite za spray graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Desno kliknite da poništite." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Lijevo kliknite da poništite." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Dopušta vam da izaberete boju sa slike" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Kliknite da odaberete boju." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Puni područja slike" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Kliknite za punjenje područja." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Uvećaj" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Zumira i umanjuje sliku" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Kliknite da uvećate/umanjite ili vucite lijevom tipkom da uvećate određeno " +"područje." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Krivina" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Crtaj krivine" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Povucite početne i krajnje tačke." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Lijevo prevucite za postavljanje prve kontrolne tačke ili desno kliknite za " +"kraj." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Desno prevucite za postavljanje prve kontrolne tačke ili lijevo kliknite za " +"kraj." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Lijevo prevucite za postavljanje zadnje kontrolne tačke ili desno kliknite " +"za kraj." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Desno prevucite za postavljanje zadnje kontrolne tačke ili lijevo kliknite " +"za kraj." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linija" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Crta linije" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Povucite za crtanje." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Mnogougao" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Crta mnogouglove" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Povucite za crtanje prve linije." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Lijevo prevucite za još jednu liniju ili desno kliknite za kraj." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Desno prevucite za još jednu liniju ili lijevo kliknite za kraj." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Spojene linije" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Crta spojene linije" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipsa" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Crtaj elipse i krugove" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Pravougaonik" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Crta pravougaonike i kvadrate" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Zaobljen pravougaonik" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Crta pravougaonike i kvadrate sa zaobljenim ćoškovima" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Lijevo povlačenje za pravljenje selekcije." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Lijevo povlačenje za pomjeranje selekcije." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Lijevo povlačenje za promjenu razmjere selekcije." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selekcija: neprozirnost" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selekcija: transparentnost" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selekcija: transparentnost boje" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selekcija: transparentnost sličnih boja" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selekcija (elipsasta)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Pravi elipsastu ili kružnu selekciju" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selekcija (proizvoljna forma)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Pravi selekciju proizvoljne forme" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selekcija (pravougaonasta)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Pravi pravougaonastu selekciju" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selekcija: pomjeraj" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Mrlja" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Piši tekst" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Tekst: obriši" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Tekst: nova linija" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Tekst: piši" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Lijevo povlačenje za pravljenje tekst kutije." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Lijevo povlačenje za pomjeranje tekst kutije." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Tekst: Pomjeraj kutiju" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Lijevo povlačenje za promjenu veličine tekst kutije." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Lijevi klik za promjenu pozicije kursora." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Tekst: Neprozirna pozadina" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: transparentna pozadina" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Tekst:zamijeni boje" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Tekst:boja prednje strane" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Tekst:boja pozadine" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Tekst: font" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Tekst: veličina fonta" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Tekst: podebljano" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Tekst: ukošeno" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Tekst: podvučeno" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Tekst: linija preko" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Nerašireni režim - Sličica" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Sličica" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      To configure it, click on the cube.

      " +msgstr "" +"

      Sličnost boja je koliko slične boje različitih piksela " +"moraju biti da bi ih operacije smatrale istim.

      Ako postavite na drugu " +"vrijednost od Tačno poklapanje, možete učinkovitije raditi s dithered " +"slike i fotografije, na slično opciji \"čarobni štapić\" drugih programa za " +"boje.

      Ta mogućnost se odnosi na:

      • Izbore: U " +"Transparentnom režimu, svaka boja koja je slična boji pozadine " +"će postati transparentna.
      • Popunjavanje: Za regione s " +"slično -ali ne identično - obojenim pikselima, veća postavka je " +"vjerojatna da će ispuniti više piksela.
      • Brisač boja: Svaki " +"piksel čija je boja slična boji crteža biće zamijenjena bojom " +"pozadine.
      • Auto rezanje i Ukloni internu granicz: Za " +"ivice s sličnim - ali ne idntično - obojenim pikselima, veća postavka " +"je više vjerojatno da obrezujete cijelu ivicu.

      Više postavke " +"znači da operacije smatraju povećano raspon boja biti dovoljnosličnim " +"da se smatra istim. Stoga, trebali povećati postavku ako gore navedene " +"radnje ne utječuna piksele čije boje uzmete u obzir da su slične dovoljno.

      Međutim, ako maju previše učinka i mijenjaju piksele čije boje ne " +"smatrate sličnim (npr. ako Ispunjavanje mijenja previše tačaka), " +"trebate smanjiti ovu postavku.

      Da je konfigurišete, kliknite na kocku." +"

      " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      " +msgstr "" +"

      Sličnost boja je koliko slične boje različitih piksela " +"moraju biti da bi ih operacije smatrale istim.

      Ako postavite na drugu " +"vrijednost od Tačno poklapanje, možete učinkovitije raditi s dithered " +"slike i fotografije, na slično opciji \"čarobni štapić\" drugih programa za " +"boje.

      Ta mogućnost se odnosi na:

      • Izbore: U " +"Transparentnom režimu, svaka boja koja je slična boji pozadine " +"će postati transparentna.
      • Popunjavanje: Za regione s " +"slično -ali ne identično - obojenim pikselima, veća postavka je " +"vjerojatna da će ispuniti više piksela.
      • Brisač boja: Svaki " +"piksel čija je boja slična boji crteža biće zamijenjena bojom " +"pozadine.
      • Auto rezanje i Ukloni internu granicz: Za " +"ivice s sličnim - ali ne idntično - obojenim pikselima, veća postavka " +"je više vjerojatno da obrezujete cijelu ivicu.

      Više postavke " +"znači da operacije smatraju povećano raspon boja biti dovoljnosličnim " +"da se smatra istim. Stoga, trebali povećati postavku ako gore navedene " +"radnje ne utječuna piksele čije boje uzmete u obzir da su slične dovoljno.

      Međutim, ako maju previše učinka i mijenjaju piksele čije boje ne " +"smatrate sličnim (npr. ako Ispunjavanje mijenja previše tačaka), " +"trebate smanjiti ovu postavku.

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

      Color Similarity: %1%

      Click to configure.

      " +msgstr "" +"

      Sličnost boja: %1%

      Klik za konfiguraciju.

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

      Color Similarity: Exact Match

      Click to configure." +msgstr "" +"

      Sličnost boja: Tačno slaganje

      Klik za " +"konfiguraciju.

      " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Osvjetljenost:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Po&ništi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gama:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Poniš&ti" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Ka&nali:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Sve" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Crvena" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Zelena" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Plava" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Poništi &sve vrijednosti" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Postavke" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "Količin&a:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "U&ključiti" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Boje" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Nijansa:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Zasićenost:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Vrijednost:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Crvena" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Zelena" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Plava" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Sve" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanali" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monohromatski" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mono&hromatsko (zamućeno)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &boja" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 boj&a (zamućeno)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-bi&tne boje" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Svedi na" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularnost:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

      To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

      To change the color of a color cell itself, double-click on it.

      You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

      " +msgstr "" +"

      Za odabir boje teksta koje alate koristiti za crtanje, lijevom tipkom " +"miša kliknite na popunjenu ćeliju u boji . Da biste odabrali boju pozadine, " +"kliknite desnom tipkom miša umjestotoga.

      Za promjenu boje same ćelije, " +"dvaput kliknite na njeu.

      Također možete mijenjati boju popunjene " +"ćelije s bilo kojom drugom ćelijom pomoću prevlačenja i ispuštanja. Takođe, " +"ako držite Ctrl taster, odredišna boja ćelije će biti prebrisana, " +"umjesto da se zamijenili s bojom izvorne ćelije.

      " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Pro&mijeni u:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kvali&tet:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Prikaz" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monohromatski" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monohromatski (Dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 boja" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 boja (Dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bit boja" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "P&ozicija slike" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centar stranice" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Gore &lijevo stranice" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparentnost" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint podrazumijevano" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Boje: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Boje: %1 [modified]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Krug" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Kosa crta" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Naopaka kosa crta" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Bez punjenja" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Puni sa bojom pozadine" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Puni sa bojom prednje strane" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Neprovidno" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Dokument zvani \"%1\" već postoji.\n" +#~ "Želite li da ga prepišete?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Paleta bojas imenom \"%1\" već postoji.\n" +#~ "Želite li je prepisati?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Postavljanjem uvećavajućeg niva na vrijednost koja nije množitelj od 100 " +#~ "rezultira nepreciznim editovanjem.\n" +#~ "Da li stvarno želite da postavite nivo uvećavanja na %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Postavi nivo povećavanja na %1%" + +#~ msgid "None" +#~ msgstr "Nijedan" + +#~ msgid "" +#~ "

      Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

      Are you sure want to resize the image?

      " +#~ msgstr "" +#~ "

      Promjenom veličin slike u %1x%2 može zauzeti bitan iznos memorije. " +#~ "Ovo može usporiti vaš sistem i uzrokovati probleme kod rada drugih " +#~ "aplikacija.

      Sigurno želite da promijenite veličinu slike?

      " + +#~ msgid "Overwrite" +#~ msgstr "Prepiši" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Nisam mogao otvoriti \"%1\" - nepoznat MIME tip." + +#~ msgid "Save Preview" +#~ msgstr "Snimi prikaz" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Za dobivanje podrške, posjetite web stranice." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Nema dodatka koji omogućava dijaloški prozor za rad s skenerom.\n" +#~ "To znači da paket koji daje ksaneplugin nije instaliran." + +#~ msgid "No Scanning Support" +#~ msgstr "Nema podrške za skeniranje" diff --git a/po/ca/docs/kolourpaint/KolourPaint.png b/po/ca/docs/kolourpaint/KolourPaint.png new file mode 100644 index 0000000..26c9300 Binary files /dev/null and b/po/ca/docs/kolourpaint/KolourPaint.png differ diff --git a/po/ca/docs/kolourpaint/image_balance.png b/po/ca/docs/kolourpaint/image_balance.png new file mode 100644 index 0000000..ec25141 Binary files /dev/null and b/po/ca/docs/kolourpaint/image_balance.png differ diff --git a/po/ca/docs/kolourpaint/image_emboss.png b/po/ca/docs/kolourpaint/image_emboss.png new file mode 100644 index 0000000..c9340a4 Binary files /dev/null and b/po/ca/docs/kolourpaint/image_emboss.png differ diff --git a/po/ca/docs/kolourpaint/image_flatten.png b/po/ca/docs/kolourpaint/image_flatten.png new file mode 100644 index 0000000..d6e3198 Binary files /dev/null and b/po/ca/docs/kolourpaint/image_flatten.png differ diff --git a/po/ca/docs/kolourpaint/image_invert.png b/po/ca/docs/kolourpaint/image_invert.png new file mode 100644 index 0000000..cd9e7a9 Binary files /dev/null and b/po/ca/docs/kolourpaint/image_invert.png differ diff --git a/po/ca/docs/kolourpaint/image_reduce_colors.png b/po/ca/docs/kolourpaint/image_reduce_colors.png new file mode 100644 index 0000000..d09221f Binary files /dev/null and b/po/ca/docs/kolourpaint/image_reduce_colors.png differ diff --git a/po/ca/docs/kolourpaint/image_resize_scale.png b/po/ca/docs/kolourpaint/image_resize_scale.png new file mode 100644 index 0000000..b3eb575 Binary files /dev/null and b/po/ca/docs/kolourpaint/image_resize_scale.png differ diff --git a/po/ca/docs/kolourpaint/image_rotate.png b/po/ca/docs/kolourpaint/image_rotate.png new file mode 100644 index 0000000..08731a9 Binary files /dev/null and b/po/ca/docs/kolourpaint/image_rotate.png differ diff --git a/po/ca/docs/kolourpaint/image_skew.png b/po/ca/docs/kolourpaint/image_skew.png new file mode 100644 index 0000000..afd52ad Binary files /dev/null and b/po/ca/docs/kolourpaint/image_skew.png differ diff --git a/po/ca/docs/kolourpaint/image_soften_sharpen.png b/po/ca/docs/kolourpaint/image_soften_sharpen.png new file mode 100644 index 0000000..79541ba Binary files /dev/null and b/po/ca/docs/kolourpaint/image_soften_sharpen.png differ diff --git a/po/ca/docs/kolourpaint/index.docbook b/po/ca/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..64ce68e --- /dev/null +++ b/po/ca/docs/kolourpaint/index.docbook @@ -0,0 +1,1770 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +El manual del &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +&traductor.Antoni.Bella; + + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +23 de març de 2018 +Aplicacions 18.04 + + +El &kolourpaint; és un programa de dibuix lliure i fàcil d'utilitzar creat per la comunitat &kde;. + + + +kolourpaint +kdegraphics + + + + + +Introducció +El &kolourpaint; és un programa de dibuix lliure i fàcil d'utilitzar creat per la comunitat &kde;. És perfecte per a tasques diàries, com ara: + + + +Pintura: dibuixar diagrames i pintar amb els dits. + + +Manipular captures de pantalla: obtenir i editar captures de pantalla. + + +Manipular imatges: editar fotografies i obtenir imatges; aplicar efectes. + + +Editar icones: dibuixar «clip art» i logos amb transparències. + + + + + + + + + + + + + +Ús del &kolourpaint; + +Feu clic als següents enllaços per explorar les capacitats del &kolourpaint;: + + + +Eines + + +Treballar amb els colors + + +Opcions de visualització + + +Efectes d'imatge + + + + + +Eines + +Una opció addicional al menú Arranjament permet definir si les eines s'utilitzen o no amb antialiàsing (per omissió). + + +Obtenir captures de pantalla + +Una captura de pantalla és una instantània del que hi ha a la pantalla del vostre ordinador. Pot ser útil per explicar algunes de les accions que s'han de realitzar per obtenir el resultat, o per mostrar el problema que heu trobat. +Per crear una captura de pantalla llesta per a la seva edició a la finestra del &kolourpaint; podeu utilitzar l'element Fitxer Obtén una captura de pantalla des del menú principal del &kolourpaint;. + + + + + + + +Utilitzant el diàleg obert podreu canviar el Retard de la captura de pantalla (en segons), i escollir Oculta la finestra principal durant la captura. Una vegada esteu llest per prendre una captura de pantalla, simplement feu clic a D'acord. La captura de pantalla presa es col·locarà directament a l'àrea d'edició del &kolourpaint;. + + + +Referència de les eines + +Una forma ràpida de seleccionar una eina al &kolourpaint; és prémer la drecera associada amb aquesta, descrita a continuació i en els consells sobre el Quadre d'eines. També podeu mantenir premudes les tecles &Alt;&Maj; mentre premeu la tecla, el qual és necessari quan s'escriu text (ja que les dreceres d'una sola tecla resten desactivades). Per exemple, per a seleccionar el pinzell, premeu &Alt;&Maj;B, o simplement B (quan no esteu escrivint text). + + + Pinzell (B) + + Eliminador de color (O) + + Selector de color (C) + + Línies connectades (N) + + Corba (V) + + El·lipse (E) + + Goma d'esborrar (A) + + Omple (F) + + Línia (L) + + Llapis (P) + + Polígon (G) + + Rectangle (R) + + Rectangle arrodonit (U) + + Selecció (el·líptica) (I) + + Selecció (Lliure) (M) + + Selecció (Rectangular) (S) + + Polvoritzador (Y) + + Text (T) + + + + + +Pinzell <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Per a dibuixar feu clic o clic i arrossegueu amb el pinzell. + + + + + + + + + + + + + + +Per a seleccionar la forma del pinzell feu clic sobre una de les formes. Podeu utilitzar una forma de pinzell circular, quadrada, barra o barra inversa. + + + + + + +El &BER; dibuixarà en el color de primer pla. El &BDR; dibuixarà en el color de fons. + + + +Selector de color <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Per establir el color de primer pla, feu clic esquerre sobre un píxel. Per establir el color de fons, feu clic dret sobre un píxel. El &kolourpaint; després retornarà a l'eina seleccionada prèviament. + + + + +Línies i polígons connectats <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu per a dibuixar línies connectades. L'eina de polígon s'utilitza de la mateixa manera, però, els punts d'inici i de final es connectaran automàticament per formar un polígon. + +El &BER; dibuixarà en el color de primer pla. El &BDR; dibuixarà en el color de fons. i també invertirà el color d'ompliment per als polígons. + +Podeu establir l'amplada de la línia. Per als polígons, també podreu establir l'estil de l'ompliment. + + + + +Corba <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu per a dibuixar una línia -això establirà els punts d'inici i final-. Podeu establir fins a dos punts de control per arrossegar. Per acabar la corba sense utilitzar ambdós o cap dels punts de control, feu clic amb l'altra botó del ratolí. L'eina de corba dibuixarà una Bézier cúbica. + +El &BER; dibuixarà en el color de primer pla. El &BDR; dibuixarà en el color de fons. + +També podeu establir l'amplada de la línia. + + + + +El·lipse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu per a dibuixar una el·lipse. + +El &BER; dibuixarà en el color de primer pla. El &BDR; dibuixarà en el color de fons, i invertirà el color de l'ompliment. + +També podeu establir l'amplada de la línia i l'estil de l'ompliment. + +Per a característiques addicionals, utilitzeu les tecles modificadores: + + + +Manteniu premuda la tecla &Maj; i arrossegueu per a dibuixar un cercle. + + +Per a dibuixar una el·lipse amb un punt central de la vostra elecció, manteniu premuda la tecla &Ctrl;, feu clic sobre el punt central, i arrossegueu fins que l'el·lipse tingui la mida i la forma correctes. + + +Per a dibuixar un cercle amb un punt central de la vostra elecció, manteniu premudes les tecles &Ctrl; i &Maj;, feu clic sobre el punt central, i arrossegueu fins que el cercle tingui la mida i la forma correctes. + + + + + + +Gomes + + +Goma d'esborrar <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu amb la goma d'esborrar per esborrar els errors. + + +A diferència d'altres eines, les gomes dibuixen en el color de fons. Per a dibuixar en el color de primer pla, utilitzeu el &BDR;. + + +La goma d'esborrar només té formes quadrades. Per a dibuixar amb altres formes com ara cercles utilitzeu el Pinzell i el &BDR;. + + +Feu doble clic sobre la icona «Goma d'esborrar» per esborrar tota la imatge. Això és equivalent a fer servir l'opció Neteja al menú «Imatge». + + + + + +Eliminador del color <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu per a substituir píxels del color de primer pla amb el color de fons. Per a substituir tots els píxels similars (però no necessàriament exactament iguals) amb el color de primer pla, com en imatges i fotografies difuminades, utilitzeu una opció per a Similitud del color que no sigui «Exacte». + + +A diferència d'altres eines, les gomes dibuixen en el color de fons. Per a substituir els píxels del color de fons amb el color de primer pla, utilitzeu el &BDR;. + + +Podeu configurar la mida de la goma d'esborrar. + + +Feu doble clic sobre la icona «Eliminador del color» per aplicar-ho a tota la imatge. + + + + + + +Omple <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic per omplir una regió. Per omplir una regió difuminada, utilitzeu una opció per a Similitud del color que no sigui «Exacte». + +El &BER; omplirà en el color de primer pla. El &BDR; omplirà en el color de fons. + + + +Línia <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu per a dibuixar una línia. + +El &BER; dibuixarà en el color de primer pla. El &BDR; dibuixarà en el color de fons. + +També podeu establir l'amplada de la línia. + + + + + + + + + + + + + + + + + + + + + +Manteniu premuda la tecla &Ctrl; per a dibuixar línies orientades segons un angle múltiple de 30 graus -aquestes són les línies en el diagrama vermell-. + + +Manteniu premuda la tecla &Maj; per a dibuixar línies orientades segons un angle múltiple de 45 graus -aquestes són les línies en el diagrama blau-. + + +Manteniu premudes les tecles &Ctrl; i &Maj; per a dibuixar línies orientades segons un angle múltiple de 30 o 45 graus -aquestes són les línies en el diagrama verd-. + + + + + + +Llapis <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic per a dibuixar un punt o feu clic i arrossegueu per a dibuixar una línia a mà alçada. + +El &BER; dibuixarà en el color de primer pla. El &BDR; dibuixarà en el color de fons. + + + + +Rectangles <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu per a dibuixar un rectangle. El rectangle arrodonit és un rectangle amb les cantonades arrodonides. + +El &BER; dibuixarà en el color de primer pla. El &BDR; dibuixarà en el color de fons, i invertirà el color de l'ompliment. + +També podeu establir l'amplada de la línia i l'estil de l'ompliment. + +Per a característiques addicionals, utilitzeu les tecles modificadores: + + + +Manteniu premuda la tecla &Maj; i arrossegueu per a dibuixar un quadrat. + + +Per a dibuixar un rectangle amb un punt central de la vostra elecció, manteniu premuda la tecla &Ctrl;, feu clic sobre el punt central, i arrossegueu fins que el rectangle tingui la mida i la forma correctes. + + +Per a dibuixar un quadrat amb un punt central de la vostra elecció, manteniu premudes les tecles &Ctrl; i &Maj;, feu clic sobre el punt central, i arrossegueu fins que el quadrat tingui la mida i la forma correctes. + + + + + + +Seleccions <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Utilitzeu les eines de selecció per a dibuixar el contorn d'una selecció. + +Per a moure la selecció, feu-hi clic i arrossegueu-la. La vista principal es desplaçarà en conseqüència, permetent que pugueu moure la selecció a una part de la imatge que actualment no es mostra. + +Podeu fer Redimensiona sobre tota la imatge o fer un Escalat suau de la selecció utilitzant les nanses corresponents. Manteniu premuda la tecla &Maj; mentre escaleu la selecció per a mantenir la relació d'aspecte. El &BDR; obrirà un menú contextual amb les ordres comunes Edita i Efectes de la imatge. + + +Podeu utilitzar les tecles del cursor mentre dibuixeu el contorn de la selecció o mentre el moveu. + + +Si manteniu premuda la tecla &Ctrl; abans de moure la selecció, llavors moureu una còpia. La selecció deixarà un rastre si es mou mentre es prem la tecla &Maj;. + + + + + + + + + + + + + +Hi ha dos modes de selecció: Opac (per omissió) i Transparent. Si utilitzeu el mode de selecció transparent, tots els píxels del color de fons seran transparents (sostracció del fons). Això permet enganxar una selecció sense el fons. Per dur a terme la sostracció del fons en una imatge difuminada, utilitzeu una opció per a Similitud del color que no sigui «Exacte». + + + + + + +Podeu aplicar efectes de la imatge a una selecció -vegeu la secció Efectes de la imatge per obtenir més informació-. + +És possible desar la selecció al fitxer emprant l'element Copia a un fitxer... des del menú contextual de la selecció o l'element EditaCopia a un fitxer... des del menú principal. + + + +Polvoritzador <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu per a polvoritzar un graffiti. Manteniu premut el botó del ratolí per a un polvoritzat més concentrat. + + + + + + + + + + + + + +Feu clic sobre una de les formes per a seleccionar la mida de la polvorització. Podeu seleccionar entre les mides de polvoritzacions de 9x9, 17x17 i 29x29. + + + + + + +El &BER; dibuixarà en el color de primer pla. El &BDR; dibuixarà en el color de fons. + + + + +Text <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Feu clic i arrossegueu una àrea en la qual voleu escriure text. Així que es mostrarà la vora i podreu començar a escriure el text. Feu clic i arrossegueu la vora per a moure-la. Podeu canviar la mida del quadre de text arrossegant les nanses o utilitzant el diàleg Redimensiona. + + +Si heu desseleccionat un quadre de text, podreu utilitzar el botó Desfés per editar el text de nou. + + + +Usar el color transparent + + + + + + + + +La imatge de l'esquerra mostra la imatge d'exemple. La imatge de la dreta mostra el text afegit amb fons opac i colors de fons. + + + + + + + + + +La imatge de l'esquerra mostra l'afegit de text amb colors de primer pla opacs i un color de fons transparent. La imatge de la dreta mostra l'afegit de text amb un color de primer pla transparent i un color de fons opac. + + + + +Opcions comunes de l'eina + + + + + + + + + + + + + +Feu clic sobre un dels quadrats per a seleccionar la mida de la goma d'esborrar. Podeu seleccionar entre quadrats amb longitud lateral de 2, 3, 5, 9, 17 i 29 píxels. + +L'ajust de la mida de la goma d'esborrar afectarà les Gomes d'esborrar. + + + + + + + + + + + +Feu clic sobre una de les línies per a seleccionar l'amplada de la línia. Podeu seleccionar entre les amplades de la línia d'1, 2, 3, 5 i 8 píxels. + +L'establiment de l'amplada de la línia afectarà les eines Línies connectades, Corba, El·lipse, Línia, Polígon, Rectangle i Rectangle arrodonit. + + + + + + + + + + + +Feu clic sobre un dels rectangles per a seleccionar l'estil de l'ompliment. Podeu seleccionar entre «No omplis», «Omple amb el color de fons» i «Omple amb el color de primer pla». L'establiment de l'estil de l'ompliment afectarà les eines El·lipse, Polígon, Rectangle i Rectangle arrodonit. + + + + + + + + + + +Treballar amb els colors + + +El quadre de colors + + + + + + + +Quadre de colors + + + + +El quadre de colors té 3 seccions principals: la «Tauleta de colors», la «Paleta de colors» i el «Selector de similitud dels colors». + +La tauleta de colors mostra el color de primer pla actual com un quadrat sobre d'un altre que representa el color de fons actual. En dibuixar amb el &BER;, s'utilitzarà el color de primer pla, i quan es dibuixi amb el &BDR; s'utilitzarà el color de fons (a excepció de les Gomes). Podeu fer clic a la fletxa de doble punta per intercanviar els colors de primer pla i de fons. + +La paleta de colors mostra una selecció de colors perquè escolliu. La piràmide translúcida representa el color transparent. Feu clic esquerre sobre un color per establir el color de primer pla i feu clic esquerre sobre un color per establir el color de fons. També podeu arrossegar i deixar anar qualsevol color opac als quadrats de la tauleta de colors. Per editar un color a la tauleta o la paleta de colors, feu-hi doble clic. L'eina Selector de colors permet seleccionar un color de la imatge. + +La similitud dels colors permet treballar de manera més eficaç amb imatges i fotografies difuminades, de manera comparable a la característica Vareta màgica d'altres programes de pintura. S'aplica a les seleccions transparents, així com les eines Omple, Eliminador del color i Escapça / Elimina la vora interna. Feu doble clic sobre el selector de colors per escollir com hauran de ser de similars per a considerar-los idèntics. En utilitzar les seleccions en el mode transparent, qualsevol color en la selecció que sigui similar al color de fons també es tornarà transparent. + + + + + + + + + +La imatge de l'esquerra mostra la imatge d'exemple. Les imatges de la dreta demostren l'ús d'un ompliment, amb opcions de «Similitud del color» de 5%, 15% i 30%. En aquest exemple, amb una opció de «Similitud del color» d'Exacte, un ompliment a (80, 100) sols s'omplirà un píxel, ja que els píxels circumdants són similars però no idèntics. Com més gran sigui la similitud del color, més píxels amb colors similars seran considerats idèntics, per tant, l'ompliment s'estendrà encara més. + + + + + +Opcions de la visualització + + +Referència de les opcions de la visualització + +El zoom i la graella +Miniatura + + + + +El zoom i la graella +Incrementeu el nivell de zoom per editar les imatges amb més precisió, o reduïu-lo per a veure-les més bé. + + +En els nivells de zoom que no siguin múltiples de 100%, en moure'l poden aparèixer parts de la imatge quan l'usuari interactua amb aquesta. També poden ocórrer altres errors menors a conseqüència dels nivells de zoom. + + +En els nivells de zoom de 400% o superiors que també siguin múltiples de 100%, podreu fer Mostra la graella per editar amb major precisió els píxels individuals. + + + + + + + + + + + + + + + +La primera imatge mostra la icona de l'eina Text, mentre que la segona mostra al zoom a 600% amb la graella activada. + + +Una altra manera de fer zoom quan no es dibuixa és desplaçant la roda mentre manteniu premuda la tecla &Ctrl;. + + + + + +Miniatura + + + + + + + +Si el Mode de miniatura ampliada està seleccionat, es mostrarà tota la imatge, en una escala segons sigui necessari per ajustar-la a la finestra de miniatures (imatge superior dreta). +En cas contrari, la miniatura mostrarà la imatge fins on sigui possible, començant per la part superior esquerra de la vista principal (imatge inferior dreta). + + + + + +Efectes de la imatge + + +Referència dels efectes de la imatge +Escapça / Elimina la vora interna +Balanç +Neteja +Relleu +Aplana +Inverteix (capgirada) +Inverteix +Redueix els colors +Redueix a escala de grisos +Redueix a monocrom (tramat) +Mirall (horitzontal) +Redimensiona / Escala +Gira +Estableix com a imatge (escapça) +Esbiaixa +Suavitza i afila +Més efectes +Notes + + + +Escapça / Elimina la vora interna + +Això eliminarà automàticament la vora d'una imatge o selecció. Utilitzeu l'escapçat si teniu una figura que no omple tota la imatge o la selecció i voleu eliminar l'excés d'espai en blanc. Per utilitzar aquesta característica amb una vora de la imatge difuminada, també haureu d'utilitzar Similitud del color. + + + + +Balanç + +Aquesta característica és accessible des del diàleg Més efectes. + + + + + + + + +Permet ajustar la brillantor, contrast i gamma de la imatge o de la selecció. + + +La mesura més comuna de la gamma (un decimal entre 0,10 i 10,00) es troba entre el botó de selecció de valors Gamma i el botó Reinicia. + + + + +Neteja + +Això omplirà tota la imatge o la selecció amb el color de fons. + + +Feu doble clic sobre la icona Goma d'esborrar per esborrar tota la imatge. + + + + + +Relleu + +Aquesta característica és accessible des del diàleg Més efectes. + + + + + + + + +Marqueu Habilita per aplicar l'efecte de relleu. Això posarà en relleu les vores i donarà a la imatge o la selecció un aspecte de gravat. + + + +Aplana + +Aquesta característica és accessible des del diàleg Més efectes. + + + + + + + + +Això torna a donar color a la imatge amb diferents tons dels dos colors seleccionats. + + + +Inverteix (capgirada) + +Això dona la volta verticalment a tota la imatge o a la selecció. + + + + +Inverteix + +Aquesta característica és accessible des del diàleg Més efectes. + + + + + + + + +Això permet invertir un o més canals RGB en la imatge o la selecció. Seleccioneu Tot per a convertir una fotografia en un negatiu i viceversa. En general, això es veu molt divertit. + + +Per invertir ràpidament tots els canals, no cal utilitzar aquest diàleg. En el seu lloc podeu accedir a l'element Inverteix els colors en els menús Imatge o Selecció. L'element Selecció només es mostrarà a la barra de menús si utilitzeu una de les eines de selecció. A més, podreu arribar a aquesta acció des del menú contextual que s'obre amb un clic del &BDR; sobre l'àrea de la imatge. + + + + + +Mirall (horitzontal) + +És el reflex horitzontal de tota la imatge o de la selecció. + + + + +Redueix els colors + +Aquesta característica és accessible des del diàleg Més efectes. + + + + + + + + +Això redueix el nombre de colors utilitzats per la imatge o la selecció, amb tramat o sense. + +El difuminat generalment proporciona millors resultats de qualitat, però, molts de vosaltres voldreu desactivar-lo per a efectes artístics, &pex;, utilitzant Monocrom en lloc de Monocrom (tramat) que li donarà un efecte de silueta. + +Una altra diferència important és que mentre Monocrom (tramat) sempre redueix tota la imatge o la selecció a negre i blanc, Monocrom només ho farà si la imatge o la selecció conté més de 2 colors. + + +Per obtenir un difuminat monocrom de forma ràpida d'una imatge o selecció, utilitzeu l'element Redueix a monocrom (tramat) des dels menús Imatge o Selecció. L'element Selecció només es mostrarà a la barra de menús si utilitzeu una de les eines de selecció. A més, podreu arribar a aquesta acció des del menú contextual que s'obre amb un clic del &BDR; sobre l'àrea de la imatge. + + + +Canviar el nombre de colors aquí no afectarà sobre la profunditat del color del format de fitxer. Per a canviar la profunditat del color, haureu de seleccionar-la en els diàlegs per desar el fitxer. Tingueu en compte que, confusament, canviant la profunditat del color també canviareu el nombre de colors. + + + + +Redueix a escala de grisos + +Això redueix tota la imatge o la selecció a escala de grisos. + + + + +Redueix a monocrom (tramat) + +Això redueix tota la imatge o la selecció a blanc i negre. + + +Si no voleu difuminar la imatge o la selecció, utilitzeu el diàleg Redueix els colors. + + + + +Redimensiona / Escala + + + + + + + + + +Canviar la mida de la imatge canviarà les dimensions d'aquesta sense aplicar una transformació als continguts existents. Escalar la imatge estirarà el contingut existent a les noves dimensions. Un Escalat suau generalment proporciona millors resultats de qualitat que l'escalat normal, mitjançant la barreja dels colors veïns. + +Podeu expressar les noves dimensions en píxels, o com un percentatge de la mida original. Si seleccioneu Mantén la relació d'aspecte, l'amplada i l'alçada s'ampliaran en el mateix percentatge. + + +Podeu fer Redimensiona sobre tota la imatge o un Escalat suau de la selecció utilitzant les nanses corresponents. + + + +Per a les seleccions només s'admet l'escalat, mentre que per als quadres de text només s'admet canviar la mida. Vegeu Notes per a detalls addicionals sobre l'aplicació d'aquests efectes. + + + + +Gira + + + + + + + + + +Això fa girar la imatge. Podeu especificar l'angle i la direcció de la rotació. + + +Podeu invertir la direcció de la rotació especificant un angle personalitzat negatiu. + + + +Vegeu Notes per obtenir detalls sobre l'aplicació d'aquest efecte a una selecció. + + + + +Estableix com a imatge (escapça) + +Això establirà com a imatge la selecció actual. + + +Sols estarà disponible quan tingueu una selecció activa. + + + + +Esbiaixa + + + + + + + + + +Això inclinarà en sentit horitzontal i/o vertical tota la imatge o selecció. + + +Vegeu Notes per obtenir detalls sobre l'aplicació d'aquest efecte a una selecció. + + + + +Suavitza i afila + +Aquesta característica és accessible des del diàleg Més efectes. + + + + + + + + +Utilitzeu aquest efecte per a suavitzar o afilar la imatge. + + + + +Més efectes + +Aquest diàleg conté les característiques Balanç, Relleu, Aplana, Inverteix, Redueix els colors i Suavitza i Afila. + + + +Notes + +Redimensiona / Escala, Gira i Esbiaixa poden canviar les dimensions de la imatge. Podreu veure les noves dimensions en el diàleg. + +Si apliqueu aquests efectes a una imatge, aquesta es canviarà de mida si cal. Tanmateix, si apliqueu aquests efectes a una selecció, la imatge no es podrà canviar de mida, fins i tot quan la selecció transformada no encaixi. + + + + + + + + + +La imatge de l'esquerra ha estat girada 30 graus cap a la dreta per formar la imatge de la dreta. El &kolourpaint; ha ampliat la imatge automàticament per acomodar-la al contingut més gran. + + + + + + + + + +La selecció de l'esquerra s'ha girat 30 graus cap a la dreta per formar la selecció de la dreta. La mida de la imatge segueix sent la mateixa, per tant, les parts de la selecció no seran visibles sense fer un Redimensiona sobre la imatge. + + + + + +Crèdits i llicència + +Carl Tucker +Potser no es tracta d'una documentació concisa o completa, però sí que és honesta. + + +&kolourpaint; +Copyright del programa © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Icones específiques del &kolourpaint;, Copyright © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Documentació i material gràfic addicional de la documentació, Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Parts reproduïdes amb el permís de . + +Traductor/Revisor de la documentació: &credits.Antoni.Bella; &underFDL; Aquest programa està llicenciat com segueix: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; + + + diff --git a/po/ca/kolourpaint.po b/po/ca/kolourpaint.po new file mode 100644 index 0000000..8101c30 --- /dev/null +++ b/po/ca/kolourpaint.po @@ -0,0 +1,2742 @@ +# Translation of kolourpaint.po to Catalan +# Copyright (C) 2004-2022 This_file_is_part_of_KDE +# +# Albert Astals Cid , 2004, 2005. +# Josep M. Ferrer , 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020, 2021, 2022. +# Sebastià Pla i Sanz , 2005. +# Antoni Bella Pérez , 2016, 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-07-08 16:49+0200\n" +"Last-Translator: Josep M. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Albert Astals Cid" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "aacid@kde.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balanç" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Suavitza" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Aguditza" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Neteja" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selecció: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Relleu" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Aplana" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Redueix a escala de grisos" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "To, saturació, valor" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inverteix els colors" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverteix" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Redueix a monocrom (tramat)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Redueix a monocrom" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Redueix a 256 colors (tramat)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Redueix a 256 colors" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Equalitzador de l'histograma" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Inverteix" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Inverteix horitzontal i verticalment" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Inverteix horitzontalment" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Inverteix verticalment" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Text: redimensiona el quadre" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selecció: escalat" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selecció: escalat suau" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Redimensiona" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Escala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Escalat suau" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Gira" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Esbiaixa" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Desfés: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Desfés" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Refés: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Refés" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Desfés: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Desfés" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Refés: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Refés" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 element més" +msgstr[1] "%1 elements més" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Selector del color" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Omple" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Més efectes de la imatge (selecció)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Més efectes de la imatge" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efecte:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Redueix els colors" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Suavitza i Afila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Propietats del document" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Punts &per polzada (PPP)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Sense definir" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horitzontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

      Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

      The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

      If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

      If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

      Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Punts per polzada (PPP) indica el nombre de píxels de la " +"imatge que s'imprimiran en una polzada (2,54 cm).

      Com més alt sigui el " +"PPP de la imatge, més petita serà la imatge impresa. Cal tenir en compte que " +"la vostra impressora probablement no podrà imprimir en alta qualitat si " +"augmenteu el PPP més enllà de 300 o 600.

      Si voleu imprimir la imatge " +"de manera que sigui de la mateixa mida com es mostra a la pantalla, fixeu el " +"valor PPP de la imatge al mateix valor de la pantalla.

      Si el valor PPP " +"és Sense definir, la imatge també s'imprimirà a la mateixa mida que a " +"la pantalla.

      No tots els formats d'imatge permeten els valors de PPP. " +"Si el format en què l'heu desat no els permet, no es desaran.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Des&plaçament" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

      The Offset is the relative position where this image should be " +"placed, compared to other images.

      Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

      " +msgstr "" +"

      El desplaçament és la posició relativa on s'hauria d'ubicar la " +"imatge, respecte a les altres imatges.

      No tots els formats d'imatge " +"permeten la característica de desplaçament. Si el format en què l'heu " +"desat no ho permet, no es desaran els valors que indiqueu aquí.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Camps de &text" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Afegeix una fila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "S&uprimeix la fila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Reinicia" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

      Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

      However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

      Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Els camps de text proporcionen informació extra quant a la " +"imatge. Probablement és una àrea de comentari en la qual podeu escriure text " +"lliure.

      No obstant això, aquest és específic del format, de manera que " +"els camps poden ser dades teòricament interpretades per l'ordinador -que no " +"hauríeu de modificar- però això és poc probable.

      No tots els formats " +"d'imatge permeten els camps de text. Si el format en què heu desat la " +"imatge no els permet, no es desaran.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Clau" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "El valor del text «%1» a la línia %2 necessita una clau." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Totes les claus de text han de ser úniques. La clau de text «%1» a les " +"línies %2 i %3 són idèntiques." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Camps de text no vàlids" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensions" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Vista prèvia" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Actualitza" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Redimensió / Escalat" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Actua &sobre:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "La imatge completa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selecció" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Quadre de text" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operació" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
      • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
      • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
      • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
      " +msgstr "" +"
      • Redimensiona: la mida de la imatge s'incrementarà creant " +"noves àrees a la dreta o a baix (omplertes amb el color de fons) o es " +"reduirà tallant de la dreta i/o a baix.
      • Escala: la imatge " +"s'expandirà duplicant els píxels o es reduirà perdent-los.
      • Escala " +"suau: el mateix que Escala excepte que fusiona els píxels veïns " +"per tal de presentar una imatge amb un aspecte més suau.
      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Redimensiona" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Escala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "E&scalat suau" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Amplada:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Alçada:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nova:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Percentatge:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Mantén la relació d'as&pecte" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

      Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to resize the text box?

      " +msgstr "" +"

      Canviar la mida del quadre de text a %1x%2 pot necessitar una gran " +"quantitat de memòria. Això pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguin problemes de recursos.

      Esteu segur que " +"voleu redimensionar el quadre de text?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Redimensionar el quadre de text?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Re&dimensiona el quadre de text" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

      Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to resize the image?

      " +msgstr "" +"

      Canviar la mida de la imatge a %1x%2 pot necessitar una gran " +"quantitat de memòria. Això pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguin problemes de recursos.

      Esteu segur que " +"voleu redimensionar la imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Redimensionar la imatge?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&edimensiona la imatge" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

      Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to scale the image?

      " +msgstr "" +"

      Escalar la imatge a %1x%2 pot necessitar una gran quantitat de " +"memòria. Això pot reduir la fluïdesa del sistema i causar que d'altres " +"aplicacions tinguin problemes de recursos.

      Esteu segur que voleu " +"escalar la imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Escalar la imatge?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Escala la imatg&e" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

      Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to scale the selection?

      " +msgstr "" +"

      Escalar la selecció a %1x%2 pot necessitar una gran quantitat de " +"memòria. Això pot reduir la fluïdesa del sistema i causar que d'altres " +"aplicacions tinguin problemes de recursos.

      Esteu segur que voleu " +"escalar la selecció?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Escalar la selecció?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Esca&la la selecció" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

      Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the image?" +msgstr "" +"

      Fer un escalat suau de la imatge a %1x%2 pot necessitar una gran " +"quantitat de memòria. Això pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguin problemes de recursos.

      Esteu segur que " +"voleu fer un escalat suau de la imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Fer un escalat suau de la imatge?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Fes l'escalat &suau de la imatge" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

      Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the selection?" +"

      " +msgstr "" +"

      Fer un escalat suau de la selecció a %1x%2 pot necessitar una gran " +"quantitat de memòria. Això pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguin problemes de recursos.

      Esteu segur que " +"voleu fer un escalat suau de la selecció?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Fer un escalat suau de la selecció?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Fes l'escalat &suau de la selecció" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Girar la selecció" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Girar la imatge" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Després de girar:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direcció" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Antihorària" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Horària" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Angle" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&raus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 gra&us" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "A &mida:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

      Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to rotate the selection?

      " +msgstr "" +"

      El gir de la selecció a %1x%2 pot necessitar una gran quantitat de " +"memòria. Això pot reduir la fluïdesa del sistema i causar que d'altres " +"aplicacions tinguin problemes de recursos.

      Esteu segur que voleu girar " +"la selecció?

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Girar la selecció?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "&Gira la selecció" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

      Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to rotate the image?

      " +msgstr "" +"

      El gir de la imatge a %1x%2 pot necessitar una gran quantitat de " +"memòria. Això pot reduir la fluïdesa del sistema i causar que d'altres " +"aplicacions tinguin problemes de recursos.

      Esteu segur que voleu girar " +"la imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Girar la imatge?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Gi&ra la imatge" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Esbiaixat de la selecció" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Esbiaixat de la imatge" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Després d'esbiaixar:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horitzontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

      Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to skew the selection?

      " +msgstr "" +"

      Per a esbiaixar la selecció a %1x%2 es pot necessitar una gran " +"quantitat de memòria. Això pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguin problemes de recursos.

      Esteu segur que " +"voleu esbiaixar la selecció?

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Esbiaixar la selecció?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&Esbiaixa la selecció" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

      Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to skew the image?

      " +msgstr "" +"

      Per a esbiaixar la imatge a %1x%2 es pot necessitar una gran " +"quantitat de memòria. Això pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguin problemes de recursos.

      Esteu segur que " +"voleu esbiaixar la imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Esbiaixar la imatge?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&Esbiaixa la imatge" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Similitud del color" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Distància al cub de color &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Coincidència exacta" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Què és la similitud del color?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Desament de la vista prèvia" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 byte (aprox. %2%)" +msgstr[1] "%1 bytes (aprox. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "No s'ha pogut obrir «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"No s'ha pogut obrir «%1» -format d'imatge no acceptat-.\n" +"El fitxer pot estar corrupte." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "No s'ha pogut desar la imatge -informació insuficient-." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Tipus MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Error intern" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

      The %1 format may not be able to preserve all of the image's " +"color information.

      Are you sure you want to save in this format?

      " +msgstr "" +"

      El format %1 potser no serà capaç de conservar tota la " +"informació del color de la imatge.

      Esteu segur que voleu desar en " +"aquest format?

      " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Format de fitxer amb pèrdues" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

      Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

      Are " +"you sure you want to save at this color depth?

      " +msgstr "" +"

      Desar la imatge amb la profunditat baixa de color de %1 bit pot " +"resultar en pèrdua d'informació del color. També s'eliminarà tota la " +"transparència.

      Esteu segur que voleu desar amb aquesta profunditat de " +"color?

      " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Profunditat baixa de color" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"No s'ha pogut desar la imatge -no s'ha pogut crear un fitxer temporal-." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "No s'ha pogut desar com «%1»: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Error en desar la imatge" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "No s'ha pogut desar la imatge -ha fallat la pujada-." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Elimina la &vora interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Elimina la vora interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Es&capçament automàtic" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Escapçament automàtic" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"El KolourPaint no ha pogut eliminar la vora interna de la selecció, ja que " +"no s'ha pogut detectar." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "No s'ha pogut eliminar la vora interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"El KolourPaint no ha pogut escapçar la imatge automàticament, ja que no ha " +"pogut detectar les seves vores." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "No s'ha pogut escapçar automàticament" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Estableix com a imatge" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selecció: crea" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programa de dibuix, creat per la comunitat KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Fundador del projecte" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Investigador en cap" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" +"Implementació de l'escaneig, implementació de l'alfa, mantenidor actual" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Icones" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Implementació de l'InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efectes de la imatge" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Adaptació al KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Adaptació al KF5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Gràcies a molts altres que han ajudat a fer possible aquest programa." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Fitxers d'imatge a obrir, opcionalment" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Llista tots els tipus MIME d'imatge que es poden llegir" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "Vi&sualitza" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imatge" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Colors" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barra d'eines principal" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra d'eines del text" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menú del BDR per a la selecció d'eina" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "E&dita" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Arrossegueu amb l'esquerre per a redimensionar la imatge." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Redimensiona la imatge: deixeu anar tots els botons del ratolí." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Redimensiona la imatge: premeu el botó dret per a cancel·lar." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "No s'ha pogut obrir la paleta de colors «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"No s'ha pogut obrir la paleta de colors «%1» -format no acceptat-.\n" +"El fitxer pot estar corrupte." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "No s'ha pogut obrir la paleta de colors del KDE «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "No s'ha pogut desar la paleta de colors com a «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sense títol" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Usa els valors predeterminats del KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Empra la del KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Obre..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Recarre&ga" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Desa" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Desa &com a..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Afegeix una fila" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Suprimeix la darrera fila" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Quadre de colors" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"S'ha modificat la paleta de colors «%1».\n" +"Voleu desar-la?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"S'ha modificat la paleta de colors del KDE «%1».\n" +"Voleu desar-la en un fitxer?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"S'ha modificat la paleta de colors per omissió.\n" +"Voleu desar-la en un fitxer?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Obrir la paleta de colors" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"S'ha modificat la paleta de colors «%1».\n" +"En recarregar es perdran els canvis fets des de l'últim cop que vau desar-" +"la.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Recarrega" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"S'ha modificat la paleta de colors del KDE «%1».\n" +"En recarregar es perdran tots els canvis.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"S'ha modificat la paleta de colors per omissió.\n" +"En recarregar es perdran tots els canvis.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Desa la paleta de colors com a" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Enganxa en una finestra &nova" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Supr&imeix la selecció" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opia a un fitxer..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Enganxa des d'un &fitxer..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: crea un quadre" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: enganxa" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"El KolourPaint no pot enganxar el contingut del porta-retalls, ja que té " +"un format desconegut." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "No es pot enganxar" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: suprimeix el quadre" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selecció: suprimeix" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: acaba" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selecció: desselecciona" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copia a un fitxer" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Enganxar des d'un fitxer" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xporta..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Escaneja..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Obtén una captura de pantalla" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Propietats" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Recarre&ga" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Tots els fitxers admesos (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Obre una imatge" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Ha fallat en obrir el diàleg d'escaneig." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Ha fallat l'escaneig" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Retard de la captura de pantalla" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " segon" +msgstr[1] " segons" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Sense retard" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Oculta la finestra principal" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Propietats del document" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Desar la imatge com a" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportació" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"El document «%1» ha estat modificat.\n" +"En recarregar es perdran els canvis fets des de l'últim cop que vau desar-" +"lo.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"El document «%1» ha estat modificat.\n" +"En recarregar es perdran tots els canvis.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Impressió de la imatge" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Heu de desar la imatge abans d'enviar-la.\n" +"Voleu desar-la?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"El document «%1» ha estat modificat.\n" +"Voleu desar-lo?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&edimensiona / Escala..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Establei&x com a imatge (escapça)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Inverteix (capgirada)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Mirall (horitzontalment)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Gira..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Gira a l'&esquerra" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Gira a la dre&ta" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Es&biaixa..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "&Redueix a monocrom (tramat)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Redueix &a escala de grisos" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inverteix els colors" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Neteja" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Fes confidencial" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Més efectes..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imatge" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Selecc&ió" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Mostra el &camí" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Dibuix amb antialiàsing" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Família del tipus de lletra" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Mida del tipus de lletra" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Negreta" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Cursiva" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Subratllat" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Barrat" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Opció d'eina anterior (Grup núm. 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Opció d'eina següent (Grup núm. 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Opció d'eina anterior (Grup núm. 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Opció d'eina següent (Grup núm. 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Dibuix opac" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Dibuixa amb similitud del color..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Quadre d'eines" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Mostra la &quadrícula" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Mostra la &miniatura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Mode de miniatura a&mpliada" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Activa el &rectangle de la miniatura" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Captura una imatge" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Ha fallat en obrir l'escàner seleccionat." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pinzell" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Dibuixa usant pinzells de diferents formes i mides" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" +"Premeu per a dibuixar punts o arrossegueu per a fer ratlles a mà alçada." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Eliminador del color" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Substitueix els píxels del color de primer pla amb el color de fons" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Prem o arrossega per a esborrar els píxels del color de primer pla." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Goma d'esborrar" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Permet esborrar els errors" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Premeu o arrossegueu per a esborrar." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Deixeu anar tots els botons del ratolí." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Llapis" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Dibuixa punts i ratlles a mà alçada" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Polvoritzador" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Polvoritza grafit" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Premeu o arrossegueu per a polvoritzar un grafit." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Premeu el botó dret per a cancel·lar." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Premeu el botó esquerre per a cancel·lar." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permet seleccionar un color de la imatge" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Premeu per a seleccionar un color." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Omple les regions de la imatge" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Premeu per a omplir una regió." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Apropa i allunya de la imatge" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Cliqueu per a apropar/allunyar o arrossegueu amb el botó esquerre per a " +"apropar en una àrea específica." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Corba" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Dibuixa corbes" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Arrossegueu el punt inicial i el final." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Arrossegueu amb l'esquerre per a establir el primer punt de control o feu " +"clic dret per a acabar." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Arrossegueu amb el dret per a establir el primer punt de control o feu clic " +"esquerre per a acabar." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Arrossegueu amb l'esquerre per a establir l'últim punt de control o feu clic " +"dret per a acabar." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Arrossegueu amb el dret per a establir l'últim punt de control o feu clic " +"esquerre per a acabar." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Línia" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Dibuixa línies" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Arrossegueu per a dibuixar." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polígon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Dibuixa polígons" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Arrossegueu per a dibuixar la primera línia." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Arrossegueu amb l'esquerre una altra línia o feu clic dret per a cancel·lar." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Arrossegueu amb el dret una altra línia o feu clic esquerre per a cancel·lar." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Línies connectades" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Dibuixa línies connectades" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "El·lipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Dibuixa el·lipses i cercles" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rectangle" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Dibuixa rectangles i quadrats" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rectangle arrodonit" + +# skip-rule: barb-uns +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Dibuixa uns rectangles i quadrats amb cantonades arrodonides" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Arrossegueu amb el botó esquerre per a crear una selecció." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Arrossegueu amb el botó esquerre per a moure la selecció." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Arrossegueu amb el botó esquerre per a escalar la selecció." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selecció: opaca" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selecció: transparent" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selecció: transparència per color" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selecció: transparència per similitud del color" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selecció (el·líptica)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Fa una selecció el·líptica o circular" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selecció (lliure)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Fa una selecció lliure" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selecció (rectangular)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Fa una selecció rectangular" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selecció: mou" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: arrossega" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Escriu text" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: Retrocés" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Text: suprimeix" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Text: línia nova" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: escriu" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Arrossegueu amb el botó esquerre per a crear un quadre de text." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Arrossegueu amb el botó esquerre per a moure el quadre de text." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Text: mou el quadre" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" +"Arrossegueu amb el botó esquerre per a redimensionar el quadre de text." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Premeu el botó esquerre per a canviar la posició del cursor." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Text: fons opac" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: fons transparent" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Text: intercanvia els colors" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Text: color de primer pla" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Text: color de fons" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Text: tipus de lletra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Text: mida del tipus de lletra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Text: negreta" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: cursiva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Text: subratllat" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Text: barrat" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Mode sense ampliar -miniatures-" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      To configure it, click on the cube.

      " +msgstr "" +"

      La similitud del color és quan els colors similars de " +"píxels diferents s'han de considerar el mateix en les operacions.

      Si " +"la fixeu a qualsevol altra cosa que Coincidència exacta, podreu " +"treballar amb més efectivitat amb imatges tramades i fotografies, de manera " +"comparable a la característica «Vareta màgica» d'altres programes de dibuix." +"

      Aquesta característica s'aplica a:

      • Seleccions: en " +"mode transparent, qualsevol color de la selecció que sigui " +"similar al color de fons esdevindrà transparent.
      • Omple: a les regions amb píxels de color similar -però no idèntics-, un " +"valor més elevat omplirà més píxels.
      • Eliminador del color: " +"qualsevol píxel que el seu color sigui similar al color de primer pla " +"se substituirà pel color de fons.
      • Escapçament automàtic i " +"Elimina la vora interna: per a les vores amb píxels de color " +"similar -però no idèntics-, un valor més elevat escapçarà tota la " +"vora.

      Els valors més elevats signifiquen que les operacions " +"tenen en compte una gamma de colors més gran per a considerar similars i que siguin el mateix. Per tant, hauríeu d'augmentar el valor si les " +"operacions mencionades no afecten els píxels amb colors que considereu que " +"són prou similars.

      Amb tot, si hi ha massa efecte i es canvien píxels " +"amb colors que no considereu que siguin similars (p. ex. si omplir " +"canvia massa píxels), hauríeu de disminuir aquest valor.

      Per a " +"configurar-lo, cliqueu en el cub.

      " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      " +msgstr "" +"

      La similitud del color és quan els colors similars de " +"píxels diferents s'han de considerar el mateix en el funcionament.

      Si " +"la fixeu a qualsevol altra cosa que Coincidència exacta, podreu " +"treballar amb més efectivitat amb imatges tramades i fotografies, de manera " +"comparable a la característica «Vareta màgica» d'altres programes de dibuix." +"

      Aquesta característica s'aplica a:

      • Seleccions: en " +"mode transparent, qualsevol color de la selecció que sigui " +"similar al color de fons esdevindrà transparent.
      • Omple: a les regions amb píxels de color similar -però no idèntics-, un " +"valor més elevat omplirà més píxels.
      • Eliminador del color: " +"qualsevol píxel que el seu color sigui similar al color de primer pla " +"se substituirà pel color de fons.
      • Escapçament automàtic i " +"Elimina la vora interna: per a les vores amb píxels de color " +"similar -però no idèntics-, un valor més elevat escapçarà tota la " +"vora.

      Els valors més elevats signifiquen que les operacions " +"tenen en compte una gamma de colors més gran per a considerar similars i que siguin el mateix. Per tant, hauríeu d'augmentar el valor si les " +"operacions mencionades no afecten els píxels amb colors que considereu que " +"són prou similars.

      Amb tot, si hi ha massa efecte i es canvien píxels " +"amb colors que no considereu que siguin similars (p. ex. si omplir " +"canvia massa píxels), hauríeu de disminuir aquest valor.

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

      Color Similarity: %1%

      Click to configure.

      " +msgstr "" +"

      Similitud del color: %1%

      Cliqueu per a configurar." +"

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

      Color Similarity: Exact Match

      Click to configure." +msgstr "" +"

      Similitud del color: coincidència exacta

      Cliqueu " +"per a configurar.

      " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Brillantor:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Reinicia" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&Reinicia" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Ca&nals:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Tot" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Vermell" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verd" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blau" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Reinicialitza &tots els valors" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Paràmetres" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Quantitat:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Habilita" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Colors" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&To:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturació:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valor:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Vermell" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "V&erd" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blau" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Tots" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canals" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monocrom" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nocrom (tramat)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 co&lors" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 colo&rs (tramat)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Color de 24 &bits" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Redueix a" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularitat:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

      To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

      To change the color of a color cell itself, double-click on it.

      You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

      " +msgstr "" +"

      Per a seleccionar el color de primer pla amb el qual dibuixaran les " +"eines, cliqueu amb el botó esquerre en una cel·la de color. Per a " +"seleccionar el color de fons, cliqueu amb el botó dret.

      Per a canviar " +"el color de la mateixa cel·la, feu-hi doble clic.

      També podeu " +"intercanviar el color d'una cel·la amb una altra arrossegant i deixant anar. " +"També, si manteniu premuda la tecla Ctrl, se sobreescriurà el color " +"de la cel·la de destinació, en lloc d'intercanviar-lo amb el color de la " +"cel·la d'origen.

      " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Convertei&x a:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Quali&tat:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Vista &prèvia" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monocrom" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monocrom (tramat)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Colors" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Colors (tramat)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Color de 24 bits" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Posició de la i&matge" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centre de la pàgina" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Superior-e&squerra de la pàgina" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparent" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Valors predeterminats del KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Colors: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Colors: %1 [s'ha modificat]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cercle" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Quadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barra inversa" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "No omplis" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Omple amb el color de fons" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Omple amb el color de primer pla" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opac" diff --git a/po/ca@valencia/kolourpaint.po b/po/ca@valencia/kolourpaint.po new file mode 100644 index 0000000..42b70be --- /dev/null +++ b/po/ca@valencia/kolourpaint.po @@ -0,0 +1,2743 @@ +# Translation of kolourpaint.po to Catalan (Valencian) +# Copyright (C) 2004-2022 This_file_is_part_of_KDE +# +# Albert Astals Cid , 2004, 2005. +# Josep M. Ferrer , 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020, 2021, 2022. +# Sebastià Pla i Sanz , 2005. +# Antoni Bella Pérez , 2016, 2017, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-07-08 16:49+0200\n" +"Last-Translator: Josep M. Ferrer \n" +"Language-Team: Catalan \n" +"Language: ca@valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Albert Astals Cid" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "aacid@kde.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balanç" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Suavitza" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Aguditza" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Neteja" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selecció: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Relleu" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Aplana" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduïx a escala de grisos" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "To, saturació, valor" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invertix els colors" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertix" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduïx a monocrom (tramat)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduïx a monocrom" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduïx a 256 colors (tramat)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduïx a 256 colors" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Equalitzador de l'histograma" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Invertix" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Invertix horitzontal i verticalment" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Invertix horitzontalment" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Invertix verticalment" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Text: redimensiona el quadro" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selecció: escalat" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selecció: escalat suau" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Redimensiona" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Escala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Escalat suau" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Gira" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Esbiaixa" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Desfés: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Desfés" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Refés: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Refés" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Desfés: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Desfés" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Refés: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Refés" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 element més" +msgstr[1] "%1 elements més" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Selector del color" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Òmpliga" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Més efectes de la imatge (selecció)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Més efectes de la imatge" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efecte:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reduïx els colors" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Suavitza i Afila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Propietats del document" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Punts &per polzada (PPP)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Sense definir" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horitzontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

      Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

      The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

      If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

      If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

      Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Punts per polzada (PPP) indica el nombre de píxels de la " +"imatge que s'imprimiran en una polzada (2,54 cm).

      Com més alt siga el " +"PPP de la imatge, més xicoteta serà la imatge impresa. Cal tindre en compte " +"que la vostra impressora probablement no podrà imprimir en alta qualitat si " +"augmenteu el PPP més enllà de 300 o 600.

      Si voleu imprimir la imatge " +"de manera que siga de la mateixa mida com es mostra en la pantalla, fixeu el " +"valor PPP de la imatge al mateix valor de la pantalla.

      Si el valor PPP " +"és Sense definir, la imatge també s'imprimirà a la mateixa mida que " +"en la pantalla.

      No tots els formats d'imatge permeten els valors de " +"PPP. Si el format en què l'heu guardat no els permet, no es guardaran.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Des&plaçament" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

      The Offset is the relative position where this image should be " +"placed, compared to other images.

      Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

      " +msgstr "" +"

      El desplaçament és la posició relativa on s'hauria d'ubicar la " +"imatge, respecte a les altres imatges.

      No tots els formats d'imatge " +"permeten la característica de desplaçament. Si el format en què l'heu " +"guardat no ho permet, no es guardaran els valors que indiqueu ací.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Camps de &text" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Afi&g una fila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Sup&rimix la fila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Reinicia" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

      Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

      However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

      Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Els camps de text proporcionen informació extra quant a la " +"imatge. Probablement és una àrea de comentari en la qual podeu escriure text " +"lliure.

      No obstant açò, este és específic del format, de manera que " +"els camps poden ser dades teòricament interpretades per l'ordinador -que no " +"hauríeu de modificar- però açò és poc probable.

      No tots els formats " +"d'imatge permeten els camps de text. Si el format en què heu guardat " +"la imatge no els permet, no es guardaran.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Clau" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "El valor del text «%1» en la línia %2 necessita una clau." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Totes les claus de text han de ser úniques. La clau de text «%1» a les " +"línies %2 i %3 són idèntiques." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Camps de text no vàlids" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensions" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Vista prèvia" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Act&ualitza" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Redimensió / Escalat" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Actua &sobre:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "La imatge completa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selecció" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Quadro de text" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operació" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
      • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
      • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
      • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
      " +msgstr "" +"
      • Redimensiona: la mida de la imatge s'incrementarà creant " +"noves àrees a la dreta o a baix (omplides amb el color de fons) o es reduirà " +"tallant de la dreta i/o a baix.
      • Escala: la imatge s'expandirà " +"duplicant els píxels o es reduirà perdent-los.
      • Escala suau: " +"el mateix que Escala excepte que fusiona els píxels veïns per tal de " +"presentar una imatge amb un aspecte més suau.
      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Redimensiona" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Escala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "E&scalat suau" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Amplària:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Alçària:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nova:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Percentatge:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Mantín la relació d'as&pecte" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

      Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to resize the text box?

      " +msgstr "" +"

      Canviar la mida del quadro de text a %1x%2 pot necessitar una gran " +"quantitat de memòria. Açò pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguen problemes de recursos.

      Segur que voleu " +"redimensionar el quadro de text?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Redimensionar el quadro de text?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Re&dimensiona el quadro de text" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

      Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to resize the image?

      " +msgstr "" +"

      Canviar la mida de la imatge a %1x%2 pot necessitar una gran " +"quantitat de memòria. Açò pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguen problemes de recursos.

      Segur que voleu " +"redimensionar la imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Redimensionar la imatge?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&edimensiona la imatge" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

      Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to scale the image?

      " +msgstr "" +"

      Escalar la imatge a %1x%2 pot necessitar una gran quantitat de " +"memòria. Açò pot reduir la fluïdesa del sistema i causar que d'altres " +"aplicacions tinguen problemes de recursos.

      Segur que voleu escalar la " +"imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Escalar la imatge?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Escala la imatg&e" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

      Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to scale the selection?

      " +msgstr "" +"

      Escalar la selecció a %1x%2 pot necessitar una gran quantitat de " +"memòria. Açò pot reduir la fluïdesa del sistema i causar que d'altres " +"aplicacions tinguen problemes de recursos.

      Segur que voleu escalar la " +"selecció?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Escalar la selecció?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Esca&la la selecció" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

      Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the image?" +msgstr "" +"

      Fer un escalat suau de la imatge a %1x%2 pot necessitar una gran " +"quantitat de memòria. Açò pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguen problemes de recursos.

      Segur que voleu " +"fer un escalat suau de la imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Fer un escalat suau de la imatge?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Fes l'escalat &suau de la imatge" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

      Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the selection?" +"

      " +msgstr "" +"

      Fer un escalat suau de la selecció a %1x%2 pot necessitar una gran " +"quantitat de memòria. Açò pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguen problemes de recursos.

      Segur que voleu " +"fer un escalat suau de la selecció?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Fer un escalat suau de la selecció?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Fes l'escalat &suau de la selecció" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Girar la selecció" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Girar la imatge" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Després de girar:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direcció" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Antihorària" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Horària" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Angle" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&raus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "A &mida:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

      Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to rotate the selection?

      " +msgstr "" +"

      El gir de la selecció a %1x%2 pot necessitar una gran quantitat de " +"memòria. Açò pot reduir la fluïdesa del sistema i causar que d'altres " +"aplicacions tinguen problemes de recursos.

      Segur que voleu girar la " +"selecció?

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Girar la selecció?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "&Gira la selecció" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

      Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to rotate the image?

      " +msgstr "" +"

      El gir de la imatge a %1x%2 pot necessitar una gran quantitat de " +"memòria. Açò pot reduir la fluïdesa del sistema i causar que d'altres " +"aplicacions tinguen problemes de recursos.

      Segur que voleu girar la " +"imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Girar la imatge?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Gi&ra la imatge" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Esbiaixat de la selecció" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Esbiaixat de la imatge" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Després d'esbiaixar:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horitzontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

      Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to skew the selection?

      " +msgstr "" +"

      Per a esbiaixar la selecció a %1x%2 es pot necessitar una gran " +"quantitat de memòria. Açò pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguen problemes de recursos.

      Segur que voleu " +"esbiaixar la selecció?

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Esbiaixar la selecció?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&Esbiaixa la selecció" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

      Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to skew the image?

      " +msgstr "" +"

      Per a esbiaixar la imatge a %1x%2 es pot necessitar una gran " +"quantitat de memòria. Açò pot reduir la fluïdesa del sistema i causar que " +"d'altres aplicacions tinguen problemes de recursos.

      Segur que voleu " +"esbiaixar la imatge?

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Esbiaixar la imatge?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&Esbiaixa la imatge" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Similitud del color" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Distància al cub de color &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Coincidència exacta" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Què és la similitud del color?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Guardeu la vista prèvia" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 byte (aprox. %2%)" +msgstr[1] "%1 bytes (aprox. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "No s'ha pogut obrir «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"No s'ha pogut obrir «%1» -format d'imatge no acceptat-.\n" +"El fitxer pot estar corrupte." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "No s'ha pogut guardar la imatge -informació insuficient-." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Tipus MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "S'ha produït un error intern" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

      The %1 format may not be able to preserve all of the image's " +"color information.

      Are you sure you want to save in this format?

      " +msgstr "" +"

      El format %1 potser no serà capaç de conservar tota la " +"informació del color de la imatge.

      Segur que voleu guardar en este " +"format?

      " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Format de fitxer amb pèrdues" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

      Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

      Are " +"you sure you want to save at this color depth?

      " +msgstr "" +"

      Guardar la imatge amb la profunditat baixa de color de %1 bit pot " +"resultar en pèrdua d'informació del color. També s'eliminarà tota la " +"transparència.

      Segur que voleu guardar amb esta profunditat de color?" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Profunditat baixa de color" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"No s'ha pogut guardar la imatge -no s'ha pogut crear un fitxer temporal-." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "No s'ha pogut guardar com «%1»: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "S'ha produït un error en guardar la imatge" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "No s'ha pogut guardar la imatge -ha fallat la pujada-." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Elimina la &vora interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Elimina la vora interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Es&capçament automàtic" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Escapçament automàtic" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint no ha pogut eliminar la vora interna de la selecció, ja que no " +"s'ha pogut detectar." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "No s'ha pogut eliminar la vora interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint no ha pogut escapçar la imatge automàticament, ja que no ha " +"pogut detectar les seues vores." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "No s'ha pogut escapçar automàticament" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Establix com a imatge" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selecció: crea" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programa de dibuix, creat per la comunitat KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Fundador del projecte" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Investigador en cap" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" +"Implementació de l'escaneig, implementació de l'alfa, mantenidor actual" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Icones" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Implementació d'InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efectes de la imatge" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Adaptació a KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Adaptació al KF5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Gràcies a molts altres que han ajudat a fer possible este programa." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Fitxers d'imatge que s'han d'obrir, de manera opcional" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Llista tots els tipus MIME d'imatge que es poden llegir" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "Vi&sualitza" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imatge" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Colors" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barra d'eines principal" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra d'eines del text" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menú del BDR per a la selecció d'eina" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "E&dita" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Arrossegueu amb l'esquerre per a redimensionar la imatge." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Redimensiona la imatge: deixeu anar tots els botons del ratolí." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Redimensiona la imatge: premeu el botó dret per a cancel·lar." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "No s'ha pogut obrir la paleta de colors «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"No s'ha pogut obrir la paleta de colors «%1» -format no acceptat-.\n" +"El fitxer pot estar corrupte." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "No s'ha pogut obrir la paleta de colors de KDE «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "No s'ha pogut guardar la paleta de colors com a «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sense títol" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Utilitza els valors predeterminats de KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Utilitza la de KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "O&bri..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Torna a ca&rregar" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "Guar&da" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Anomena i gu&arda..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Afig una fila" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Suprimix l'última fila" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Quadro de colors" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"S'ha modificat la paleta de colors «%1».\n" +"Voleu guardar-la?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"S'ha modificat la paleta de colors de KDE «%1».\n" +"Voleu guardar-la en un fitxer?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"S'ha modificat la paleta de colors predeterminats.\n" +"Voleu guardar-la en un fitxer?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Obrir la paleta de colors" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"S'ha modificat la paleta de colors «%1».\n" +"En tornar a carregar es perdran els canvis fets des de l'última vegada que " +"vau guardar-la.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Torna a ca&rregar" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"S'ha modificat la paleta de colors de KDE «%1».\n" +"En tornar a carregar es perdran tots els canvis.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"S'ha modificat la paleta de colors predeterminats.\n" +"En tornar a carregar es perdran tots els canvis.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Guarda la paleta de colors com a" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Apega en una finestra &nova" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Sup&rimix la selecció" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opia a un fitxer..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Apega des d'un fi&txer..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: crea un quadro" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: apega" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint no pot apegar el contingut del porta-retalls, ja que té un " +"format desconegut." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "No es pot apegar" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: suprimix el quadro" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selecció: suprimix" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: acaba" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selecció: desselecciona" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copia a un fitxer" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Apegar des d'un fitxer" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xporta..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Escaneja..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Obtín una captura de pantalla" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Propietats" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Torna a ca&rregar" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Tots els fitxers admesos (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Obri una imatge" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "No s'ha pogut obrir el diàleg d'escaneig." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "No s'ha pogut fer l'escaneig" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Retard de la captura de pantalla" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " segon" +msgstr[1] " segons" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Sense retard" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Oculta la finestra principal" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Propietats del document" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Guardar la imatge com a" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportació" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"El document «%1» ha sigut modificat.\n" +"En tornar a carregar es perdran els canvis fets des de l'última vegada que " +"vau guardar-lo.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"El document «%1» ha sigut modificat.\n" +"En tornar a carregar es perdran tots els canvis.\n" +"Esteu segur?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Impressió de la imatge" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Heu de guardar la imatge abans d'enviar-la.\n" +"Voleu guardar-la?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"El document «%1» ha sigut modificat.\n" +"Voleu guardar-lo?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&edimensiona / Escala..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Es&tablix com a imatge (escapça)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "I&nvertix (capgirada)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Espill (horitzontalment)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Gira..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Gira a l'&esquerra" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Gira a la dre&ta" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Es&biaixa..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Red&uix a monocrom (tramat)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduïx &a escala de grisos" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "I&nvertix els colors" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Neteja" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Fes confidencial" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Més efectes..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imatge" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Selecc&ió" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Mostra el &camí" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Dibuix amb antialiàsing" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Família del tipus de lletra" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Mida del tipus de lletra" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Negreta" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Cursiva" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Subratllat" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Barrat" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Opció d'eina anterior (Grup núm. 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Opció d'eina següent (Grup núm. 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Opció d'eina anterior (Grup núm. 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Opció d'eina següent (Grup núm. 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Dibuix opac" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Dibuixa amb similitud del color..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Quadro d'eines" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Mostra la &quadrícula" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Mostra la &miniatura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Mode de miniatura a&mpliada" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Activa el &rectangle de la miniatura" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Captura una imatge" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "No s'ha pogut obrir l'escàner seleccionat." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pinzell" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Dibuixa utilitzant pinzells de diferents formes i mides" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" +"Premeu per a dibuixar punts o arrossegueu per a fer ratlles a mà alçada." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Eliminador del color" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Substituïx els píxels del color de primer pla amb el color de fons" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Prem o arrossega per a esborrar els píxels del color de primer pla." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Goma d'esborrar" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Permet esborrar els errors" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Premeu o arrossegueu per a esborrar." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Deixeu anar tots els botons del ratolí." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Llapis" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Dibuixa punts i ratlles a mà alçada" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Polvoritzador" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Polvoritza grafit" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Premeu o arrossegueu per a polvoritzar un grafit." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Premeu el botó dret per a cancel·lar." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Premeu el botó esquerre per a cancel·lar." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permet seleccionar un color de la imatge" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Premeu per a seleccionar un color." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Òmpliga les regions de la imatge" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Premeu per a omplir una regió." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Acosta i allunya de la imatge" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Cliqueu per a acostar/allunyar o arrossegueu amb el botó esquerre per a " +"acostar en una àrea específica." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Corba" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Dibuixa corbes" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Arrossegueu el punt inicial i el final." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Arrossegueu amb l'esquerre per a establir el primer punt de control o feu " +"clic dret per a acabar." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Arrossegueu amb el dret per a establir el primer punt de control o feu clic " +"esquerre per a acabar." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Arrossegueu amb l'esquerre per a establir l'últim punt de control o feu clic " +"dret per a acabar." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Arrossegueu amb el dret per a establir l'últim punt de control o feu clic " +"esquerre per a acabar." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Línia" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Dibuixa línies" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Arrossegueu per a dibuixar." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polígon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Dibuixa polígons" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Arrossegueu per a dibuixar la primera línia." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Arrossegueu amb l'esquerre una altra línia o feu clic dret per a cancel·lar." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Arrossegueu amb el dret una altra línia o feu clic esquerre per a cancel·lar." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Línies connectades" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Dibuixa línies connectades" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "El·lipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Dibuixa el·lipses i cercles" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rectangle" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Dibuixa rectangles i quadrats" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rectangle arredonit" + +# skip-rule: barb-uns +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Dibuixa uns rectangles i quadrats amb cantonades arredonides" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Arrossegueu amb el botó esquerre per a crear una selecció." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Arrossegueu amb el botó esquerre per a moure la selecció." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Arrossegueu amb el botó esquerre per a escalar la selecció." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selecció: opaca" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selecció: transparent" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selecció: transparència per color" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selecció: transparència per similitud del color" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selecció (el·líptica)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Fa una selecció el·líptica o circular" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selecció (lliure)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Fa una selecció lliure" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selecció (rectangular)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Fa una selecció rectangular" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selecció: mou" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: arrossega" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Escriu text" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: Retrocés" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Text: suprimix" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Text: línia nova" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: escriu" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Arrossegueu amb el botó esquerre per a crear un quadro de text." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Arrossegueu amb el botó esquerre per a moure el quadro de text." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Text: mou el quadro" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" +"Arrossegueu amb el botó esquerre per a redimensionar el quadro de text." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Premeu el botó esquerre per a canviar la posició del cursor." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Text: fons opac" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: fons transparent" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Text: intercanvia els colors" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Text: color de primer pla" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Text: color de fons" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Text: tipus de lletra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Text: mida del tipus de lletra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Text: negreta" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: cursiva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Text: subratllat" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Text: barrat" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Mode sense ampliar -miniatures-" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      To configure it, click on the cube.

      " +msgstr "" +"

      La similitud del color és quan els colors similars de " +"píxels diferents s'han de considerar el mateix en les operacions.

      Si " +"la fixeu a qualsevol altra cosa que Coincidència exacta, podreu " +"treballar amb més efectivitat amb imatges tramades i fotografies, de manera " +"comparable a la característica «Vareta màgica» d'altres programes de dibuix." +"

      Esta característica s'aplica a:

      • Seleccions: en mode " +"transparent, qualsevol color de la selecció que siga similar " +"al color de fons esdevindrà transparent.
      • Òmpliga: a les " +"regions amb píxels de color similar -però no idèntics-, un valor més " +"elevat omplirà més píxels.
      • Eliminador del color: qualsevol " +"píxel que el seu color siga similar al color de primer pla se " +"substituirà pel color de fons.
      • Escapçament automàtic i " +"Elimina la vora interna: per a les vores amb píxels de color " +"similar -però no idèntics-, un valor més elevat escapçarà tota la " +"vora.

      Els valors més elevats signifiquen que les operacions " +"tenen en compte una gamma de colors més gran per a considerar similars i que siguen el mateix. Per tant, hauríeu d'augmentar el valor si les " +"operacions mencionades no afecten els píxels amb colors que considereu que " +"són prou similars.

      Amb tot, si hi ha massa efecte i es canvien píxels " +"amb colors que no considereu que siguen similars (p. ex. si omplir " +"canvia massa píxels), hauríeu de disminuir este valor.

      Per a " +"configurar-lo, cliqueu en el cub.

      " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      " +msgstr "" +"

      La similitud del color és quan els colors similars de " +"píxels diferents s'han de considerar el mateix en el funcionament.

      Si " +"la fixeu a qualsevol altra cosa que Coincidència exacta, podreu " +"treballar amb més efectivitat amb imatges tramades i fotografies, de manera " +"comparable a la característica «Vareta màgica» d'altres programes de dibuix." +"

      Esta característica s'aplica a:

      • Seleccions: en mode " +"transparent, qualsevol color de la selecció que siga similar " +"al color de fons esdevindrà transparent.
      • Òmpliga: a les " +"regions amb píxels de color similar -però no idèntics-, un valor més " +"elevat omplirà més píxels.
      • Eliminador del color: qualsevol " +"píxel que el seu color siga similar al color de primer pla se " +"substituirà pel color de fons.
      • Escapçament automàtic i " +"Elimina la vora interna: per a les vores amb píxels de color " +"similar -però no idèntics-, un valor més elevat escapçarà tota la " +"vora.

      Els valors més elevats signifiquen que les operacions " +"tenen en compte una gamma de colors més gran per a considerar similars i que siguen el mateix. Per tant, hauríeu d'augmentar el valor si les " +"operacions mencionades no afecten els píxels amb colors que considereu que " +"són prou similars.

      Amb tot, si hi ha massa efecte i es canvien píxels " +"amb colors que no considereu que siguen similars (p. ex. si omplir " +"canvia massa píxels), hauríeu de disminuir este valor.

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

      Color Similarity: %1%

      Click to configure.

      " +msgstr "" +"

      Similitud del color: %1%

      Cliqueu per a configurar." +"

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

      Color Similarity: Exact Match

      Click to configure." +msgstr "" +"

      Similitud del color: coincidència exacta

      Cliqueu " +"per a configurar.

      " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Brillantor:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Reinicia" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&Reinicia" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Ca&nals:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Tot" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Roig" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verd" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blau" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Reinicialitza &tots els valors" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Paràmetres" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Quantitat:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Habilita" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Colors" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&To:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturació:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valor:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Roig" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "V&erd" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blau" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Tots" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canals" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monocrom" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nocrom (tramat)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 co&lors" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 colo&rs (tramat)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Color de 24 &bits" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduïx a" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularitat:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

      To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

      To change the color of a color cell itself, double-click on it.

      You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

      " +msgstr "" +"

      Per a seleccionar el color de primer pla amb el qual dibuixaran les " +"eines, cliqueu amb el botó esquerre en una cel·la de color. Per a " +"seleccionar el color de fons, cliqueu amb el botó dret.

      Per a canviar " +"el color de la mateixa cel·la, feu-hi doble clic.

      També podeu " +"intercanviar el color d'una cel·la amb una altra arrossegant i deixant anar. " +"També, si manteniu premuda la tecla Ctrl, se sobreescriurà el color " +"de la cel·la de destinació, en lloc d'intercanviar-lo amb el color de la " +"cel·la d'origen.

      " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Con&vertix a:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Quali&tat:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Vista &prèvia" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monocrom" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monocrom (tramat)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Colors" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Colors (tramat)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Color de 24 bits" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Posició de la i&matge" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centre de la pàgina" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Superior-e&squerra de la pàgina" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparent" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Valors predeterminats de KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Colors: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Colors: %1 [s'ha modificat]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cercle" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Quadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barra inversa" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "No òmpligues" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Òmpliga amb el color de fons" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Òmpliga amb el color de primer pla" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opac" diff --git a/po/cs/kolourpaint.po b/po/cs/kolourpaint.po new file mode 100644 index 0000000..0629b8e --- /dev/null +++ b/po/cs/kolourpaint.po @@ -0,0 +1,2664 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Vít Pelčák , 2010, 2011, 2012, 2013, 2015, 2016, 2017, 2020. +# Tomáš Chvátal , 2013. +# Vit Pelcak , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-08 12:15+0200\n" +"Last-Translator: Vit Pelcak \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 21.04.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Jakub Friedl, Tomáš Chvátal" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "jfriedl@suse.cz, tomas.chvatal@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Vyrovnání" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Rozmazat" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Zaostřit" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Vyprázdnit" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Výběr: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Reliéf" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Zploštit" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Převést do odstínů šedi" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Odstín, sytost, jas" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invertovat barvy" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertovat" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Převést na černobílý (rozptýlený)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Převést do odstínů šedi" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Převést do 256 barev (rozptýlit)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Převést do 256 barev" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Ekvalizér histogramu" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Převrátit" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Převrátit vodorovně a svisle" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Převrátit vodorovně" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Převrátit svisle" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Text: Změnit velikost rámečku" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Výběr: Měřítko (FIXME)" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Výběr: Hladké měřítko (FIXME)" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Změnit velikost" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Změnit měřítko" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Změnit měřítko hladce" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Natočit" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Zkosit" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Zpět: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Zpět" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "Zn&ovu: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "Zn&ovu" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Zpět: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Zpět" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Znovu: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Znovu" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 další položka" +msgstr[1] "%1 další položky" +msgstr[2] "%1 dalších položek" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Barevná pipeta" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Plechovka s barvou" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Další efekty (Výběr)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Další efekty" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Snížit počet barev" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Rozmazání & zaostření" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Vlastnosti dokumentu" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Body na palec (D&PI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Neurčeno" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Vodorovně:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Svisle:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

      Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

      The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

      If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

      If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

      Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Počet bodů na palec (DPI) určuje počet pixelů obrázku, který " +"bude vytištěn v jednom palci (2,54 cm).

      Čím je hodnota DPI vyšší, tím " +"je obrázek menší, avšak vaše tiskárna pravděpodobně není schopna tisknout v " +"kvalitě vyšší nežli 300 či 600 DPI.

      Pokud budete chtít vytisknout " +"obrázek ve stejné velikosti jako je zobrazený na obrazovce, tak nastavte DPI " +"obrázku na stejnou hodnotu jakou má vaše obrazovka.

      Pokud je hodnota " +"DPI nezadána, obrázek bude vytištěn ve stejné velikosti jako je na " +"obrazovce.

      Ne všechny formáty obrázků podporují DPI hodnoty. Nebudou " +"tedy uloženy pokud je formát, ve kterém ukládáte, nepodporuje.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Pos&un:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

      The Offset is the relative position where this image should be " +"placed, compared to other images.

      Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

      " +msgstr "" +"

      Posun je relativní pozice kde bude tento obrázek umístěn v " +"porovnání s ostatními.

      Ne všechny formáty obrázků podporují posun. Nebude tedy uloženy pokud je formát, ve kterém ukládáte, nepodporuje.." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Textová pole" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Přid&at řádek" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Smazat řádek" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "O&bnovit" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

      Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

      However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

      Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Textová pole poskytují dodatečné informace o obrázku. Většinou " +"je to oblast komentářů, kam můžete zapsat libovolný text.

      Tato " +"vlastnost specifická dle formátu a teoreticky by tato pole mohla být " +"interpretována počítačem (tedy neměla by se měnit), avšak toto není příliš " +"pravděpodobné.

      Ne všechny formáty obrázků podporují textová pole. Nebudou tedy uloženy pokud je formát, ve kterém ukládáte, nepodporuje.." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Klíč" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Hodnota" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Textová hodnota \"%1\" na řádku %2 vyžaduje klíč." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Všechny textové klíče musí být unikátní. Textový klíč \"%1\" na řádcích %2 a " +"%3 jsou identické." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Neplatná textová pole" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Rozměry" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Původní:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Náhled" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Akt&ualizovat" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Změnit velikost / měřítko" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Na:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Celý obrázek" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Výběr" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Textový rámeček" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operace" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"

      • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
      • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
      • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
      " +msgstr "" +"
      • Změnit velikost: Obrázek se zvětší vytvořením nových " +"oblastí barvy pozadí vpravo a/nebo dole nebo se zmenší odříznutím oblastí " +"vpravo a/nebo dole.
      • Změnit měřítko: Obrázek se zvětší " +"duplikováním pixelů nebo zmenší jejich zahozením.
      • Změnit měřítko " +"hladce: Totéž jako Změnit měřítko, ale sousední pixely jsou " +"prolnuty, čímž je docíleno hladšího vzhledu.
      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Změnit &velikost" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "Změnit &měřítko" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Změnit měřítko &hladce" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Šířka:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Výška:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nový:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Procent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Zachov&at poměr stran" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

      Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to resize the text box?

      " +msgstr "" +"

      Změna velikosti textového rámečku na %1x%2 potřebuje významné " +"množství paměti. Může to vést k prodloužení odezvy systému a dalším " +"problémům.

      Opravdu změnit velikost textového rámečku?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Změnit velikost textového rámečku?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Změnit v&elikost textového rámečku" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

      Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to resize the image?

      " +msgstr "" +"

      Změna velikosti obrázku na %1x%2 potřebuje významné množství paměti. " +"Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu " +"změnit velikost obrázku?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Změnit velikost obrázku?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Změnit v&elikost obrázku" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

      Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to scale the image?

      " +msgstr "" +"

      Změna měřítka obrázku na %1x%2 potřebuje významné množství paměti. " +"Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu " +"změnit měřítko obrázku?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Změnit měřítko obrázku?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Změnit &měřítko obrázku" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

      Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to scale the selection?

      " +msgstr "" +"

      Změna měřítka výběru na %1x%2 potřebuje významné množství paměti. " +"Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu " +"změnit měřítko výběru?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Změnit měřítko výběru?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Změnit &měřítko výběru" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

      Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the image?" +msgstr "" +"

      Hladká změna měřítka obrázku na %1x%2 potřebuje významné množství " +"paměti. Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu změnit hladce měřítko obrázku?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Změnit hladce měřítko obrázku?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Změnit měřítko &hladce" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

      Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to smooth scale the selection?" +"

      " +msgstr "" +"

      Hladká změna měřítka výběru na %1x%2 potřebuje významné množství " +"paměti. Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu změnit hladce měřítko výběru?

      " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Hladce změnit měřítko výběru?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "&Hladce změnit měřítko výběru" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Natočit výběr" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Natočit obrázek" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Po otočení:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Směr" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "P&roti směru hodinových ručiček" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Po směru hodinových ručiček" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Úhel" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &stupňů" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 s&tupňů" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 st&upňů" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "V&lastní:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "stupňů" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

      Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to rotate the selection?

      " +msgstr "" +"

      Natočení výběru na %1x%2 může potřebovat významné množství paměti. " +"Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu " +"natočit výběr?

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Natočit výběr?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Na&točit výběr" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

      Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to rotate the image?

      " +msgstr "" +"

      Natočení obrázku na %1x%2 může potřebovat významné množství paměti. " +"Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu " +"natočit obrázek?

      " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Natočit obrázek?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Natočit obráz&ek" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Zkosit výběr" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Zkosit obrázek" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Po zkosení:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "Vo&dorovně:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "S&visle:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

      Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

      Are you sure you want to skew the selection?

      " +msgstr "" +"

      Zkosení výběru na %1x%2 může potřebovat významné množství paměti. " +"Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu " +"chcete zkosit výběr?

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Zkosit výběr?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Zkosi&t výběr" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

      Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

      Are you sure you want to skew the image?

      " +msgstr "" +"

      Zkosení obrázku na %1x%2 může potřebovat významné množství paměti. " +"Může to vést k prodloužení odezvy systému a dalším problémům.

      Opravdu " +"zkosit obrázek?

      " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Zkosit obrázek?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&Zkosit obrázek" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Podobnost barev" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Vzdálenost v RGB barevné krychli" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Přesná shoda" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Co je to podobnost barev?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Uložit náhled" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 bajt (přibližně %2%)" +msgstr[1] "%1 bajty (přibližně %2%)" +msgstr[2] "%1 bajtů (přibližně %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Nelze otevřít \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Nelze otevřít \"%1\" - nepodporovaný formát obrázku.\n" +"Soubor je možná poškozen." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Obrázek nelze uložit - nedostatečné informace." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Typ MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Vnitřní chyba" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

      The %1 format may not be able to preserve all of the image's " +"color information.

      Are you sure you want to save in this format?

      " +msgstr "" +"

      Formát %1 nemusí být schopný zachovat veškerou barevnou " +"informaci obrázku.

      Opravdu si přejete uložit do tohoto formátu?

      " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Ztrátový souborový formát" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

      Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

      Are " +"you sure you want to save at this color depth?

      " +msgstr "" +"

      Uložení obrázku v nízké %1bitové barevné hloubce může vyústit ve " +"ztrátu barevné informace. Bude též odstraněna případná průhlednost.

      " +"

      Opravdu uložit v této barevné hloubce?

      " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Nízká barevná hloubka" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Nelze uložit soubor - dočasný soubor nelze vytvořit." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Nelze uložit jako \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Chyba během ukládání obrázku" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Nelze uložit obrázek - selhalo odeslání." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "&Odstranit vnitřní hranici" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Odstranit vnitřní hranici" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Automaticky &ořezat" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automaticky ořezat" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint nemůže odstranit vnitřní hranice výběru, protože je nemůže " +"nalézt." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Nelze odstranit vnitřní hranici" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint nemůže automaticky ořezat obrázek, protože nenašel jeho hranici." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Nelze automaticky ořezat" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Nastavit jako obrázek" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Výběr: Vytvořit" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Malování pro KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Zakladatel projektu" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Hlavní vyšetřovatel" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Podpora skenování, podpora alpha, současný správce" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikony" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Vstupní metody" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efekty obrázků" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Portování na KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Portování na KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Děkuji všem, kteří pomohli tento program vytvořit." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Soubory s obrázkem k otevření, volitelně" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Vypsat všechny čitelné typy MIME obrázků" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "Po&hled" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Obrázek" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Barvy" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Hlavní panel nástrojů" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Panel nástrojů pro práci s textem" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Kontextová nabídka výběru" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "U&pravit" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Náhled" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Tažením změníte velikost obrázku." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Změna velikosti obrázku: Uvolněte všechna tlačítka myši." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Změna velikosti obrázku: Zrušíte kliknutím pravým tlačítkem myši" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Paletu nelze otevřít \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Paletu nelze otevřít \"%1\" - nepodporovaný formát.\n" +"Soubor je možná poškozen." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Barevnou paletu KDE nelze otevřít \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Barevnou paletu nelze uložit jako \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Nepojmenovaný" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Použít výchozí nastavení KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Použít z KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Otevřít..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Znovu načís&t" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Uložit" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Uložit j&ako..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Přidat řádek" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Smazat poslední řádek" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Box barev" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Barevná paleta \"%1\" byla změněna.\n" +"Přejete si ji uložit?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Barevná paleta KDE \"%1\" byla změněna..\n" +"Přejete si ji uložit?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Výchozí barevná paleta byla změněna.\n" +"Přejete si ji uložit do souboru?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Otevřít paletu barev" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Barevná paleta \"%1\" byla změněna.\n" +"Opětovné načtení způsobí ztrátu všech změn od posledního uložení.\n" +"Opravdu znovu načíst?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Znovu načís&t" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Barevná paleta KDE \"%1\" byla změněna.\n" +"Opětovné načtení způsobí ztrátu všech změn.\n" +"Opravdu znovu načíst?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Výchozí barevná paleta byla změněna.\n" +"Opětovné načtení způsobí ztrátu všech změn.\n" +"Opravdu znovu načíst?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Uložit paletu barev jako" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Vložit do &nového okna" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Sma&zat výběr" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opírovat do souboru..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Vložit &ze souboru..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: Vytvořit rámeček" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: Vložit" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Nelze vložit" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: Smazat rámeček" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Výběr: Smazat" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: Dokončit" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Výběr: Zrušit výběr" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopírovat do souboru" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Vložit ze souboru" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportovat..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skenovat..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Získat snímek obrazovky" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Vlastnosti" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Znovu načís&t" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Všechny podporované soubory (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Otevřít obrázek" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Skenování selhalo" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Prodleva snímku" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekunda" +msgstr[1] " sekundy" +msgstr[2] " sekund" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Žádná prodleva" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Skrýt hlavní okno" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Vlastnosti dokumentu" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Uložit obrázek jako" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportovat" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokument \"%1\" byl změněn.\n" +"Opětovné načtení způsobí ztrátu všech změn od posledního uložení.\n" +"Opravdu znovu načíst?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokument \"%1\" byl změněn.\n" +"Opětovné načtení způsobí ztrátu všech změn.\n" +"Opravdu znovu načíst?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Vytisknout obrázek" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Obrázek musíte před odesláním uložit.\n" +"Přejete si obrázek uložit?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokument \"%1\" byt změněn.\n" +"Přejete si jej uložit?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Změnit v&elikost / měřítko..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Nas&tavit jako obrázek (Ořezat)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Pře&vrátit (vzhůru nohama)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Zrcadlit (vodorovně)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Natočit..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rotovat v&levo" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rotova&t vpravo" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Z&kosit..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Převést na čer&nobílý (rozptýlený)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Převést do od&stínů šedi" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Invertovat barvy" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Vyči&stit" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Další e&fekty..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Obrázek" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Vý&běr" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Zobrazit &cestu" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Vykreslit vyhlazovaný" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Rodina písma" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Velikost písma" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Tučné" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kurzíva" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Podtržené" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Přeškrtnuté" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Předcházející volba nástroje (Skupina č. 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Následující volba nástroje (Skupina č. 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Předcházející volba nástroje (Skupina č. 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Následující volba nástroje (Skupina č. 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Kreslit neprůhledně" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Kreslit s podobností barev..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Nástrojový box" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Zobrazit &mřížku" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Zobrazit ná&hled" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Přizpůsobení &měřítka náhledu" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Hranice &rámce v náhledu" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zvětšit" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Získat obrázek" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Selhalo otevření zvoleného skeneru." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Štětec" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Malujte štětci různých tvarů a velikostí" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Tečku nakreslíte kliknutím, čáru tažením." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Barevná guma" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Nahrazuje pixely barvy popředí barvou pozadí" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Gumovat pixely barvy popředí můžete klikáním nebo tažením." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Guma" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Gumuje chyby" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Gumovat můžete klikáním nebo tažením." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Uvolněte všechna tlačítka myši." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pero" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Kreslí tečky a čáry od ruky" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Sprej" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Sprej na graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Kliknutím nebo táhnutím můžete sprejovat graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Zrušit kliknutím pravým tlačítkem myši." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Zrušit kliknutím levým tlačítkem myši." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Pipeta umožňuje nasávat barvy z obrázku" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Kliknutím vyberte barvu" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Vyplňuje barvou celé oblasti obrázku" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Oblast vyplníte kliknutím." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Přiblížit" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Přibližuje a oddaluje obrázek" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Klikněte pro přiblížení/oddálení, nebo levým tlačítkem a přetažením zvětšete " +"vybranou oblast." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Křivka" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Kreslí křivky" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Vytáhněte začátek a konec." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Levým tlačítkem vytáhněte první kontrolní bod nebo pravým kreslení ukončete." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Pravým tlačítkem vytáhněte první kontrolní bod nebo levým kreslení ukončete." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Levým tlačítkem vytáhněte poslední kontrolní bod nebo pravým kreslení " +"ukončete." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Pravým tlačítkem vytáhněte poslední kontrolní bod nebo levým kreslení " +"ukončete." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Čára" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Kreslí čáry" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Kreslit můžete táhnutím." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Mnohoúhelník" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Kreslí mnohoúhelníky" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Táhnutím nakreslíte první čáru" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Levým tlačítkem vytáhněte další čáru nebo pravým kreslení ukončete." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Pravým tlačítkem vytáhněte další čáru nebo levým kreslení ukončete." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Spojené čáry" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Kreslí spojené čáry" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipsa" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Kreslí elipsy a kruhy" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Pravoúhelník" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Kreslí obdélníky a čtverce" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Zaoblený pravoúhelník" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Kreslí obdélníky a čtverce se zakulacenými rohy" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Tažením levým tlačítkem vytvoříte výběr." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Výběr přetáhněte levým tlačítkem." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Tažením levým tlačítkem změňte měřítko výběru." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Výběr: Neprůhledný" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Výběr: Průhledný" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Výběr: Barva průhlednosti" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Výběr: Podobnost barvy průhlednosti" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Eliptický výběr" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Tvoří eliptické nebo kruhové výběry" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Volný výběr" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Vytváří volný výběr" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Pravoúhlý výběr" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Tvoří pravoúhlé výběry" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Výběr: Přesunout" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Rozmáznout" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Píše text" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: Mazání posledního znaku (FIXME)" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Text: Smazat" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Text: Nový řádek" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: Zapsat" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Tažením levým tlačítkem vytvoříte textový rámeček." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Textový rámeček přetáhněte levým tlačítkem." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Text: Přesunout rámeček" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Tažením levým tlačítkem změňte velikost textového rámečku" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Kliknutím levým tlačítkem změňte polohu kurzoru" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Text Neprůhledné pozadí" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: Průhledné pozadí" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Text: Prohodit barvy" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Text: Barva písma" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Text: Barva pozadí" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Text: Řez písma" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Text: Velikost písma" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Text: Tučný" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: Kurzíva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Text Podtržený" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Text: Přeškrtnutý" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Nepřiblížený režim - Náhled" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Náhled" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      To configure it, click on the cube.

      " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

      This feature applies " +"to:

      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

      " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

      Color Similarity: %1%

      Click to configure.

      " +msgstr "" +"

      Podobnost barev: %1%

      Klikněte pro nastavení.

      " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

      Color Similarity: Exact Match

      Click to configure." +msgstr "" +"

      Podobnost barev: Přesná shoda

      Klikněte pro " +"nastavení.

      " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Jas:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "O&bnovit" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gama:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "O&bnovit" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanály:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Vše" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Červená" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Zelená" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Modrá" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "O&bnovit všechny hodnoty" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Nastavení" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Míra:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Povolit" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Barvy" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tón:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "Na&sycení:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "H&odnota:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "Če&rvená" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Zelená" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Modrá" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Všechny" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanály" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "Od&stíny šedi" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Čer&nobílý (rozptýlený)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 bare&v" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 bare&v (rozptýlený)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24bitové &barvy" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Převést na" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularita:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

      To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

      To change the color of a color cell itself, double-click on it.

      You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

      " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Převést &do:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kvali&ta:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Ná&hled" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Černobílý" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Černobílý (rozptýlený)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 barev" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 barev (rozptýlené)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24bitové barvy" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Pozice obráz&ku" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Stře&d stránky" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "V&levo nahoře na stránce" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Průhledné pozadí" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Výchozí nastavení KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Barvy: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Barvy: %1 [změněno]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "Vlasový" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Kulatý" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Čtvercový" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Kaligrafický" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Obrácený kaligrafický" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%3 %1x%2" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Bez výplně" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Vyplnit barvou pozadí" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Vyplnit barvou popředí" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Neprůhledné pozadí" diff --git a/po/da/kolourpaint.po b/po/da/kolourpaint.po new file mode 100644 index 0000000..30244c0 --- /dev/null +++ b/po/da/kolourpaint.po @@ -0,0 +1,3012 @@ +# translation of kolourpaint4.po to +# Danish translation of kolourpaint +# Copyright (C). +# +# Erik Kjær Pedersen , 2004, 2005. +# Martin Schlander , 2008, 2009, 2011, 2012, 2016, 2017, 2018, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-09-09 21:47+0200\n" +"Last-Translator: Martin Schlander \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Erik Kjær Pedersen,Martin Schlander" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "erik@binghamton.edu,mschlander@opensuse.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balance" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Blødgør" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Skærp" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Ryd" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Markering: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Emboss" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Udjævn" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reducér til gråskala" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Farvetone (H), mætning (S), værdi (V)" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invertér farver" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertér" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reducér til monokrom (farvereduceret)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reducér til monokrom" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reducér til 256 farver (farvereduceret)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reducér til 256 farver" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogram-equalizer" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Vend" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Vend vandret og lodret" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Vend vandret" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Vend lodret" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Tekst: Ændr størrelse på kasse" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Markering: Skalér" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Udglat: Glat skalering" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Ændr størrelse" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skalér" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Udglat skalering" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rotér" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Skævt" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Fortryd: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Fortryd" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Gendan: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Gendan" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Fortryd: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Fortryd" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Gendan: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Gendan" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 punkt mere" +msgstr[1] "%1 punkter mere" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Farveplukker" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Udfyld" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Flere billedeffekter (markering)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Flere billedeffekter" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reducér farver" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Blødgør & skærp" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumentegenskaber" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Dots &Per Inch (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Uspecificeret" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horisontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertikal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

      Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

      The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

      If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

      If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

      Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Dots Per Inch (DPI) angiver antallet af pixel i billedet som " +"skal udskrives i en tomme (2,54 cm).

      Des højere billedets DPI er, jo " +"mindre er det udskrevne billede. Bemærk at din printer sandsynligvis ikke " +"producerer udskrifter i høj kvalitet hvis du forøger dette til mere end 300 " +"eller 600 DPI, afhængigt af printeren.

      Hvis du gerne vil udskrive " +"billedet så det er samme størrelse som det vises i på skærmen, så sæt " +"billedet DPI-værdier til det samme som skærmens.

      Hvis begge DPI-" +"værdier er Uspecificeret vil billedet også blive udskrevet til at " +"have samme størrelse som på skærmen.

      Ikke alle billedformater " +"understøtter DPI-værdier. Hvis formatet du gemmer i ikke understøtter dem " +"vil de ikke blive gemt.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "A&fstand" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

      The Offset is the relative position where this image should be " +"placed, compared to other images.

      Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

      " +msgstr "" +"

      Afstand er den relative position hvor dette billede skal " +"placeres, i forhold til andre billeder.

      Ikke alle billedformater " +"understøtter Afstand-funktionen. Hvis formatet du gemmer i ikke " +"understøtter det, vil værdierne specificeret her ikke blive gemt.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Tekstfelter" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Tilføj række" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Slet række" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Nulstil" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

      Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

      However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

      Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

      " +msgstr "" +"

      Tekstfelter giv ekstra information om billedet. Dette er " +"formentlig et kommentarområde hvori du frit kan skrive tekst i.

      Dette " +"er dog formatspecifikt så felterne kunne teoretisk være computerfortolket " +"data - som du ikke bør ændre - men dette er usandsynligt.

      Ikke alle " +"billedformater understøtter Tekstfelter. Hvis formatet du gemmer i " +"ikke understøtter dem vil de ikke blive gemt.

      " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Nøgle" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Værdi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Tekstværdien \"%1\" i linje %2 kræver en nøgle." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Alle tekstnøgler skal være unikke. Tekstnøglen \"%1\" i linjerne %2 og %3 er " +"identiske." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Ugyldige tekstfelter" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensioner" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Forhåndsvisning" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Opdatér" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Ændr størrelse / skalér" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Agér på:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Hele billedet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Markering" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Tekstfelt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operation" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
      • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
      • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
      • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
      " +msgstr "" +"
      • Ændr størrelse: Billedets størrelse vil blive forøget ved " +"at lave nye områder til højre og/eller forneden (udfyldt med " +"baggrundsfarven) eller formindsket ved at skære det i højre side og/eller " +"forneden.
      • Skalér: Billedet vil blive udvidet ved at duplikere " +"pixels eller gjort mindre ved at droppe pixels.
      • Udglattet " +"skalering: Dette er det samme som Skalér bortset fra at det " +"blander nabo-pixels for at producere et glattere udseende billede.
      • " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Ænd&r størrelse" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skalér" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Ud&glat skalering" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Bredde:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Højde:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Ny:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Procent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Behold &aspektratio" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to resize the text box?

        " +msgstr "" +"

        Ændring af størrelsen for tekstfeltet til %1x%2 kan tage en væsentlig " +"mængde hukommelse. Dette kan reducere systemets responstid og forårsage at " +"andre programmer får ressourceproblemer.

        Er du sikker på at du ønsker " +"at ændre tekstfeltets størrelse?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Ændr størrelse på tekstfelt?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Ændr størrelse på tekstfelt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to resize the image?

        " +msgstr "" +"

        Ændring af størrelsen for billedet til %1x%2 kan tage en væsentlig " +"mængde hukommelse. Dette kan reducere systemets responstid og forårsage at " +"andre programmer får ressourceproblemer.

        Er du sikker på at du ønsker " +"at ændre billedets størrelse?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Ændr størrelse på billede?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Ændr størrelse på billede" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to scale the image?

        " +msgstr "" +"

        Skalering af billedet til %1x%2 kan tage en væsentlig mængde " +"hukommelse. Dette kan reducere systemets responstid og forårsage at andre " +"programmer får ressourceproblemer.

        Er du sikker på at du ønsker at " +"skalere billedet?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Skalér billede?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Ska&lér billede" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to scale the selection?

        " +msgstr "" +"

        Skalering af markeringen til %1x%2 kan tage en væsentlig mængde " +"hukommelse. Dette kan reducere systemets responstid og forårsage at andre " +"programmer får ressourceproblemer.

        Er du sikker på at du ønsker at " +"skalere det markerede?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Skalér markering?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Ska&lér det markerede" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the image?" +msgstr "" +"

        Udglattet skalering af billedet til %1x%2 kan tage en væsentlig " +"mængde hukommelse. Dette kan reducere systemets responstid og forårsage at " +"andre programmer får ressourceproblemer.

        Er du sikker på at du ønsker " +"at lave en udglattet skalering af billedet?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Udglattet skalering af billede?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Udglat skal&ering af billede" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the selection?" +"

        " +msgstr "" +"

        Udglattet skalering til %1x%2 kan tage en væsentlig mængde " +"hukommelse. Dette kan reducere systemets responstid og forårsage at andre " +"programmer får ressourceproblemer.

        Er du sikker på at du ønsker at " +"lave en udglattet skalering af det markerede

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Udglattet skalering af markering?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Udglattet skal&ering af det markerede" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rotér markering" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rotér billede" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Efter rotering:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Retning" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Mod &uret" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Med uret" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Vinkel" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &grader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&rader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 gra&der" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Selv&valgt:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "grader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to rotate the selection?

        " +msgstr "" +"

        Rotation af det markerede til %1x%2 kan tage en væsentlig mængde " +"hukommelse. Dette kan reducere systemets responstid og forårsage at andre " +"programmer får ressourceproblemer.

        Er du sikker på at du ønsker at " +"rotere det markerede?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rotér markering?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Ro&tér det valgte" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to rotate the image?

        " +msgstr "" +"

        Rotation af billedet til %1x%2 kan tage en væsentlig mængde " +"hukommelse. Dette kan reducere systemets responstid og forårsage at andre " +"programmer får ressourceproblemer.

        Er du sikker på at du ønsker at " +"rotere billedet?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rotér billede?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Ro&tér billede" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Skævgør markering" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Skævgør billede" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Efter skævgøring:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Vandret:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Lodret:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to skew the selection?

        " +msgstr "" +"

        At skævgøre det markerede til %1x%2 kan tage en væsentlig mængde " +"hukommelse. Dette kan reducere systemets responstid og forårsage at andre " +"programmer får ressourceproblemer.

        Er du sikker på at du ønsker at " +"skævgøre det markerede?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Skævgør markering?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "S&kævgør det markerede" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to skew the image?

        " +msgstr "" +"

        Skævgøring af billedet til %1x%2 kan tage en væsentlig mængde " +"hukommelse. Dette kan reducere systemets responstid og forårsage at andre " +"programmer får ressourceproblemer.

        Er du sikker på at du ønsker at " +"skævgøre billedet?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Skævgør billede?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Skævgør &billede" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Farvelighed" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB farvekubeafstand" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Nøjagtigt ens" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Hvad er farvelighed?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Gem forhåndsvisning" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 byte (cirka %2%)" +msgstr[1] "%1 byte (cirka %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Kunne ikke åbne \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Kunne ikke åbne \"%1\" - billedformat ikke understøttet.\n" +"Filen er måske korrupt." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Kunne ikke gemme billede - utilstrækkelig information." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mimetype: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Intern fejl" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

        The %1 format may not be able to preserve all of the image's " +"color information.

        Are you sure you want to save in this format?

        " +msgstr "" +"

        %1-formatet vil måske ikke kunne bevare al billedets " +"farveinformation.

        Er du sikke på du ønsker at gemme i dette format?" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Filformat med tab" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

        Are " +"you sure you want to save at this color depth?

        " +msgstr "" +"

        At gemme billedet med den lave farvedybde på %1-bit kan give tab af " +"farveinformation. Eventuel gennemsigtighed kan også blive fjernet.

        Er " +"du sikker på at du ønsker at gemme ved denne farvedybde?

        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Lav farvedybde" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Kunne ikke gemme billede - kan ikke oprette midlertidig fil." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Kunne ikke gemme som \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Fejl under gemning af billede" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Kunne ikke gemme billede - mislykkedes at overføre." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Fjern intern &kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Fjern intern grænse" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Auto&beskær" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Autobeskær" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint kan ikke fjerne det markeredes interne kant da stedet ikke kunne " +"findes." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Kan ikke fjerne intern kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint kan ikke beskære billedet automatisk da dets kants placering " +"ikke kan findes." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Kan ikke autobeskære" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Sæt som billede" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Afsnit: Opret" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Tegneprogram fra KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projektgrundlægger" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Hovedundersøger" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Scanner-understøttelse, alpha-understøttelse, nuværende vedligeholder" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikoner" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Støtte for input-metode" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Billedeffekter" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE4-portering" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF5-portering" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Tak til de mange andre som har hjulpet med at gøre dette program muligt." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Billedfiler der skal åbnes, valgfrit" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Oplist alle læsbare billed-MIME-typer" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vis" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Billede" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Farver" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Hovedværktøjslinje" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Tekstværktøjslinje" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Højrekliksmenu for markeringsværktøj" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Redigér" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniature" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Venstretræk i håndtaget for at ændre billedets størrelse." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Ændr størrelse på billede: Giv slip på alle museknapper." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Ændr billedets størrelse: Højreklik for at annullere." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Kunne ikke åbne farvepaletten \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Kunne ikke åbne farvepalletten \"%1\" - format ikke understøttet.\n" +"Filen er måske defekt." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Kunne ikke åbne KDE farvepalet \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Kunne ikke gemme farvepalet som \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Unavngivet" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Brug KolourPaints standardindstillinger" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Brug KDE's" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "Å&bn..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Genin&dlæs" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Gem" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Gem &som..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Tilføj række" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Slet sidste række" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Farveboks" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Farvepaletten \"%1\" er blevet ændret.\n" +"Vil du gemme den?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE farvepaletten \"%1\" er blevet ændret.\n" +"Vil du gemme den til en fil?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Standard farvepaletten er blevet ændret.\n" +"Vil du gemme den til en fil?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Åbn farvepalet" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Farvepaletten \"%1\" er blevet ændret.\n" +"Genindlæsning vil tabe alle ændringer siden du sidst gemte den.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Genind&læs" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE farvepaletten \"%1\" er blevet ændret.\n" +"Genindlæsning vil tabe alle ændringer.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Standard farvepaletten er blevet ændret.\n" +"Genindlæsning vil tabe alle ændringer.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Gem farvepalet som" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Indsæt i &nyt vindue" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "S&let markering" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opiér til fil..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Indsæt &fra fil..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Tekst: Opret kasse" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Tekst: Indsæt" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint kan ikke indsætte indholdet af udklipsholderen da det har et " +"ukendt format." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Kan ikke indsætte" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Tekst: Slet kasse" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Afsnit: Slet" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Tekst: Afslut" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Markering: Fravælg" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopiér til fil" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Indsæt fra fil" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&ksportér..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skan..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Hent skærmbillede" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Egenskaber" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Genind&læs" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Alle understøttede filer (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Åbn billede" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Kunne ikke åbne scanningsdialogen." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Scanning mislykkedes" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Forsinkelse på øjebliksbillede" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekund" +msgstr[1] " sekunder" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Ingen forsinkelse" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Skjul hovedvindue" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumentegenskaber" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Gem billede som" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Eksportér" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokumentet \"%1\" er blevet ændret.\n" +"Genindlæsning vil tabe alle ændringer siden du sidst gemte det.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokumentet \"%1\" er blevet ændret.\n" +"Genindlæsning vil tabe alle ændringer.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Udskriv billede" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Du skal gemme dette billede før du sender det.\n" +"Vil du gemme det?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokumentet \"%1\" er blevet ændret.\n" +"Vil du gemme det?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Ændr s&tørrelse / skalér..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Sæ&t som billede (beskær)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Vend (på hovedet)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Spejlvend (vandret)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rotér..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rotér til &venstre" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rotér til &højre" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "S&kæv..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reducér til mo&nokrom (farvereduceret)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reducér til &gråskala" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Invertér farver" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Ryd" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Gør fortrolig" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Flere effekter..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Billede" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Mar&kering" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Vis s&ti" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Tegn med anti-aliasing" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Skriftfamilie" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Skrifttypestørrelse" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Fed" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursiv" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Understreget" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Streg igennem" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Forrige værktøjsvalg (gruppe #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Næste værktøjsvalg (gruppe #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Forrige værktøjsvalg (gruppe #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Næste værktøjsvalg (gruppe #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Tegn ugennemsigtigt" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Tegn med farvelighed..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Værktøjskasse" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Vis &gitter" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Vis &miniature" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Forstørret miniaturetilstand" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Aktivér miniature&rektangel" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Hent billede" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Åbning af den valgte scanner mislykkedes." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pensel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Tegn ved hjælp af pensler af forskellige former og størrelser" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Klik for at trække prikker eller træk for at tegne linjer." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Farvesletter" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Erstatter pixels fra forgrundsfarven med baggrundsfarven" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Klik eller træk for at viske pixels i forgrundsfarven ud." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Visker" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Lader dig viske fejl us" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Klik eller træk for at slette." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Giv slip på alle museknapper." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pen" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Tegner prikker og frihåndstræk" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Spraydåse" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Sprayer graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Klik eller træk for at sprøjte graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Højreklik for at annullere." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Venstreklik for at annullere." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Lader dig vælge en farve fra billedet" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Klik for at vælge en farve" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Udfylder områder i billedet" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Klik for at udfylde et område." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Zoomer ind og ud på billedet" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Klik for at zoome ind/ud eller træk til venstre for at zoome ind på et " +"specifikt område." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kurve" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Tegner kurver" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Træk start- og slutpunkter ud." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Venstretræk for at sætte det første kontrolpunkt eller højreklik for at " +"afslutte." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Højretræk for at sætte det første kontrolpunkt eller venstreklik for at " +"afslutte." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Venstretræk for at sætte det sidste kontrolpunkt eller højreklik for at " +"afslutte." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Højretræk for at sætte det sidste kontrolpunkt eller venstreklik for at " +"afslutte." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linje" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Tegner linjer" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Træk for at tegne." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polygon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Tegner polygoner" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Træk for at tegne den første linje." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Venstretræk en anden linje eller højreklik for at afslutte." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Højretræk en anden linje eller venstreklik for at afslutte." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Forbundne linjer" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Tegner forbundne linjer" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Tegner ellipser and cirkler" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rektangel" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Tegner rektangler og kvadrater" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Afrundedet rektangel" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Tegner rektangler og kvadrater med afrundede hjørner" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Venstretræk for at markere." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Venstretræk for at flytte det markerede." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Venstretræk for at skalere markering." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Afsnit: ugennemsigtig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Markering: Gennemsigtig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Markering: Gennemsigtighedsfarve" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Markering: Gennemsigtigheds farvelighed" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Markering (elliptisk)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Laver en elliptisk eller cirkulær markering" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Markering (fri form)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Laver en friformsmarkering" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Markering (rektangulær)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Laver en rektangulær markering" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Markering: Flyt" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Spred ud" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Skriver tekst" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Tekst: Tilbage" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Tekst: Slet" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Tekst: Ny linje" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Tekst: Skriv" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Venstretræk for at lave tekstfelt." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Venstretræk for at flytte tekstfeltet." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Tekst: Flyt kasse" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Venstretræk for ændre størrelse på tekstfelt." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Venstreklik for at ændre markørens position." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Tekst: Ugennemsigtig baggrundsfarve" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Tekst: Gennemsigtig baggrund" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Tekst: Byt farver" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Tekst: Forgrundsfarve" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Tekst: Baggrundsfarve" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Tekst: Skrifttype" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Tekst: Skrifttypestørrelse" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Tekst: Fed type" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Tekst: Kursiv" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Tekst: Understreget" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Tekst: Gennemstreget" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Uzoomet tilstand - miniature" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - miniature" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        To configure it, click on the cube.

        " +msgstr "" +"

        Farvelighed er hvor ensartede farverne på forskellige " +"pixel skal være for at operationer anser dem for værende ens.

        Hvis du " +"sætter det til noget andet end Nøjagtigt ens kan du arbejde mere " +"effektivt med farvereducerede billeder og fotos, sammenligneligt med \"Magic " +"Wand\"-funktionen i andre tegneprogrammer.

        Denne funktion gælder for:

        • Markeringer: I Gennemsigtig-tilstand, vil enhver " +"farve som ligner baggrundsfarven blive gjort gennemsigtig.
        • Udfyld: For områder med ensartede, men ikke identisk " +"farvede pixel, vil en højere indstilling sandsynligvis udfylde flere pixel.
        • Farvesletter: Enhver pixel hvis farve ligner " +"forgrundsfarven vil blive erstattet med baggrundsfarven.
        • " +"Autobeskær og Fjern intern kant: For kanter med ensartede, men ikke identisk farvede pixel, vil en højere indstilling sandsynligvis " +"beskære hele kanten.

        Højere indstilling betyder at operationer " +"betragter et større farveområde som værende tilstrækkeligt ensartede " +"til at være ens. Derfor bør du forøge indstillingen hvis de ovennævnte " +"operationer ikke påvirker pixel hvis farver du betragter som værende " +"tilstrækkeligt ens.

        Hvis de har for megen virkning og ændrer pixel " +"hvis farver du ikke betragter som værende ens (f.eks. ændrer Udfyld " +"for mange pixel), bør du nedjustere indstillingen.

        For at konfigurere " +"den klikkes på terningen.

        " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        " +msgstr "" +"

        Farvelighed er hvor ensartede farverne på forskellige " +"pixel skal være for at operationer anser dem for værende ens.

        Hvis du " +"sætter det til noget andet end Nøjagtigt ens kan du arbejde mere " +"effektivt med uklare billeder og fotos, sammenligneligt med \"Magic Wand\"-" +"funktionen i andre tegneprogrammer.

        Denne funktion gælder for:

        • Markeringer: I Gennemsigtig-tilstand, vil enhver " +"farve som ligner baggrundsfarven blive gjort gennemsigtig.
        • Udfyld: For områder med ensartede, men ikke identisk " +"farvede pixel, vil en højere indstilling sandsynligvis udfylde flere pixel.
        • Farvesletter: Enhver pixel hvis farve ligner " +"forgrundsfarven vil blive erstattet med baggrundsfarven.
        • " +"Autobeskær og Fjern intern kant: For kanter med ensartede, men ikke identisk farvede pixel, vil en højere indstilling sandsynligvis " +"beskære hele kanten.

        Højere indstilling betyder at operationer " +"betragter et større farveområde som værende tilstrækkeligt ensartede " +"til at være ens. Derfor bør du forøge indstillingen hvis de ovennævnte " +"operationer ikke påvirker pixel hvis farver du betragter som værende " +"tilstrækkeligt ens.

        Hvis de har for megen virkning og ændrer pixel " +"hvis farver du ikke betragter som værende ens (f.eks. ændrer Udfyld " +"for mange pixel), bør du nedjustere indstillingen.

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

        Color Similarity: %1%

        Click to configure.

        " +msgstr "" +"

        Farvelighed: %1%

        Klik for at konfigurere.

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

        Color Similarity: Exact Match

        Click to configure." +msgstr "" +"

        Farvelighed: Nøjagtigt ens

        Klik for at konfigurere." +"

        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Lysstyrke:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Nulstil" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Nuls&til" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanaler:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Alle" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Røde" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Grønne" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blå" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Nulstil &alle værdier" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Indstillinger" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Mængde:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Aktivér" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Farver" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Farvetone (H):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Mætning (S):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Værdi (V):" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rød" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Grøn" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blå" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Alle" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanaler" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monokrom" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nokrom (farvereduceret)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 far&ver" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 farve&r (farvereduceret)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bit farve" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reducér til" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granulering:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

        To change the color of a color cell itself, double-click on it.

        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

        " +msgstr "" +"

        For at vælge forgrundsfarven som værktøjer bruger til at tegne med, " +"venstreklikkes på en udfyldt farvecelle. For at vælge baggrundsfarve, " +"højreklikkes i stedet.

        For at ændre farve på selve farvecellen " +"dobbeltklikkes på den.

        Du kan også ombytte farven på en udfyldt celle " +"med enhver anden celle med træk og slip. Desuden, hvis du holder Ctrl-" +"tasten inde vil destinationscellens farve blive overskrevet, i stedet for at " +"blive ombyttet med farven fra kildecellen.

        " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Konvertér &til:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kvali&tet:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Forhåndsvisning" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monokrom" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monokrom (farvereduceret)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Farve" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Farve (farvereduceret)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bit farve" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Bi&lledposition" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Midt på siden" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Øverst til &venstre på siden" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Gennemsigtig" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaints standardindstillinger" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Farver: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Farver: %1 [ændret]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cirkel" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Skråstreg" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Baglæns skråstreg" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Ingen udfyldning" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Fyld med baggrundsfarve" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Fyld med forgrundsfarve" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaque" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Et dokument der hedder \"%1\" eksisterer allerede.\n" +#~ "Ønsker du at overskrive det?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "En farvepalet kaldet \"%1\" eksisterer allerede.\n" +#~ "Ønsker du at overskrive den?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "At sætte forstørrelsesniveauet til en værdi der ikke er et multiplum af " +#~ "100% giver upræcis redigering og fejl i tegningen.\n" +#~ "Ønsker du virkelig at sætte forstørrelsesniveau til %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Sæt forstørrelsesniveau til %1%" + +#~ msgid "None" +#~ msgstr "Ingen" + +#~ msgid "" +#~ "

        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

        Are you sure want to resize the image?

        " +#~ msgstr "" +#~ "

        Ændring af størrelsen for billedet til %1x%2 kan tage en væsentlig " +#~ "mængde hukommelse. Dette kan reducere systemets responstid og forårsage " +#~ "at andre programmer får ressourceproblemer.

        Er du sikker på at du " +#~ "ønsker at ændre billedets størrelse?

        " + +#~ msgid "Overwrite" +#~ msgstr "Overskriv" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Kunne ikke åbne \"%1\" - ukendt mimetype." + +#~ msgid "Save Preview" +#~ msgstr "Gem forhåndsvisning" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Besøg venligst hjemmesiden for at få support." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Der blev ikke fundet noget plugin som leverer scannerdialogen.\n" +#~ "Dette betyder normalt at pakken som leverer ksaneplugin ikke er " +#~ "installeret." + +#~ msgid "No Scanning Support" +#~ msgstr "Ingen skannerunderstøttelse" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Skannerunderstøttelse er ikke installeret." + +#~ msgid "" +#~ "

        KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

        This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

        " +#~ msgstr "" +#~ "

        KolourPaint kan ikke indsætte indholdet af udklipsholderen da data " +#~ "uventet forsvandt.

        Dette sker sædvanligvis hvis programmet som var " +#~ "ansvarligt for udklipsholderens indhold er blevet lukket.

        " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Tage &skærmaftryk" + +#~ msgid "" +#~ "

        To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

        You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

        Alternatively, you may try the application KSnapshot.

        " +#~ msgstr "" +#~ "

        For at tage et skærmaftryk trykkes på %1. Skærmbilledet vil " +#~ "blive placeret i udklipsholderen og du vil kunne indsætte det i " +#~ "KolourPaint.

        Du kan indstille en genvej for Skærmaftryk af " +#~ "desktop i KDE's Systemindstillinger-modul Tastaturgenveje.

        Alternativt kan du bruge " +#~ "programmet KSnapshot.

        " + +#~ msgid "" +#~ "

        You do not appear to be running KDE.

        Once you have loaded KDE:" +#~ "

        To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

        Alternatively, you may try the " +#~ "application KSnapshot.

        " +#~ msgstr "" +#~ "

        Du synes ikke at køre KDE.

        Når du har indlæst KDE:" +#~ "

        For at tage et skærmaftryk trykkes på %1. " +#~ "Skærmaftrykket vil blive placeret i udklipsholderen og du vil kunne " +#~ "indsætte det i KolourPaint.

        Alternativt kan du prøve " +#~ "programmet KSnapshot.

        " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Sæt som ta&pet (centreret)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Sæt som baggrundsbillede (&fliselagt)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Før dette billede kan sættes som baggrundsbillede skal du gemme det til " +#~ "en lokal fil.\n" +#~ "Vil du gemme det?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Før dette billede kan sættes som baggrundsbillede skal du gemme det.\n" +#~ "Vil du gemme det?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Kunne ikke ændre baggrundsbillede." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Flip det markerede" + +#~ msgid "Flip Image" +#~ msgstr "Flip billede" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Lodret (opad nedad)" + +#~ msgid "&Horizontal" +#~ msgstr "&Vandret" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Tab af farve- og gennemsigtighedinformation" + +#~ msgid "Loss of Color Information" +#~ msgstr "Tab af farveinformation" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Tab af gennemsigtighedsinformation" + +#~ msgid "" +#~ "

        KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

        To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

        " +#~ msgstr "" +#~ "

        KolourPaint understøtter ikke den nuværende skærmdybde på %1bpp. " +#~ "KolourPaint vil forsøge at starte men kan opføre sig upålideligt.

        For at undgå dette problem bedes du venligst ændre din skærmdybde " +#~ "til 24bpp og genstarte KolourPaint.

        " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Ikke understøttet skærmtilstand" + +#~ msgid "" +#~ "

        This effect does not support the current screen depth of %1bpp.

        To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Denne effekt understøtter ikke den nuværende skærmdybde på %1bpp. " +#~ "

        For at undgå dette problem bedes du venligst ændre din skærmdybde " +#~ "til 24bpp og genstarte KolourPaint.

        " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Kan ikke skanne - løbet tør for grafikhukommelse." + +#~ msgid "Cannot Scan" +#~ msgstr "Kan ikke skanne" + +#~ msgid "&Flip..." +#~ msgstr "&Flip..." + +#~ msgid "" +#~ "

        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

        If you save this image, any color loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


        It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

        If you save " +#~ "this image, this loss of translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Billedet der skal indsættes har måske flere farver end den " +#~ "nuværende skærmtilstand. For at vise det, vil nogle farveinformationer " +#~ "måske blive fjernet.

        Hvis du gemmer dette billede vil evt. " +#~ "farvetab blive permanent.

        For at undgå problemet kan du forøge " +#~ "skærmdybden til mindst %1bpp og så genstarte KolourPaint.


        Det " +#~ "indeholder også gennemsigtighed som ikke er fuldt understøttet. " +#~ "Gennemsigtighedsdata vil blive tilnærmet med en 1-bit " +#~ "gennemsigtighedsmaske.

        Hvis du gemmer dette billede, vil dette " +#~ "tab af gennemsigtighed blive permanent.

        " + +#~ msgid "" +#~ "

        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

        If you save this image, any color loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Billedet der skal indsættes har måske flere farver end den " +#~ "nuværende skærmtilstand. For at vise det, vil nogle farveinformationer " +#~ "måske blive fjernet.

        Hvis du gemmer dette billede vil evt. " +#~ "farvetab blive permanent.

        For at undgå problemet kan du forøge " +#~ "skærmdybden til mindst %1bpp og så genstarte KolourPaint.

        " + +#~ msgid "" +#~ "

        The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Billedet der skal indsættes indeholder gennemsigtighed som ikke er " +#~ "fuldt understøttet. Gennemsigtighedsdata vil blive tilnærmet med en 1-bit " +#~ "gennemsigtighedsmaske.

        Hvis du gemmer dette billede, vil dette " +#~ "tab af gennemsigtighed blive permanent.

        " + +#~ msgid "

        There is nothing in the clipboard to paste.

        " +#~ msgstr "

        Der er intet i udklipsholderen at indsætte.

        " + +#~ msgid "" +#~ "

        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

        If you save this image, any color loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


        It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

        If you save this " +#~ "image, this loss of translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Billedet \"%1\" har måske flere farver end den nuværende " +#~ "skærmtilstand understøtter. For at vise det, kan noget farveinformation " +#~ "blive fjernet.

        Hvis du gemmer dette billede vil eventuelt " +#~ "farvetab blive permanent.

        For at undgå problemet kan du forøge " +#~ "din skærmdybde til mindst %2bpp og genstarte KolourPaint.


        Det " +#~ "indholder også gennemsigtighed som ikke er fuldt understøttet. " +#~ "Gennemsigtighedsdata vil blive tilnærmet med en 1-bit " +#~ "gennemsigtighedsmaske.

        Hvis du gemmer dette billede vil dette " +#~ "tab af gennemsigtighed blive permanent.

        " + +#~ msgid "" +#~ "

        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

        If you save this image, any color loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Billedet \"%1\" har måske flere farver end den nuværende " +#~ "skærmtilstand understøtter. For at vise det, kan noget farveinformation " +#~ "blive fjernet.

        Hvis du gemmer dette billede vil eventuelt " +#~ "farvetab blive permanent.

        For at undgå problemet kan du forøge " +#~ "din skærmdybde til mindst %2bpp og genstarte KolourPaint.

        " + +#~ msgid "" +#~ "

        The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Billedet \"%1\" indholder gennemsigtighed som ikke er fuldt " +#~ "understøttet. Gennemsigtighedsdata vil blive tilnærmet med en 1-bit " +#~ "gennemsigtighedsmaske.

        Hvis du gemmer dette billede vil dette " +#~ "tab af gennemsigtighed blive permanent.

        " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Kunne ikke åbne \"%1\" - løbet tør for grafikhukommelse." + +#~ msgid "Scanning Support" +#~ msgstr "Skannerunderstøttelse" diff --git a/po/de/docs/kolourpaint/KolourPaint.png b/po/de/docs/kolourpaint/KolourPaint.png new file mode 100644 index 0000000..bb7751b Binary files /dev/null and b/po/de/docs/kolourpaint/KolourPaint.png differ diff --git a/po/de/docs/kolourpaint/image_balance.png b/po/de/docs/kolourpaint/image_balance.png new file mode 100644 index 0000000..30cd609 Binary files /dev/null and b/po/de/docs/kolourpaint/image_balance.png differ diff --git a/po/de/docs/kolourpaint/image_emboss.png b/po/de/docs/kolourpaint/image_emboss.png new file mode 100644 index 0000000..bc17cb0 Binary files /dev/null and b/po/de/docs/kolourpaint/image_emboss.png differ diff --git a/po/de/docs/kolourpaint/image_flatten.png b/po/de/docs/kolourpaint/image_flatten.png new file mode 100644 index 0000000..ee31a84 Binary files /dev/null and b/po/de/docs/kolourpaint/image_flatten.png differ diff --git a/po/de/docs/kolourpaint/image_flip.png b/po/de/docs/kolourpaint/image_flip.png new file mode 100644 index 0000000..149e8d1 Binary files /dev/null and b/po/de/docs/kolourpaint/image_flip.png differ diff --git a/po/de/docs/kolourpaint/image_invert.png b/po/de/docs/kolourpaint/image_invert.png new file mode 100644 index 0000000..af60f5d Binary files /dev/null and b/po/de/docs/kolourpaint/image_invert.png differ diff --git a/po/de/docs/kolourpaint/image_reduce_colors.png b/po/de/docs/kolourpaint/image_reduce_colors.png new file mode 100644 index 0000000..9ce456b Binary files /dev/null and b/po/de/docs/kolourpaint/image_reduce_colors.png differ diff --git a/po/de/docs/kolourpaint/image_resize_scale.png b/po/de/docs/kolourpaint/image_resize_scale.png new file mode 100644 index 0000000..7da6af0 Binary files /dev/null and b/po/de/docs/kolourpaint/image_resize_scale.png differ diff --git a/po/de/docs/kolourpaint/image_rotate.png b/po/de/docs/kolourpaint/image_rotate.png new file mode 100644 index 0000000..3080946 Binary files /dev/null and b/po/de/docs/kolourpaint/image_rotate.png differ diff --git a/po/de/docs/kolourpaint/image_skew.png b/po/de/docs/kolourpaint/image_skew.png new file mode 100644 index 0000000..9e4963c Binary files /dev/null and b/po/de/docs/kolourpaint/image_skew.png differ diff --git a/po/de/docs/kolourpaint/image_soften_sharpen.png b/po/de/docs/kolourpaint/image_soften_sharpen.png new file mode 100644 index 0000000..851935e Binary files /dev/null and b/po/de/docs/kolourpaint/image_soften_sharpen.png differ diff --git a/po/de/docs/kolourpaint/index.docbook b/po/de/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..29d3d01 --- /dev/null +++ b/po/de/docs/kolourpaint/index.docbook @@ -0,0 +1,1786 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +Das Handbuch zu &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +BurkhardLück
        lueck@hube-lueck.de
        Übersetzung
        +
        + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2018-03-23 +Anwendungen 18.04 + + +&kolourpaint; ist ein freies und einfach zu benutzendes Mal- und Zeichenprogramm von &kde;. + + + +kolourpaint +kdegraphics + + +
        + + +Einleitung +&kolourpaint; ist ein freies und einfach zu benutzendes Mal- und Zeichenprogramm von &kde;. Es ist gut geeignet für alltägliche Aufgaben wie: + + + +Zeichnen von Diagrammen und Freihandzeichnen + + +Bearbeitung von Bildschirmfotos - Aufnehmen und verändern + + +Bildbearbeitung - Fotos und eingescannte Fotos bearbeiten, Effekte anwenden + + +Bearbeitung von Symbolen - Zeichnen von Cliparts und Logos mit Transparenz + + + + + + + + + + + + + +Arbeiten mit &kolourpaint; + +Klicken Sie auf folgende Verknüpfungen, um die Eigenschaften von &kolourpaint; kennen zu lernen: + + + +Werkzeuge + + +Arbeiten mit Farben + + +Ansichtsoptionen + + +Bildeffekte + + + + + +Werkzeuge + +Im Menü Einstellungen können Sie festlegen, ob mit Anti-Aliasing (Voreinstellung) oder ohne gezeichnet wird. + + +Aufnehmen von Bildschirmfotos + +Ein Bildschirmfoto zeigt den Inhalt des Bildschirms Ihres Rechners. Damit können Sie erklären, welche Aktionen für ein bestimmte Aufgabe ausgeführt werden sollen oder Probleme zeigen, die Sie gefunden haben. +Um Bildschirmfotos zur Bearbeitung in das &kolourpaint; zu laden wählen Sie DateiBildschirmfoto aufnehmen aus dem Menü. + + + + + + + +Stellen Sie dann im Dialog eine Verzögerung für Bildschirmfotos ein und aktivieren oder deaktivieren Hauptfenster ausblenden für die Aufnahme. Haben Sie alles richtig eingestellt, drücken Sie auf OK. Das aufgenommenen Bildschirmfoto wird dann direkt im Bearbeitungsbereich von &kolourpaint; angezeigt. + + + +Referenz der Werkzeuge + +Um ein Werkzeug in &kolourpaint; schnell auszuwählen, drücken Sie das einzelne zugeordnete Tastenkürzel. Diese Tastenkürzel werden im folgenden Text und in den Kurztipps des Werkzeugkastens beschrieben. Sie können diese Tastenkürzel auch mit gedrückten &Alt;&Shift;-Tasten benutzen, dies ist sogar bei der Texteingabe erforderlich (die einzelnen Tastenkürzel sind hier abgeschaltet). Um zum Beispiel den Pinsel auszuwählen, drücken Sie &Alt;&Shift;B oder nur B, wenn Sie keinen Text eingeben. + + + Pinsel (B) + + Farbradierer (O) + + Farbauswahl (C) + + Linienzug (N) + + Kurve (V) + + Ellipse (E) + + Radierer (A) + + Fläche füllen (F) + + Linie (L) + + Stift (P) + + Polygon (G) + + Rechteck (R) + + Abgerundetes Rechteck (U) + + Auswahl (elliptisch) (I) + + Auswahl (Freihand) (M) + + Auswahl (rechteckig) (S) + + Sprühdose (Y) + + Text (T) + + + + + +Pinsel <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Klicken oder Ziehen Sie mit der gedrückten linken Maustaste, um mit dem Pinsel zu malen. + + + + + + + + + + + + + + +Klicken Sie auf eine der Formen, um die Art des Pinsels auszuwählen. Es gibt Pinsel als Kreis, Quadrat, Schrägstrich und umgekehrten Schrägstrich. + + + + + + +Die &LMB; zeichnet in der Vordergrundfarbe, die &RMB; in der Hintergrundfarbe. + + + +Farbauswahl <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Um die Vordergrundfarbe einzustellen, klicken Sie mit der linken Maustaste auf ein Pixel im Bild. Für die Hintergrundfarbe benutzen Sie die rechte Maustaste. &kolourpaint; arbeitet dann mit dem vorher gewählten Werkzeug weiter. + + + + +Linienzug und Polygon <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken oder Ziehen Sie mit der gedrückten linken Maustaste, um Linienzüge zu zeichnen. Für Polygone klicken Sie einzelne Punkte, die Anfangs- und Endpunkte werden dann automatisch zu einem Polygon verbunden. + +Die &LMB; zeichnet in der Vordergrundfarbe, die &RMB; Maustaste in der Hintergrundfarbe und kehrt auch die Füllfarbe für Polygone um. + +Sie können die Linienbreite und für Polygone auch die Flächenfüllung einstellen. + + + + +Kurve <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Mit Klicken und Ziehen zeichnen Sie eine Linie - dies legt den Anfangs- und Endpunkt der Kurve fest. Durch Ziehen können Sie bis zu zwei Kontrollpunkte setzen. Um die Kurve ohne diese Kontrollpunkte zu zeichnen, klicken Sie mit der anderen Maustaste. Das Werkzeug Kurve zeichnet eine kubische Bezier-Kurve. + +Die &LMB; zeichnet in der Vordergrundfarbe, die &RMB; in der Hintergrundfarbe. + +Sie können auch die Linienbreite einstellen. + + + + +Ellipse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken und ziehen Sie, um eine Ellipse zu zeichnen. + +Die &LMB; zeichnet in der Vordergrundfarbe, die &RMB; in der Hintergrundfarbe und kehrt die Füllfarbe um. + +Sie können auch die Linienbreite und die Flächenfüllung einstellen. + +Weitere Funktionen erreichen Sie mit diesen Zusatztasten: + + + +Halten Sie die &Shift;-Taste gedrückt und ziehen Sie, um einen Kreis zu zeichnen. + + +Um eine Ellipse mit einem bestimmten Mittelpunkt zu zeichnen, halten Sie die &Ctrl;-Taste, klicken auf den Mittelpunkt und ziehen, bis die Ellipse die gewünschte Größe und Form hat. + + +Um einen Kreis mit einem bestimmten Mittelpunkt zu zeichnen, halten Sie die &Ctrl;- und die &Shift;-Tasten, klicken auf den Mittelpunkt und ziehen, bis der Kreis die gewünschte Größe hat. + + + + + + +Die Radierer + + +Radierer <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken und ziehen Sie mit dem Radierer, um Fehler zu beseitigen. + + +Im Gegensatz zu den anderen Werkzeugen zeichnet der Radierer in der Hintergrundfarbe. Um mit der Vordergrundfarbe zu radieren, benutzen Sie die &RMB;. + + +Der Radierer hat nur eine quadratische Form. Um mit anderen Formen zu radieren, benutzen Sie den Pinsel und die &RMB;. + + +Ein Doppelklick auf das Symbol Radierer löscht die gesamte Zeichnung. Dies erreichen Sie auch mit Löschen im Menü Bild. + + + + + +Farbradierer <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken und ziehen Sie, um in den Pixeln die Vordergrundfarbe durch die Hintergrundfarbe zu ersetzen. Um alle Pixel auf gleiche Art (aber nicht zwingend genau gleich) in die Vordergrundfarbe umzuwandeln, wie zum Beispiel Bilder mit Dither oder Fotos, benutzen Sie als Einstellung für Farbähnlichkeit einen anderen Wert als Exakt. + + +Im Gegensatz zu den anderen Werkzeugen zeichnet der Radierer in der Hintergrundfarbe. Um in den Pixeln die Hintergrundfarbe durch die Vordergrundfarbe zu ersetzen, benutzen Sie die &RMB;. + + +Sie können die Größe des Radierers einstellen. + + +Mit einem Doppelklick auf das Symbol „Farbradierer“ bearbeiten Sie das gesamte Bild. + + + + + + +Fläche füllen <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken Sie in einen Bereich, um ihn mit Farbe zu füllen. Für eine Füllung mit Dither stellen Sie die Farbähnlichkeit auf einen andern Wert als Exakt ein. + +Die &LMB; füllt mit der Vordergrundfarbe, die &RMB; mit der Hintergrundfarbe. + + + +Linie <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken und ziehen Sie, um eine Linie zu zeichnen. + +Die &LMB; zeichnet in der Vordergrundfarbe, die &RMB; in der Hintergrundfarbe. + +Sie können auch die Linienbreite einstellen. + + + + + + + + + + + + + + + + + + + + + +Mit gedrückter &Ctrl;-Taste zeichnen Sie Linien mit Winkeln in 30 Grad-Schritten - dies sind die Linien im roten Diagramm. + + +Mit gedrückter &Shift;-Taste zeichnen Sie Linien mit Winkeln in 45 Grad-Schritten - dies sind die Linien im blauen Diagramm. + + +Mit gedrückter &Ctrl;- und &Shift;-Taste zeichnen Sie Linien mit Winkeln in 30 und 45 Grad-Schritten - dies sind die Linien im grünen Diagramm. + + + + + + +Stift <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Mit Klicken zeichnen Sie einen Punkt, mit Klicken und Ziehen eine Freihandlinie. + +Die &LMB; zeichnet in der Vordergrundfarbe, die &RMB; in der Hintergrundfarbe. + + + + +Rechtecke <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken und ziehen Sie, um ein Rechteck zu zeichnen. Das Abgerundete Rechteck wird mit runden Ecken gezeichnet. + +Die &LMB; zeichnet in der Vordergrundfarbe, die &RMB; in der Hintergrundfarbe und kehrt die Füllfarbe um. + +Sie können auch die Linienbreite und die Flächenfüllung einstellen. + +Weitere Funktionen erreichen Sie mit diesen Zusatztasten: + + + +Ziehen bei gedrückter &Shift;-Taste zeichnet ein Quadrat. + + +Um ein Rechteck mit einem bestimmten Mittelpunkt zu zeichnen, halten Sie die &Ctrl;-Taste, klicken auf den Mittelpunkt und ziehen, bis das Rechteck die gewünschte Größe und Form hat. + + +Um ein Quadrat mit einem bestimmten Mittelpunkt zu zeichnen, halten Sie die &Ctrl;- und die &Shift;-Tasten, klicken auf den Mittelpunkt und ziehen, bis das Quadrat die gewünschte Größe hat. + + + + + + +Auswahl <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Mit den Auswahlwerkzeugen können Sie die Grenzen einer Auswahl zeichnen. + +Klicken Sie auf eine Auswahl und ziehen Sie, um sie zu verschieben. Die Ansicht des gesamten Bildes wird, falls notwendig, auch verschoben, damit Sie sie die Auswahl auch in aktuell nicht angezeigte Teile des Bildes bewegen können. + +Sie können das ganze Bild mit Größe verändern oder die Auswahl mit Intelligent skalieren durch Ziehen an den Kontrollpunkten bearbeiten. Drücken Sie die &Shift;taste beim Ziehen, um das Seitenverhältnis einer Auswahl beizubehalten. Die &RMB; öffnet ein Kontextmenü mit den Befehlen Bearbeiten und Bildeffekte. + + +Sie können auch die Cursor-Tasten benutzen, um die Grenze einer Auswahl zu zeichnen oder sie zu verschieben. + + +Wenn Sie die &Ctrl;-Taste drücken, ehe Sie die Auswahl verschieben, wird die Auswahl kopiert. Wenn Sie die &Shift;-Taste drücken, ehe Sie die Auswahl verschieben, wird die Auswahl verwischt. + + + + + + + + + + + + + +Es gibt zwei Auswahl-Modi: Deckend (Voreinstellung) und Transparent. Benutzen Sie den transparenten Auswahl-Modus, dann sind alle Pixel in der Hintergrundfarbe transparent (Hintergrund-Subtraktion). Damit können Sie einen Bereich ohne den Hintergrund auswählen. Um die Hintergrund-Subtraktion in einem Bild mit Dither anzuwenden, müssen Sie die Farbähnlichkeit auf einen anderen Wert als Exakt einstellen. + + + + + + +Sie können Bildeffekte auf eine Auswahl anwenden - weitere Informationen finden Sie unter Bildeffekte. + +Sie können eine Auswahl in eine Datei speichern, indem Sie den Eintrag In Datei kopieren ... aus dem Auswahl-Kontextmenü oder den Eintrag In Datei kopieren ... aus dem Hauptmenü verwenden. + + + +Sprühdose <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken und ziehen Sie, um Farbe aufzusprühen. Halten Sie den Mauszeiger mit gedrückter Taste länger auf die gleiche Stelle, um die Farbe kräftiger aufzutragen. + + + + + + + + + + + + + +Klicken Sie auf eine Form, um die Größe der Sprühdose einzustellen. Zur Auswahl stehen Ihnen Größen von 9x9, 17x17 und 29x29 Pixeln. + + + + + + +Die &LMB; zeichnet in der Vordergrundfarbe, die &RMB; in der Hintergrundfarbe. + + + + +Text <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicken und ziehen Sie, um ein Textfeld für die Eingabe zu öffnen. Sobald der Rand angezeigt wird, können Sie Text eingeben. Klicken und ziehen Sie den Rand, um das Feld zu verschieben. Die Größe des Textfeldes können Sie mit den Kontrollpunkten oder im Dialog Größe ändern einstellen. + + +Wenn Sie das Textfeld abgewählt haben, können Sie mit Rückgängig den Text noch einmal bearbeiten. + + + +Arbeiten mit transparenten Farben + + + + + + + + +Links sehen Sie ein Beispielbild. Rechts das Bild mit Text in deckenden Vorder- und Hintergrundfarben. + + + + + + + + + +Links sehen Sie das Beispielbild mit eingefügtem Text in deckender Vordergrundfarbe und transparenter Hintergrundfarbe. Rechts das Beispielbild mit eingefügtem Text in transparenter Vordergrundfarbe und deckender Hintergrundfarbe. + + + + +Gemeinsame Optionen für Werkzeuge + + + + + + + + + + + + + +Klicken Sie auf ein Quadrat, um die Größe der Radierer einzustellen. Zur Auswahl stehen Quadrate mit Seitenlängen von 2, 3, 5, 9, 17 und 29 Pixeln. + +Diese Einstellung der Größe wirkt sich auf alle Radierer aus. + + + + + + + + + + + +Klicken Sie auf eine der Linien, um die Breite einzustellen. Zur Auswahl stehen Linienbreiten von 1, 2, 3, 5 und 8 Pixeln. + +Die Einstellung der Linienbreite wirkt sich auf Linienzug, Kurve, Ellipse, Linien, Polygon, Rechteck und Abgerundetes Rechteck aus. + + + + + + + + + + + +Klicken Sie auf eines der Rechtecke, um die Flächenfüllung einzustellen. Zur Auswahl stehen Keine Füllung und Füllung mit Vorder- oder Hintergrundfarbe. Die Einstellung der Flächenfüllung wirkt sich auf Ellipse, Polygon, Rechteck und Abgerundetes Rechteck aus. + + + + + + + + + + +Arbeiten mit Farben + + +Das Farbfeld + + + + + + + +Farbfeld + + + + +Das Farbfeld ist in drei Abschnitte eingeteilt. Die Farbtafel, die Farbpalette und die Auswahl der Farbähnlichkeit. + +Die Farbtafel zeigt die aktuelle Vordergrundfarbe als Quadrat auf einem anderen Quadrat mit der Hintergrundfarbe. Die linke Maustaste zeichnet in der Vordergrundfarbe, die rechte Maustaste in der Hintergrundfarbe (mit Ausnahme der Radierer). Ein Klick auf den Doppelpfeil vertauscht Vorder- und Hintergrundfarbe. + +Die Farbpalette zeigt eine Reihe von Farben zur Auswahl an. Die durchsichtige Pyramide stellt die transparente Farbe dar. Ein Klick mit der linken Maustaste auf eine Farbe setzt die Vordergrundfarbe, ein Klick mit der rechten Maustaste auf eine Farbe die Hintergrundfarbe. Außerdem können Sie jede deckende Farbe auf die Quadrate der Farbtafel ziehen. Mit einem Doppelklick bearbeiten Sie Farben in der Farbtafel oder Farbpalette. Mit dem Werkzeug Farbwahl können Sie auch eine Farbe aus dem Bild auswählen. + +Mit Farbähnlichkeit können Sie Bilder und Fotos mit Dither besser bearbeiten, etwa so wie mit der Eigenschaft Zauberstab anderer Zeichenprogramme. Farbähnlichkeit wird angewendet auf transparente Auswahl, aber auch auf die Werkzeuge Fläche füllen, Farbradierer und Automatisch zuschneiden / Internen Rand entfernen. Mit Doppelklick auf das Symbol Farbähnlichkeit können Sie einstellen, wie ähnlich Farben sein müssen, um als gleich bewertet zu werden. Arbeiten Sie mit einer Auswahl im transparenten Modus, wird jede Farbe der Auswahl, die der Hintergrundfarbe ähnlich ist, auch transparent. + + + + + + + + + +Das Bild links zeigt ein Beispiel. Die rechten Bilder zeigen die Anwendung der Flächenfüllung mit Farbähnlichkeiten von 5 %, 15 % und 30 %. In diesem Beispiel füllt die Flächenfüllung mit einer Farbähnlichkeit Exakt in (80, 100) nur einen Punkt, da die benachbarten Pixel ähnlich, aber nicht gleich sind. Wird die Einstellung für die Farbähnlichkeit vergrößert, werden auch mehr Pixel mit ähnlicher Farbe als gleich bewertet, dadurch vergrößert sich die Flächenfüllung. + + + + + +Ansichtsoptionen + + +Referenz der Ansichtsoptionen + +Vergrößerung einschließlich des Gitters +Vorschaubild + + + + +Vergrößerung einschließlich des Gitters +Erhöhen Sie den Vergrößerungsfaktor, um Bilder genauer bearbeiten zu können, oder verringern Sie ihn, um das gesamte Bild zu sehen. + + +Bei Vergrößerungsfaktoren, die kein Vielfaches von 100 % sind, können sich Teile des Bildes bei der Bearbeitung verschieben. Außerdem treten auch kleinere Darstellungsfehler auf. + + +Bei Vergrößerungsfaktoren von mehr als 400 %, die ein Vielfaches von 100 % sind, können Sie ein Gitter anzeigen lassen, um einzelne Pixel genauer bearbeiten zu können. + + + + + + + + + + + + + + + +Das erste Bild zeigt das Werkzeugsymbol Text, das nächste das gleiche Symbol bei einem Vergrößerungsfaktor von 600 % mit eingeschaltetem Gitter. + + +Zusätzlich können Sie mit dem Mausrad bei gedrückter &Ctrl;taste die Vergrößerung ändern. + + + + + +Vorschaubild + + + + + + + +Im Modus „Vollständiges Vorschaubild“ wird das gesamte Bild so skaliert, das es vollständig in das Vorschaufenster passt (Bild rechts-oben). +Ansonsten zeigt das Vorschaubild den oberen linken Bereich des Bildes im Hauptfensters an (Bild rechts-unten). + + + + + +Bildeffekte + + +Referenz der Bildeffekte +Automatisch zuschneiden / Internen Rand entfernen +Abgleich +Löschen +Relief +Einfärben +Senkrecht spiegeln +Invertieren +Farben reduzieren +In Graustufen umwandeln +In Schwarzweiß umwandeln (mit Dither) +Waagerecht spiegeln +Größe ändern / Skalieren +Drehen +Als Bild verwenden (Zuschneiden) +Kippen +Weich- & Scharfzeichnen +Mehr Effekte +Anmerkungen + + + +Automatisch zuschneiden / Internen Rand entfernen + +Entfernt automatisch den Randbereich eines Bildes oder einer Auswahl. Benutzen Sie ‚Automatisch zuschneiden‘ für eine Zeichnung, die das gesamte Bild oder die Auswahl nicht ausfüllt, wenn Sie den überstehenden Randbereich abschneiden wollen. Verwenden Sie diese Eigenschaft bei einem Randbereich mit Dither, müssen Sie auch die Farbähnlichkeit einstellen. + + + + +Abgleich + +Diese Eigenschaft erreichen Sie über den Dialog Mehr Effekte. + + + + + + + + +Hier können Sie Helligkeit, Kontrast und Gammawert des Bildes oder der Auswahl einstellen. + + +Der gebräuchliche Wert für Gamma (ein Dezimalwert von 0,10 bis 10,00) wird zwischen dem Drehfeld Gamma und dem Knopf Zurücksetzen angezeigt. + + + + +Löschen + +Dies füllt das gesamte Bild oder die Auswahl mit der Hintergrundfarbe. + + +Mit einem Doppelklick auf das Symbol Radierer löschen Sie das gesamte Bild. + + + + + +Relief + +Diese Eigenschaft erreichen Sie über den Dialog Mehr Effekte. + + + + + + + + +Kreuzen Sie Aktivieren an, um den Prägeeffekt zu verwenden. Dies betont die Kanten und gibt dem Bild oder der Auswahl ein "eingraviertes Aussehen". + + + +Einfärben + +Diese Eigenschaft erreichen Sie über den Dialog Mehr Effekte. + + + + + + + + +Färbt das Bild in verschiedenen Zwischentönen der beiden ausgewählten Farben. + + + +Senkrecht spiegeln + +Spiegelt das gesamte Bild oder die Auswahl senkrecht. + + + + +Invertieren + +Diese Eigenschaft erreichen Sie über den Dialog Mehr Effekte. + + + + + + + + +Invertiert einen oder mehr RGB-Kanäle eines Bildes oder einer Auswahl. Wählen Sie Alle, um ein Foto in ein Negativ und umgekehrt zu ändern. + + +Um schnell alle Kanäle zu invertieren, müssen Sie nicht diesen Dialog verwenden. Wählen Sie stattdessen den Eintrag Farben invertieren im Menü Bild oder im Menü Auswahl. Das Menü Auswahl wird nur dann angezeigt, wenn Sie ein Auswahlwerkzeug verwenden. Zusätzlich finden Sie diese Aktion im Kontextmenü, das durch einen Klick mit der &RMBn; in den Bildbereich geöffnet wird. + + + + + +Waagerecht spiegeln + +Spiegelt das gesamte Bild oder die Auswahl waagerecht. + + + + +Farben reduzieren + +Diese Eigenschaft erreichen Sie über den Dialog Mehr Effekte. + + + + + + + + +Dies verringert die Anzahl der im Bild oder der Auswahl benutzten Farben, mit oder ohne Dither. + +Dither ergibt im allgemeinen bessere Ergebnisse, für künstliche Effekte aber können Sie Dither auch abschalten, ⪚ erzeugt Schwarzweiß anstelle von Schwarzweiß (Dither) eine Silhouette als Effekt. + +Ein weiterer wichtiger Unterschied: Während Schwarzweiß (Dither) immer das gesamte Bild oder die Auswahl in schwarzweiß umwandelt, geschieht das bei Schwarzweiß nur wenn, das Bild oder die Auswahl mehr als zwei Farben enthält. + + +Mit dem Menüeintrag In Schwarzweiß umwandeln (mit Dither) aus dem Menü Bild oder Auswahl können Sie schnell ein Bild oder eine Auswahl in Schwarzweiß umwandeln. Das Menü Auswahl wird nur dann angezeigt, wenn Sie ein Auswahlwerkzeug verwenden. Zusätzlich finden Sie diese Aktion im Kontextmenü, das durch einen Klick mit der &RMBn; in den Bildbereich geöffnet wird. + + + +Die Änderung der Anzahl der Farben hier hat keine Auswirkungen auf die Farbtiefe des Dateiformates. Wenn Sie die Farbtiefe ändern wollen, müssen Sie dies im Dialog Datei speichern eingeben. Beachten Sie aber, das die Änderung der Farbtiefe auch die Anzahl der Farben ändert. + + + + +In Graustufen umwandeln + +Wandelt das gesamte Bild oder die Auswahl in Graustufen um. + + + + +In Schwarzweiß umwandeln (mit Dither) + +Dies wandelt das gesamte Bild oder die Auswahl in Schwarzweiß um. + + +Benutzen Sie den Dialog Farben reduzieren, wenn die Umwandlung ohne Dither erfolgen soll + + + + +Größe ändern / Skalieren + + + + + + + + + +Die Änderung der Größe eines Bildes verändert nicht den vorhandenen Inhalt. Eine Skalierung des Bildes jedoch passt den Inhalt an die neue Größe an. Intelligent Skalieren ergibt im allgemeinen bessere Ergebnisse durch Mischen benachbarter Farben als Skalieren. + +Die neuen Abmessungen können Sie in Pixeln oder als Verhältnis zur Originalgröße eingeben. Wenn Sie Seitenverhältnis beibehalten ankreuzen, wird Breite und Höhe um den gleichen Faktor verändert. + + +Mit den Kontrollpunkten können Sie das ganze Bild in der Größe ändern oder eine Auswahl Intelligent Skalieren. + + + +Eine Auswahl können Sie nur Skalieren und ein Textfeld nur in der Größe verändern. In den Anmerkungen finden Sie weitere Einzelheiten über die Anwendung dieser Effekte. + + + + +Drehen + + + + + + + + + +Dreht das Bild. Geben Sie Winkel und Richtung der Drehung ein. + + +Die Drehrichtung können Sie mit der Eingabe eines negativen Winkels umkehren. + + + +In den Anmerkungen finden Sie Einzelheiten über die Anwendung dieses Effektes auf eine Auswahl. + + + + +Als Bild verwenden (Zuschneiden) + +Ersetzt das Bild durch die Auswahl. + + +Dies kann nur bei einer aktiven Auswahl angewählt werden. + + + + +Kippen + + + + + + + + + +Kippt das gesamte Bild oder die Auswahl waagerecht und/oder senkrecht. + + +In den Anmerkungen finden Sie Einzelheiten über die Anwendung dieses Effektes auf eine Auswahl. + + + + +Weich- & Scharfzeichnen + +Diese Eigenschaft erreichen Sie über den Dialog Mehr Effekte. + + + + + + + + +Mit diesem Effekt können Sie das Bild weich- oder scharfzeichnen. + + + + +Mehr Effekte + +Dieser Dialog enthält die Eigenschaften Abgleich, Relief, Einfärben, Invertieren, Farben reduzieren und Weich- & Scharfzeichnen. + + + +Anmerkungen + +Größe ändern / Skalieren, Drehen und Kippen können die Größe des Bildes verändern. Die neuen Abmessungen sehen Sie im Dialog. + +Wenn Sie diese Effekte auf ein Bild anwenden, wird dessen Größe verändert, falls erforderlich. Wenden Sie diese Effekte jedoch auf eine Auswahl an, wird die Größe des Bildes nicht verändert, sogar wenn die umgeformte Auswahl nicht ins Bild passt. + + + + + + + + + +Das linke Bild wurde um 30 Grad im Uhrzeigersinn gedreht und ergibt damit das rechte Bild. &kolourpaint; hat das Bild automatisch vergrößert, um den größeren Inhalt ein zu passen. + + + + + + + + + +Die linke Auswahl wurde um 30 Grad im Uhrzeigersinn gedreht und ergibt damit die rechte Auswahl. Die Größe des Bildes ist unverändert, daher sind Teile der Auswahl ohne Anpassung der Größe des Bildes nicht sichtbar. + + + + + +Danksagungen und Lizenz + +Carl Tucker +Dies ist vielleicht nicht die prägnanteste und nicht die vollständige Dokumentation, aber die aufrichtigste Dokumentation. + + +&kolourpaint; +Programm Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Symbole für &kolourpaint; Copyright © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Dokumentation und zusätzliche Vorlagen für die Dokumentation Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail;. + +Teile der Dokumentation mit Genehmigung von . + +Übersetzung Burkhard Lück lueck@hube-lueck.de &underFDL; Diese Programm hat folgende Lizenz: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; +
        + + diff --git a/po/de/kolourpaint.po b/po/de/kolourpaint.po new file mode 100644 index 0000000..2546514 --- /dev/null +++ b/po/de/kolourpaint.po @@ -0,0 +1,3058 @@ +# Stefan Winter , 2004, 2005. +# Stephan Johach , 2004, 2005. +# Thomas Reitelbach , 2005, 2007, 2008, 2010. +# Burkhard Lück , 2007, 2008, 2009, 2011, 2013, 2014, 2015, 2017, 2020, 2021. +# Panagiotis Papadopoulos , 2010, 2011. +# Frederik Schwarzer , 2011, 2012, 2013, 2016, 2018. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-14 10:23+0200\n" +"Last-Translator: Burkhard Lück \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Stefan Winter,Thomas Reitelbach" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "swinter@kde.org,tr@erdfunkstelle.de" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Abgleich" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Weichzeichnen" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Schärfen" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Löschen" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Auswahl: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Relief" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Einfärben" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "In Graustufen umwandeln" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Farbton, Sättigung, Hellwert" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Farben invertieren" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertieren" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "In Schwarzweiß umwandeln (mit Rasterung)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "In Schwarzweiß umwandeln" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "In 256 Graustufen umwandeln (mit Rasterung)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "In 256 Graustufen umwandeln" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogramm-Equalizer" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Spiegeln" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Waagerecht / Senkrecht spiegeln" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Waagerecht spiegeln" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Senkrecht spiegeln" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Text: Feldgröße ändern" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Auswahl: Skalieren" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Auswahl: Weich skalieren" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Größe ändern" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skalieren" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Weich skalieren" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Drehen" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Kippen" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Rückgängig: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Rückgängig" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Wiederherstellen: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Wiederherstellen" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Rückgängig: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Rückgängig" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Wiederherstellen: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Wiederherstellen" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 weiteres Objekt" +msgstr[1] "%1 weitere Objekte" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Farbpipette" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Farbeimer" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Mehr Bildeffekte (Auswahl)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Mehr Bildeffekte" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Farben reduzieren" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Weich- & Scharfzeichnen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokument-Eigenschaften" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Punkte pro Zoll (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nicht festgelegt" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " × " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Waagerecht:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Senkrecht:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

        " +msgstr "" +"

        Punkte pro Zoll (DPI) geben die Anzahl Pixel im Bild an, die " +"auf einem Zoll (2,54 cm) gedruckt werden sollen.

        \n" +"

        Je höher die Auflösung eines Bildes in DPI ist, desto kleiner wird der " +"Ausdruck auf dem Papier. Viele Drucker sind nicht in der Lage, " +"hochqualitative Ausdrucke mit mehr als 300 oder 600 DPI zu erzeugen.

        Wenn das Bild genauso groß ausgedruckt werden soll, wie es auf dem " +"Bildschirm zu sehen ist, so stellen Sie den Wert für DPI auf den gleichen " +"Wert wie für Ihren Bildschirm ein.

        Wenn beide Werte Nicht " +"festgelegt sind, wird das Bild in der Anzeigegröße auf dem Bildschirm " +"gedruckt.

        Nicht alle Bildformate unterstützen die Angabe von DPI-" +"Werten. Wenn das gewählte Dateiformat keine DPI-Angabe unterstützt, so " +"werden die Werte nicht gespeichert.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Versatz:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

        The Offset is the relative position where this image should be " +"placed, compared to other images.

        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

        " +msgstr "" +"

        Der Versatz ist die relative Position, an der das Bild im " +"Vergleich zu anderen Bildern positioniert wird.

        Nicht alle Bildformate " +"unterstützen die Angabe eines Versatz. Wenn das gewählte Dateiformat " +"keine Versatz-Angabe unterstützt, so werden die Werte nicht gespeichert." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Textfelder" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Zeile &hinzufügen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Zeile &löschen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Zurücksetzen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

        " +msgstr "" +"

        Textfelder enthalten zusätzliche Informationen über ein Bild. " +"Sie können sie als Kommentarbereiche betrachten, in die Sie beliebigen Text " +"schreiben können.

        Textfelder sind jedoch formatabhängig und können " +"theoretisch Daten enthalten, die vom Rechner automatisch interpretiert " +"werden. Diese Daten sollten Sie nicht verändern.

        Nicht alle " +"Bildformate unterstützen die Angabe eines Textfeldes. Wenn das " +"gewählte Dateiformat keine Textfelder unterstützt, so werden die Daten nicht " +"gespeichert.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Schlüssel" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Wert" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Für den Textwert „%1“ in Zeile %2 ist ein Schlüssel erforderlich." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Alle Text-Schlüssel müssen einmalig sein. Die Text-Schlüssel „%1“ in den " +"Zeilen %2 und %3 sind aber identisch." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Ungültige Textfelder" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Abmessungen" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 × %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Vorschau" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Aktualisieren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Ausdehnen / Skalieren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "An&wenden auf:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Gesamtes Bild" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Auswahl" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Textfeld" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Skalier-Modus" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
        " +msgstr "" +"
        • Größe ändern: Das Bild wird vergrößert, indem links/" +"rechts bzw. oben/unten neue Flächen eingefügt werden (mit der " +"Hintergrundfarbe gefüllt), oder verkleinert, indem rechts/links bzw. oben/" +"unten Teile abgeschnitten werden.
        • Skalieren: Das Bild wird " +"vergrößert, indem Pixel ausgedehnt oder dupliziert werden bzw. verkleinert, " +"indem Pixel weggelassen werden.
        • Weich Skalieren: Genau wie " +"Skalieren, allerdings werden benachbarte Pixel aneinander " +"angeglichen, um ein weicher aussehendes Bild zu erhalten.
        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Größe ändern" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skalieren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "&Weich skalieren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Breite:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Höhe:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Neu:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Prozent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr " %" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "&Seitenverhältnis beibehalten" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to resize the text box?

        " +msgstr "" +"

        Die Größenänderung des Textfeldes auf %1x%2 kann sehr viel " +"Speicherplatz verbrauchen. Dies kann dazu führen, dass das System sehr " +"langsam reagiert, und es kann zu weiteren Problemen mit anderen Programmen " +"führen.

        Sind Sie sicher, dass Sie die Größe des Textfeldes ändern " +"möchten?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Textfeld skalieren?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Textfeld &skalieren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to resize the image?

        " +msgstr "" +"

        Die Größenänderung des Bildes auf %1x%2 kann sehr viel Speicherplatz " +"verbrauchen. Dies kann dazu führen, dass das System sehr langsam reagiert, " +"und es kann zu weiteren Problemen mit anderen Programmen führen.

        Sind " +"Sie sicher, dass Sie die Größe des Bildes ändern möchten?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Bildgröße ändern?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Bild&größe ändern" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to scale the image?

        " +msgstr "" +"

        Die Skalierung des Bildes auf %1x%2 kann sehr viel Speicherplatz " +"verbrauchen. Dies kann dazu führen, dass das System sehr langsam reagiert, " +"und es kann zu weiteren Problemen mit anderen Programmen führen.

        Sind " +"Sie sicher, dass Sie das Bild skalieren möchten?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Bild skalieren?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Bild &skalieren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to scale the selection?

        " +msgstr "" +"

        Die Skalierung der Auswahl auf %1x%2 kann sehr viel Speicherplatz " +"verbrauchen. Dies kann dazu führen, dass das System sehr langsam reagiert, " +"und es kann zu weiteren Problemen mit anderen Programmen führen.

        Sind " +"Sie sicher, dass Sie die Auswahl skalieren möchten?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Auswahl skalieren?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Auswahl &skalieren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the image?" +msgstr "" +"

        Die weiche Skalierung des Bildes auf %1x%2 kann sehr viel " +"Speicherplatz verbrauchen. Dies kann dazu führen, dass das System sehr " +"langsam reagiert, und es kann zu weiteren Problemen mit anderen Programmen " +"führen.

        Sind Sie sicher, dass Sie das Bild weich skalieren möchten?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Bild weich skalieren?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Bild weich &skalieren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the selection?" +"

        " +msgstr "" +"

        Die weiche Skalierung der Auswahl auf %1x%2 kann sehr viel " +"Speicherplatz verbrauchen. Dies kann dazu führen, dass das System sehr " +"langsam reagiert, und es kann zu weiteren Problemen mit anderen Programmen " +"führen.

        Sind Sie sicher, dass Sie die Auswahl weich skalieren möchten?" +"

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Auswahl weich skalieren?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Auswahl weich &skalieren" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Auswahl drehen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Bild drehen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Nach dem Drehen:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Richtung" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Gegen den Uhrzeigersinn" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Mit dem Uhrzeigersinn" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Winkel" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "&90 Grad" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "&180 Grad" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "&270 Grad" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Benutzerdefiniert:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "Grad" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to rotate the selection?

        " +msgstr "" +"

        Das Drehen der Auswahl auf %1x%2 kann sehr viel Speicherplatz " +"verbrauchen. Dies kann dazu führen, dass das System sehr langsam reagiert, " +"und es kann zu weiteren Problemen mit anderen Programmen führen.

        Sind " +"Sie sicher, dass Sie die Auswahl drehen möchten?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Auswahl drehen?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Auswahl &drehen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to rotate the image?

        " +msgstr "" +"

        Das Drehen des Bildes auf %1x%2 kann sehr viel Speicherplatz " +"verbrauchen. Dies kann dazu führen, dass das System sehr langsam reagiert, " +"und es kann zu weiteren Problemen mit anderen Programmen führen.

        Sind " +"Sie sicher, dass Sie das Bild drehen möchten?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Bild drehen?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Bild &drehen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Auswahl kippen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Bild kippen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Nach dem Kippen:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Waagerecht:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Senkrecht:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to skew the selection?

        " +msgstr "" +"

        Das Kippen der Auswahl auf %1x%2 kann sehr viel Speicherplatz " +"verbrauchen. Dies kann dazu führen, dass das System sehr langsam reagiert, " +"und es kann zu weiteren Problemen mit anderen Programmen führen.

        Sind " +"Sie sicher, dass Sie die Auswahl kippen möchten?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Auswahl kippen?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Auswahl &kippen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to skew the image?

        " +msgstr "" +"

        Das Kippen des Bildes auf %1x%2 kann sehr viel Speicherplatz " +"verbrauchen. Dies kann dazu führen, dass das System sehr langsam reagiert, " +"und es kann zu weiteren Problemen mit anderen Programmen führen.

        Sind " +"Sie sicher, dass Sie das Bild kippen möchten?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Bild kippen?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Bild &kippen" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Farbähnlichkeit" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Farbdistanz im &RGB-Modell" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Exakte Übereinstimmung" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Was ist Farbähnlichkeit?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Vorschau speichern" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 Byte (ca. %2 %)" +msgstr[1] "%1 Bytes (ca. %2 %)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "„%1“ lässt sich nicht öffnen." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"„%1“ lässt sich nicht öffnen – nicht unterstütztes Format.\n" +"Die Datei könnte beschädigt sein." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Bild kann nicht gespeichert werden – ungenügend Informationen." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Adresse: %1\n" +"MIME-Typ: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Interner Fehler" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

        The %1 format may not be able to preserve all of the image's " +"color information.

        Are you sure you want to save in this format?

        " +msgstr "" +"

        Das Format %1 kann eventuell nicht alle Farbinformationen " +"dieses Bildes speichern.

        Sind Sie sicher, dass Sie in diesem Format " +"speichern möchten?

        " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Verlustbehaftetes Dateiformat" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

        Are " +"you sure you want to save at this color depth?

        " +msgstr "" +"

        Das Speichern dieses Bildes in der niedrigen Farbtiefe von %1 Bit " +"kann zu Verlust von Farbinformationen führen. Auch alle " +"Transparenzinformationen gehen verloren.

        Sind Sie sicher, dass Sie in " +"dieser Farbtiefe speichern möchten?

        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Niedrige Farbtiefe" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Das Bild kann nicht gespeichert werden – die temporäre Datei kann nicht " +"angelegt werden." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Das Bild kann nicht als „%1“ gespeichert werden: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Fehler beim Speichern des Bildes" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Das Bild kann nicht gespeichert werden – Hochladen fehlgeschlagen." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Internen Rand &entfernen" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Internen Rand entfernen" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Automatisch &zuschneiden" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automatisch zuschneiden" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"Der interne Rand der Auswahl kann nicht entfernt werden, da sie nicht " +"lokalisiert werden kann." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Der interne Rand kann nicht entfernt werden" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"Das Bild kann nicht automatisch zugeschnitten werden, da der Rand nicht " +"genau bestimmt werden kann." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Automatisches Zuschneiden unmöglich" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Als Bild festlegen" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Auswahl: Erzeugen" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Mal- und Zeichenprogramm von KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projekt-Initiator" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Entwicklungsüberwachung" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Scanner-Unterstützung, Alpha-Unterstützung, derzeitiger Betreuer" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Symbole" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Unterstützung für Eingabemethoden" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Bildeffekte" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE-4-Portierung" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF-5-Portierung" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Vielen Dank an die vielen Helfer, die die Entwicklung dieses Programms erst " +"möglich gemacht haben." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Zu öffnende Bilddateien (optional)" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Zeigt alle lesbaren MIME-Typen von Bildern" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Ansicht" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "B&ild" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Farben" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Haupt-Werkzeugleiste" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Text-Werkzeugleiste" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Auswahlwerkzeug-Menü (mit rechter Maustaste)" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Bearbeiten" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Vorschaubild" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Ziehen Sie an dem Kontrollpunkt, um die Bildgröße zu ändern." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Bildgröße ändern: alle Maustasten loslassen." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Bildgröße ändern: zum Abbrechen rechts klicken." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Farbpalette „%1“ lässt sich nicht öffnen." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Farbpalette „%1“ lässt sich nicht öffnen – nicht unterstütztes Format.\n" +"Die Datei könnte beschädigt sein." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "KDE-Farbpalette „%1“ lässt sich nicht öffnen." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Die Farbpalette kann nicht unter „%1“ gespeichert werden." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Unbenannt" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "KolourPaint-Voreinstellung" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE-Farben" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "Öff&nen ..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Neu &laden" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Speichern" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Speichern &unter ..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Zeile hinzufügen" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Letzte Zeile löschen" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Farbkasten" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Die Farbpalette „%1“ wurde geändert.\n" +"Möchten Sie sie speichern?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Die KDE-Farbpalette „%1“ wurde geändert.\n" +"Möchten Sie sie in eine Datei speichern?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Die Standardfarbpalette wurde geändert.\n" +"Möchten Sie sie in eine Datei speichern?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Farbpalette öffnen" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Die Farbpalette „%1“ wurde geändert.\n" +"Beim erneuten Laden gehen alle Änderungen seit dem letzten Speichern " +"verloren.\n" +"Sind Sie sicher?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Neu &laden" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Die KDE-Farbpalette „%1“ wurde geändert.\n" +"Beim erneuten Laden gehen alle Änderungen verloren.\n" +"Sind Sie sicher?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Die Standardfarbpalette wurde geändert.\n" +"Beim erneuten Laden gehen alle Änderungen verloren.\n" +"Sind Sie sicher?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Farbpalette speichern unter" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "In &neues Fenster einfügen" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Auswahl &löschen" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "In Datei &kopieren ..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Aus Datei &einfügen ..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: Feld erzeugen" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: Einfügen" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint kann den Inhalt der Zwischenablage nicht einfügen, da die " +"Daten ein unbekanntes Format haben" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Einfügen nicht möglich" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: Feld löschen" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Auswahl: Löschen" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: Fertigstellen" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Auswahl: Aufheben" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "In Datei kopieren" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Aus Datei einfügen" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportieren ..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Scannen ..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Bildschirmfoto aufnehmen" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Eigenschaften" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Neu &laden" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Alle unterstützten Dateien (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Bild öffnen" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Fehler beim Öffnen des Scan-Dialogs." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Scannen fehlgeschlagen" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Verzögerung für Bildschirmfotos" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " Sekunde" +msgstr[1] " Sekunden" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Keine Verzögerung" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Hauptfenster ausblenden" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokument-Eigenschaften" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Bild speichern unter" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportieren" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Das Dokument „%1“ wurde geändert.\n" +"Beim erneuten Laden gehen alle Änderungen seit dem letzten Speichern " +"verloren.\n" +"Sind Sie sicher?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Das Dokument „%1“ wurde geändert.\n" +"Beim erneuten Laden gehen alle Änderungen verloren.\n" +"Sind Sie sicher?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Bild drucken" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Das Bild muss gespeichert werden, bevor Sie es senden.\n" +"Möchten Sie es nun speichern?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Das Dokument „%1“ wurde geändert.\n" +"Möchten Sie es speichern?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "S&kalieren ..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Als Bild &verwenden (Zuschneiden)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Senkrecht spiegeln" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Waagerecht spiegeln" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Drehen ..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "&Links drehen" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "&Rechts drehen" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Kippen ..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "In Schwarz&weiß umwandeln (mit Rasterung)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "In &Graustufen umwandeln" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "Farben &invertieren" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Löschen" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Als Vertraulich einstufen" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Mehr Effekte ..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "Bi&ld" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Auswah&l" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&Pfad anzeigen" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Mit Kantenglättung zeichnen" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 – %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1 %" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Schriftfamilie" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Schriftgröße" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Fett" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursiv" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Unterstrichen" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Durchgestrichen" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Vorherige Werkzeugoption (Gruppe #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Nächste Werkzeugoption (Gruppe #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Vorherige Werkzeugoption (Gruppe #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Nächste Werkzeugoption (Gruppe #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Deckend &zeichnen" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Mit Farbähnlichkeit zeichnen ..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Werkzeugkasten" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "&Gitter anzeigen" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "&Vorschaubild anzeigen" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Skaliertes Vorschaubild" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "&Rechteck um Vorschaubild" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Bild holen" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Das Öffnen des gewählten Scanners ist fehlgeschlagen." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pinsel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Zeichnen mit Pinseln verschiedener Form und Größe" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" +"Klicken Sie, um Punkte zu zeichnen oder ziehen Sie, um Striche zu zeichnen." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Farbradierer" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Ersetzt Pixel der Vordergrundfarbe mit der Hintergrundfarbe" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Klicken oder ziehen Sie, um Pixel der Vordergrundfarbe zu radieren." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Radiergummi" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Zum Ausradieren von Fehlern" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Klicken oder ziehen Sie, um zu radieren." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Alle Maustasten loslassen." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Stift" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Zeichnet Punkte und Freihandstriche" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Sprühdose" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Sprüht Graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Klicken oder ziehen Sie, um Graffiti zu sprühen." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Zum Abbrechen rechts klicken." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Zum Abbrechen links klicken." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Ermöglicht die Auswahl einer Farbe aus dem Bild" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Klicken Sie, um eine Farbe zu wählen." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Füllt Bereiche des Bildes" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Klicken Sie, um einen Bildbereich zu füllen." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Zoomt in das Bild hinein oder heraus" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Klicken Sie, um hinein oder heraus zu zoomen, oder ziehen Sie mit der linken " +"Maustaste, um einen Bereich anzuzeigen." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kurve" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Zeichnet Kurven" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Ziehen Sie die Start- und Endpunkte." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Ziehen Sie mit der linken Maustaste, um den ersten Kontrollpunkt zu setzen, " +"oder klicken Sie mit rechts zum Beenden." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Ziehen Sie mit der rechten Maustaste, um den ersten Kontrollpunkt zu setzen, " +"oder klicken Sie mit links zum Beenden." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Ziehen Sie mit der linken Maustaste, um den letzten Kontrollpunkt zu setzen, " +"oder klicken Sie mit rechts zum Beenden." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Ziehen Sie mit der rechten Maustaste, um den letzten Kontrollpunkt zu " +"setzen, oder klicken Sie mit links zum Beenden." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linie" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Zeichnet Linien" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Ziehen Sie, um zu zeichnen." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polygon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Zeichnet Polygone" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Ziehen Sie, um die erste Linie zu zeichnen." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Ziehen Sie mit der linken Maustaste eine weitere Linie oder klicken Sie mit " +"rechts zum Abschließen." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Ziehen Sie mit der rechten Maustaste eine weitere Linie oder klicken Sie mit " +"links zum Abschließen." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Linienpfad" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Zeichnet miteinander verbundene Linien" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Zeichnet Ellipsen und Kreise" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rechteck" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Zeichnet Rechtecke und Quadrate" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Abgerundetes Rechteck" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Zeichnet Rechtecke und Quadrate mit abgerundeten Ecken" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Ziehen Sie mit der linken Maustaste, um eine Auswahl zu erstellen." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Ziehen Sie mit der linken Maustaste, um die Auswahl zu verschieben." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" +"Ziehen Sie mit der linken Maustaste, um die Größe der Auswahl zu ändern." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Auswahl: Undurchsichtig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Auswahl: Transparent" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Auswahl: Transparenzfarbe" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Auswahl: ähnliche Transparenzfarbe" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Auswahl (elliptisch)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Erzeugt eine elliptische oder kreisförmige Auswahl" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Auswahl (Freihand)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Erstellt eine Freihand-Auswahl" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Auswahl (rechteckig)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Erstellt eine rechteckige Auswahl" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Auswahl: Verschieben" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Verschmieren" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Schreibt Text" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: letztes Zeichen löschen" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Text: Löschen" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Text: Neue Zeile" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: Schreiben" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Ziehen Sie mit der linken Maustaste, um ein Textfeld zu erstellen." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Ziehen Sie mit der linken Maustaste, um das Textfeld zu verschieben." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Text: Feld verschieben" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Ziehen Sie mit der linken Maustaste, um das Textfeld zu verändern." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" +"Klicken Sie mit der linken Maustaste, um die Cursor-Position zu ändern." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Text: undurchsichtiger Hintergrund" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: transparenter Hintergrund" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Text: Farben tauschen" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Text: Vordergrundfarbe" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Text: Hintergrundfarbe" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Text: Schriftart" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Text: Schriftgröße" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Text: Fett" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: Kursiv" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Text: Unterstrichen" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Text: Durchgestrichen" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Bildausschnitt – Vorschaubild" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1 % – Vorschaubild" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        To configure it, click on the cube.

        " +msgstr "" +"

        Farbähnlichkeit beschreibt, wie ähnlich sich die Farben " +"benachbarte Pixel sein müssen, damit die Pixel für Maloperationen als gleich " +"behandelt werden.

        Wenn Sie hier etwas anderes als Exakte " +"Übereinstimmung angeben, können Sie sehr effektiv mit farbgerasterten " +"Bildern arbeiten, so wie mit der „magischen Wand“ einiger Malprogramme.

        Diese Funktion ist anwendbar für:

        • Auswahlen: Im " +"Transparenzmodus werden alle Farben in der Auswahl, die der " +"Hintergrundfarbe ähnlich sind, transparent gemacht.
        • Farbeimer: Für Bereiche mit ähnlichen – aber nicht " +"identischen – Farben sorgt ein höherer Wert dafür, dass größere Bereiche mit " +"Farbe gefüllt werden.
        • Farbradierer: Alle Pixel, die der " +"Vordergrundfarbe ähnlich sind, werden mit der Hintergrundfarbe " +"übermalt.
        • Automatisch Zuschneiden und Internen Rand " +"beschneiden: Bei Rändern mit ähnlichen – aber nicht identischen – " +"Farben, wird durch höhere Werte mit höherer Wahrscheinlichkeit der gesamte " +"Randbereich zugeschnitten.

        Grundsätzlich bedeuten größere Werte, " +"dass ein größerer Pixelbereich für Maloperationen als farbähnlich " +"betrachtet und somit wie Pixel mit identischen Farben behandelt wird. Falls " +"eine Maloperation Pixelbereiche ausschließt, die Sie als ähnlich genug " +"empfinden, so sollten Sie den Wert erhöhen, um sie in die Aktion mit " +"einzuschließen.

        Ebenso sollten Sie den Wert verringern, wenn die " +"Maloperation zu viele Pixel einschließt (z. B. wenn der Farbeimer zu " +"viele Pixel mit Farbe füllt).

        Um dies einzurichten, klicken Sie auf " +"den Würfel.

        " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        " +msgstr "" +"

        Farbähnlichkeit beschreibt, wie ähnlich sich die Farben " +"benachbarte Pixel sein müssen, damit die Pixel für Maloperationen als gleich " +"behandelt werden.

        Wenn Sie hier etwas anderes als Exakte " +"Übereinstimmung angeben, können Sie sehr effektiv mit farbgerasterten " +"Bildern arbeiten, so wie mit der „magischen Wand“ einiger Malprogramme.

        Diese Funktion ist anwendbar für:

        • Auswahlen: Im " +"Transparenzmodus werden alle Farben in der Auswahl, die der " +"Hintergrundfarbe ähnlich sind, transparent gemacht.
        • Farbeimer: Für Bereiche mit ähnlichen – aber nicht " +"identischen – Farben sorgt ein höherer Wert dafür, dass größere Bereiche mit " +"Farbe gefüllt werden.
        • Farbradierer: Alle Pixel, die der " +"Vordergrundfarbe ähnlich sind, werden mit der Hintergrundfarbe " +"übermalt.
        • Automatisch Zuschneiden und Internen Rand " +"beschneiden: Bei Rändern mit ähnlichen – aber nicht identischen – " +"Farben, wird durch höhere Werte mit höherer Wahrscheinlichkeit der gesamte " +"Randbereich zugeschnitten.

        Grundsätzlich bedeuten größere Werte, " +"dass ein größerer Pixelbereich für Maloperationen als farbähnlich " +"betrachtet und somit wie Pixel mit identischen Farben behandelt wird. Falls " +"eine Maloperation Pixelbereiche ausschließt, die Sie als ähnlich genug " +"empfinden, so sollten Sie den Wert erhöhen, um sie in die Aktion mit " +"einzuschließen.

        Ebenso sollten Sie den Wert verringern, wenn die " +"Maloperation zu viele Pixel einschließt (z. B. wenn der Farbeimer zu " +"viele Pixel mit Farbe füllt).

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

        Color Similarity: %1%

        Click to configure.

        " +msgstr "" +"

        Farbähnlichkeit: %1 %

        Hier klicken für " +"Einstellungen

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

        Color Similarity: Exact Match

        Click to configure." +msgstr "" +"

        Farbähnlichkeit: Exakte Übereinstimmung

        Hier " +"klicken für Einstellungen

        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Helligkeit:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Zurücksetzen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "&Kontrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gammawert:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Zu&rücksetzen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Ka&näle:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Alle" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rot" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Grün" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blau" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Alle &Werte zurücksetzen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Einstellungen" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Menge:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "A&ktivieren" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Farben" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tonwert:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Sättigung:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "Hell&wert:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rot" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Grün" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blau" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Alle" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanäle" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "Schwarzweiß" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Schwarz/Weiß (mit &Raster)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "&256 Farben" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "2&56 Farben (mit Raster)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "2&4-Bit Farbe" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduzieren auf" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Körnung:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

        To change the color of a color cell itself, double-click on it.

        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

        " +msgstr "" +"

        Zum Festlegen der Vordergrundfarbe, mit der die Werkzeuge malen, " +"klicken Sie mit der linken Maustaste auf ein Farbfeld. Um die " +"Hintergrundfarbe festzulegen, klicken Sie stattdessen mit der rechten " +"Maustaste.

        Um die Farbe einer Farbzelle selbst zu ändern, klicken Sie " +"doppelt darauf.

        Sie können die Farben solcher Farbzellen auch " +"vertauschen, indem Sie die Farbfelder Ziehen und Ablegen. Wenn Sie beim " +"Ziehen und Ablegen mit der Maus die Strg-Taste gedrückt halten, wird " +"die Zielfarbe überschrieben anstatt die Farbe mit dem Quellfeld zu tauschen." +"

        " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Umwandeln &in:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Qualität:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Vorschau" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Schwarzweiß" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Schwarz/Weiß (mit Raster)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Farben" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Farben (mit Raster)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-Bit Farbe" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Bild&position" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Mitte der Seite" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Obere &linke Ecke der Seite" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparent" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint-Voreinstellung" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Farben: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Farben: %1 [geändert]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1×1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Kreis" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Quadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Schrägstrich (/)" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Schrägstrich (\\)" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Keine Füllung" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Mit Hintergrundfarbe füllen" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Mit Vordergrundfarbe füllen" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Deckend" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Es gibt bereits eine Datei namens „%1“.\n" +#~ "Soll sie überschrieben werden?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Es gibt bereits eine Farbpalette „%1“.\n" +#~ "Soll sie überschrieben werden?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Ein Vergrößerungsfaktor, der kein Vielfaches von 100 % ist, führt zu " +#~ "ungenauer Bearbeitung und Darstellungsfehlern.\n" +#~ "Möchten Sie den Vergrößerungsfaktor wirklich auf %1 % setzen?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Vergrößerungsfaktor auf %1 % setzen" + +#~ msgid "None" +#~ msgstr "Keine" + +#~ msgid "" +#~ "

        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

        Are you sure want to resize the image?

        " +#~ msgstr "" +#~ "

        Die Größenänderung auf %1x%2 kann sehr viel Speicherplatz " +#~ "verbrauchen. Dies kann dazu führen, dass das System sehr langsam " +#~ "reagiert, und es kann zu weiteren Problemen mit anderen Programmen führen." +#~ "

        Sind Sie sicher, dass Sie die Größe ändern möchten?

        " + +#~ msgid "Overwrite" +#~ msgstr "Überschreiben" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "„%1“ lässt sich nicht öffnen – unbekannter MIME-Typ." + +#~ msgid "Save Preview" +#~ msgstr "Vorschau speichern" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Für Unterstützung und Hilfe besuchen Sie bitte die Webseite." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Es wurde kein Modul gefunden, das einen Scanner-Dialog bereitstellt.\n" +#~ "Normalerweise bedeutet das, das ein Paket mit dem Modul „KSaneplugin“ " +#~ "nicht installiert ist." + +#~ msgid "No Scanning Support" +#~ msgstr "Keine Scan-Unterstützung" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Es ist keine Unterstützung für Scannen installiert." + +#~ msgid "" +#~ "

        KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

        This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

        " +#~ msgstr "" +#~ "

        Der Inhalt der Zwischenablage kann nicht eingefügt werden, da die " +#~ "Daten unerwartet verschwunden sind.

        Das kann passieren, wenn die " +#~ "für den Inhalt der Zwischenablage zuständige Anwendung geschlossen wurde." +#~ "

        " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Aufnehmen von &Bildschirmfotos" + +# Informationen zu Systemeinstellungen etwas veraltet. Vllt besser ganz entfernen? +#~ msgid "" +#~ "

        To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

        You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

        Alternatively, you may try the application KSnapshot.

        " +#~ msgstr "" +#~ "

        Um ein Bildschirmfoto aufzunehmen, drücken Sie %1. Das Foto " +#~ "wird dann in der Zwischenablage gespeichert, sodass Sie es in KolourPaint " +#~ "einfügen können.

        Sie können den Kurzbefehl für Bildschirmfoto " +#~ "(Arbeitsfläche) im Systemeinstellungen-Modul Tastenkürzel (im Menüpunkt „Regionaleinstellungen && " +#~ "Zugangshilfen“) einstellen.

        Sie können auch das Programm KSnapshot ausprobieren.

        " + +#~ msgid "" +#~ "

        You do not appear to be running KDE.

        Once you have loaded KDE:" +#~ "

        To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

        Alternatively, you may try the " +#~ "application KSnapshot.

        " +#~ msgstr "" +#~ "

        Sie haben KDE offenbar nicht gestartet.

        Sobald Sie das getan " +#~ "haben:

        Um ein Bildschirmfoto aufzunehmen, drücken Sie " +#~ "%1. Das Foto wird dann in der Zwischenablage gespeichert, sodass Sie " +#~ "es in KolourPaint einfügen können.

        Sie können auch das " +#~ "Programm KSnapshot ausprobieren.

        " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Als Hintergrundbild (&zentriert)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Als Hintergrundbild (&gekachelt)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Sie müssen das Bild lokal speichern, bevor Sie es als Hintergrundbild " +#~ "verwenden können.\n" +#~ "Möchten Sie es nun speichern?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Sie müssen das Bild speichern, bevor Sie es als Hintergrundbild verwenden " +#~ "können.\n" +#~ "Möchten Sie es nun speichern?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Das Hintergrundbild kann nicht geändert werden." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Auswahl spiegeln" + +#~ msgid "Flip Image" +#~ msgstr "Bild spiegeln" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Senkrecht (auf den Kopf)" + +#~ msgid "&Horizontal" +#~ msgstr "&Waagerecht" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Verlust von Farb- und Transparenzinformationen" + +#~ msgid "Loss of Color Information" +#~ msgstr "Verlust von Farbinformationen" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Verlust von Transparenzinformationen" + +#~ msgid "" +#~ "

        KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

        To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

        " +#~ msgstr "" +#~ "

        KolourPaint unterstützt die derzeitige Farbtiefe von %1 Bit nicht. " +#~ "KolourPaint wird nun starten, könnte aber unzuverlässig sein.

        Um " +#~ "dieses Problem zu vermeiden, sollten Sie die Farbtiefe auf 24 Bit " +#~ "einstellen und KolourPaint erneut starten.

        " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Bildschirmmodus nicht unterstützt" + +#~ msgid "" +#~ "

        This effect does not support the current screen depth of %1bpp.

        To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Dieser Effekt unterstützt die derzeitige Farbtiefe von %1 Bit " +#~ "nicht.

        Um dieses Problem zu vermeiden, sollten Sie die Farbtiefe " +#~ "auf 24 Bit einstellen und KolourPaint erneut starten.

        " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Scannen ist nicht möglich – ungenügend Grafikspeicher." + +#~ msgid "Cannot Scan" +#~ msgstr "Scannen nicht möglich" + +#~ msgid "&Flip..." +#~ msgstr "&Spiegeln ..." + +#~ msgid "" +#~ "

        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

        If you save this image, any color loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


        It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

        If you save " +#~ "this image, this loss of translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Das Bild, das einfügt werden soll, kann mehr Farben enthalten als " +#~ "die aktuell eingestellte Farbtiefe des Bildschirms. Um das Bild anzeigen " +#~ "zu können, müssen Farbinformationen gelöscht werden.

        Wenn Sie " +#~ "das Bild speichern, werden diese Farbinformationen endgültig entfernt.

        Versuchen Sie, Ihre Bildschirmfarbtiefe auf mindestens %1 bpp zu " +#~ "erhöhen und dann KolourPaint neu zu starten.


        Das Bild enthält " +#~ "auch Transparenzinformationen, die nicht vollständig unterstützt werden. " +#~ "Die Transparenzdaten werden mit einer 1-Bit-Transparenzmaske angenähert.

        Wenn Sie das Bild speichern, werden diese " +#~ "Transparenzinformationen endgültig entfernt.

        " + +#~ msgid "" +#~ "

        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

        If you save this image, any color loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Das Bild, das einfügt werden soll, kann mehr Farben enthalten als " +#~ "die aktuell eingestellte Farbtiefe des Bildschirms. Um das Bild anzeigen " +#~ "zu können, müssen Farbinformationen gelöscht werden.

        Wenn Sie " +#~ "das Bild speichern, werden diese Farbinformationen endgültig entfernt.

        Versuchen Sie, Ihre Bildschirmfarbtiefe auf mindestens %1 bpp zu " +#~ "erhöhen und dann KolourPaint neu zu starten.

        " + +#~ msgid "" +#~ "

        The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Das Bild, das eingefügt werden soll, enthält " +#~ "Transparenzinformationen, die nicht vollständig unterstützt werden. Die " +#~ "Transparenzdaten werden mit einer 1-Bit-Transparenzmaske angenähert.

        Wenn Sie das Bild speichern, werden diese " +#~ "Transparenzinformationen endgültig entfernt.

        " + +#~ msgid "

        There is nothing in the clipboard to paste.

        " +#~ msgstr "

        Die Zwischenablage ist leer.

        " + +#~ msgid "" +#~ "

        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

        If you save this image, any color loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


        It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

        If you save this " +#~ "image, this loss of translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Das Bild „%1“ kann mehr Farben enthalten als die aktuell " +#~ "eingestellte Farbtiefe des Bildschirms. Um das Bild anzeigen zu können, " +#~ "müssen Farbinformationen gelöscht werden.

        Wenn Sie das Bild " +#~ "speichern, werden diese Farbinformationen endgültig entfernt.

        Versuchen Sie, Ihre Bildschirmfarbtiefe auf mindestens %2 bpp zu " +#~ "erhöhen und dann KolourPaint neu zu starten.


        Das Bild enthält " +#~ "auch Transparenzinformationen, die nicht vollständig unterstützt werden. " +#~ "Die Transparenzdaten werden mit einer 1-Bit-Transparenzmaske angenähert.

        Wenn Sie das Bild speichern, werden diese " +#~ "Transparenzinformationen endgültig entfernt.

        " + +#~ msgid "" +#~ "

        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

        If you save this image, any color loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Das Bild „%1“ kann mehr Farben enthalten als die aktuell " +#~ "eingestellte Farbtiefe des Bildschirms. Um das Bild anzeigen zu können, " +#~ "müssen Farbinformationen gelöscht werden.

        Wenn Sie das Bild " +#~ "speichern, werden diese Farbinformationen endgültig entfernt.

        Versuchen Sie, Ihre Bildschirmfarbtiefe auf mindestens %2 bpp zu " +#~ "erhöhen und dann KolourPaint neu zu starten.

        " + +#~ msgid "" +#~ "

        The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Das Bild „%1“ enthält Transparenzinformationen, die nicht " +#~ "vollständig unterstützt werden. Die Transparenzdaten werden mit einer 1-" +#~ "Bit-Transparenzmaske angenähert.

        Wenn Sie das Bild speichern, " +#~ "werden diese Transparenzinformationen endgültig entfernt.

        " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "„%1“ lässt sich nicht öffnen – ungenügend Speicher." + +#~ msgid "Scanning Support" +#~ msgstr "Unterstützung für Scannen" + +#~ msgid "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" +#~ msgstr "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" + +#~ msgid "Selection: Transparency" +#~ msgstr "Auswahl: Transparenz" + +#~ msgid "Tone Enhance" +#~ msgstr "Tonwertverbesserung" diff --git a/po/el/kolourpaint.po b/po/el/kolourpaint.po new file mode 100644 index 0000000..29aea20 --- /dev/null +++ b/po/el/kolourpaint.po @@ -0,0 +1,3041 @@ +# translation of kolourpaint.po to greek +# +# Spiros Georgaras , 2005, 2007. +# Toussis Manolis , 2005, 2007, 2008, 2009. +# Dimitrios Glentadakis , 2011, 2012. +# Stelios , 2011, 2012, 2017, 2019, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-06 10:36+0300\n" +"Last-Translator: Stelios \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Σπύρος Γεωργαράς,Τούσης Μανώλης" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "sng@hellug.gr,manolis@koppermind.homelinux.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Ισορροπία" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Εξομάλυνση" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Όξυνση" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Καθαρισμός" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Επιλογή: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Εμβάθυνση" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Ισοπέδωση" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Μείωση σε κλίμακα του γκρι" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Απόχρωση, κορεσμός, τιμή" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Αντιστροφή χρωμάτων" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Αντιστροφή" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Μείωση σε μονόχρωμο (αμφιταλάντευση)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Μείωση σε μονόχρωμο" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Μείωση σε 256 χρώματα (αμφιταλάντευση)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Μείωση σε 256 χρώματα" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Ισοσταθμιστής ιστογράμματος" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Αναστροφή" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Αναστροφή οριζόντια και κατακόρυφα" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Αναστροφή οριζόντια" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Αναστροφή κατακόρυφα" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Κείμενο: Πλαίσιο αλλαγής μεγέθους" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Επιλογή: Κλιμάκωση" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Επιλογή: Ομαλή κλιμάκωση" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Αλλαγή μεγέθους" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Κλιμάκωση" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Ομαλή κλιμάκωση" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Περιστροφή" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Λόξυνση" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "Αναίρεσ&η: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "Α&ναίρεση" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Επαναφορά: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Επαναφορά" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Αναίρεση: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Αναίρεση" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Επαναφορά: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Επαναφορά" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 επιπλέον αντικείμενο" +msgstr[1] "%1 επιπλέον αντικείμενα" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Επιλογέας χρωμάτων" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Γέμισμα" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Περισσότερα εφέ εικόνας (Επιλογή)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Περισσότερα εφέ εικόνας" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Εφέ:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Μείωση χρωμάτων" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Εξομάλυνση & όξυνση" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Ιδιότητες εγγράφου" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Κουκκίδες α&νά ίντσα (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Μη καθορισμένο" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Οριζόντια:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Κατακόρυφα:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

        " +msgstr "" +"

        Κουκκίδες ανά ίντσα (DPI) Το (DPI) καθορίζει τον αριθμό των " +"εικονοστοιχείων της εικόνας που θα εκτυπωθεί σε επιφάνεια μιας ίντσας " +"(2.54cm).

        Όσο μεγαλύτερα είναι τα DPI της εικόνας, τόσο μικρότερη η " +"εκτυπωμένη εικόνα. Σημειώστε ότι ο εκτυπωτής σας είναι απίθανο να παράγει " +"εκτυπώσεις υψηλής ποιότητας αν αυξήσετε την τιμή περισσότερο από 300 ή 600 " +"DPI, ανάλογα με τον εκτυπωτή.

        Αν επιθυμείτε την εκτύπωση της εικόνας " +"στο μέγεθος εμφάνισής της στην οθόνη, ορίστε την τιμή DPI της εικόνας " +"παρόμοια με εκείνη της οθόνης.

        Αν κάποια από τις τιμές DPI είναι Μη " +"ορισμένη, η εικόνα θα εκτυπωθεί με μέγεθος ίδιο με εκείνο που " +"εμφανίζεται στην οθόνη.

        Δεν υποστηρίζουν όλοι οι τύποι αρχειοθέτησης " +"εικόνων τις τιμές DPI. Αν ο τύπος αρχειοθέτησης δεν υποστηρίζει ανάλυση DPI " +"δεν θα αποθηκευτούν.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Με&τατόπιση" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

        The Offset is the relative position where this image should be " +"placed, compared to other images.

        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

        " +msgstr "" +"

        Η Μετατόπιση είναι η σχετική θέση της τοποθέτησης της εικόνας, " +"σε σχέση με τις άλλες εικόνες.

        Δεν υποστηρίζουν όλοι οι τύποι " +"αρχειοθέτησης εικόνων το χαρακτηριστικό Μετατόπιση. Αν ο τύπος " +"αρχειοθέτησης δεν το υποστηρίζει, οι τιμές που ορίζονται εδώ δεν θα " +"αποθηκευτούν.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Πεδία &κειμένου" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Προσθήκη γραμμής" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Διαγραφή γραμμής" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Επαναφορά" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

        " +msgstr "" +"

        Τα Πεδία κειμένου προσφέρουν επιπλέον πληροφορίες σχετικά με " +"την εικόνα. Πρόκειται για μια περιοχή σχολίων στην οποία μπορείτε να γράψετε " +"οποιοδήποτε κείμενο.

        Ωστόσο, αυτό εξαρτάται από τον τύπο αρχειοθέτησης " +"της εικόνας, έτσι τα πεδία θα μπορούσαν θεωρητικά να είναι δεδομένα " +"ερμηνευμένα από τον υπολογιστή - τα οποία δεν πρέπει να τροποποιήσετε - αλλά " +"αυτό είναι απίθανο.

        Δεν υποστηρίζουν όλοι οι τύποι αρχειοθέτησης " +"εικόνων τα Πεδία κειμένου. Αν ο τύπος αρχειοθέτησης για την " +"αποθήκευση δεν τα υποστηρίζει, αυτά δεν θα αποθηκευτούν.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Κλειδί" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Τιμή" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Η τιμή κειμένου \"%1\" στη γραμμή %2 απαιτεί ένα κλειδί." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Όλα τα κλειδιά κειμένου πρέπει να είναι μοναδικά. Το κλειδί κειμένου \"%1\" 
στις γραμμές %2 και %3 είναι όμοια." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Μη έγκυρα πεδία κειμένου" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Διαστάσεις" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Αρχικό:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Προεπισκόπηση" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Ε&νημέρωση" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Αλλαγή μεγέθους / κλιμάκωση" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Ε&νέργεια σε:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Ολόκληρη εικόνα" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Επιλογή" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Πλαίσιο κειμένου" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Λειτουργία" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
        " +msgstr "" +"
        • Αλλαγή μεγέθους: Το μέγεθος της εικόνας θα αυξηθεί " +"δημιουργώντας νέες περιοχές στα δεξιό και/ή στο κάτω μέρος (γεμισμένο με το " +"χρώμα φόντου) ή θα μειωθεί με αποκοπή στο δεξιό και/ή στο κάτω μέρος της " +"εικόνας.
        • Κλιμάκωση: Η εικόνα θα μεγεθυνθεί με αντιγραφή " +"εικονοστοιχείων ή θα σμικρυνθεί με την απόρριψη εικονοστοιχείων.
        • Ομαλή κλιμάκωση: Αυτό είναι το ίδιο με την Κλιμάκωση " +"εκτός από το ότι αναμιγνύει τα γειτονικά εικονοστοιχεία για την παραγωγή " +"μιας πιο ομαλής εικόνας.
        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Αλλαγή μεγέθους" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "Κλιμάκω&ση" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Ο&μαλή κλιμάκωση" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Πλάτος:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Ύψος:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Νέο:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Ποσοστό:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Δι&ατήρηση αναλογίας διαστάσεων" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to resize the text box?

        " +msgstr "" +"

        Η αλλαγή μεγέθους του πλαισίου κειμένου σε %1x%2 μπορεί να χρειαστεί " +"σημαντική ποσότητα μνήμης. Αυτό μπορεί να προκαλέσει προβλήματα απόκρισης " +"του συστήματος και προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε σίγουροι " +"ότι επιθυμείτε την αλλαγή μεγέθους του πλαισίου κειμένου;

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Αλλαγή μεγέθους του πλαισίου κειμένου;" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Α&λλαγή μεγέθους του πλαισίου κειμένου" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to resize the image?

        " +msgstr "" +"

        Η αλλαγή μεγέθους της εικόνας σε %1x%2 μπορεί να χρειαστεί σημαντική " +"ποσότητα μνήμης. Αυτό μπορεί να προκαλέσει προβλήματα απόκρισης του " +"συστήματος και προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε σίγουροι ότι " +"επιθυμείτε την αλλαγή μεγέθους της εικόνας;

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Αλλαγή μεγέθους της εικόνας;" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Αλλαγή &μεγέθους εικόνας" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to scale the image?

        " +msgstr "" +"

        Η κλιμάκωση της εικόνας σε %1x%2 μπορεί να χρειαστεί σημαντική " +"ποσότητα μνήμης. Αυτό μπορεί να προκαλέσει προβλήματα απόκρισης του " +"συστήματος και προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε σίγουροι ότι " +"επιθυμείτε την κλιμάκωση της εικόνας;

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Κλιμάκωση της εικόνας;" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&Κλιμάκωση εικόνας" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to scale the selection?

        " +msgstr "" +"

        Η κλιμάκωση της επιλογής σε %1x%2 μπορεί να χρειαστεί σημαντική " +"ποσότητα μνήμης. Αυτό μπορεί να προκαλέσει προβλήματα απόκρισης του " +"συστήματος και προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε σίγουροι ότι " +"επιθυμείτε την κλιμάκωση της επιλογής;

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Κλιμάκωση της επιλογής;" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Κ&λιμάκωση επιλογής" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the image?" +msgstr "" +"

        Η ομαλή κλιμάκωση της εικόνας σε %1x%2 μπορεί να χρειαστεί σημαντική " +"ποσότητα μνήμης. Αυτό μπορεί να προκαλέσει προβλήματα απόκρισης του " +"συστήματος και προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε σίγουροι ότι " +"επιθυμείτε την ομαλή κλιμάκωση της εικόνας;

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Ομαλή κλιμάκωση της εικόνας;" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Ομαλή κλιμάκ&ωση εικόνας" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the selection?" +"

        " +msgstr "" +"

        Η ομαλή κλιμάκωση της επιλογής σε %1x%2 μπορεί να χρειαστεί σημαντική " +"ποσότητα μνήμης. Αυτό μπορεί να προκαλέσει προβλήματα απόκρισης του " +"συστήματος και προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε σίγουροι ότι " +"επιθυμείτε την ομαλή κλιμάκωση της επιλογής;

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Ομαλή κλιμάκωση της επιλογής;" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Ομαλή κλιμάκω&ση επιλογής" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Περιστροφή επιλογής" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Περιστροφή εικόνας" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Μετά την περιστροφή:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Κατεύθυνση" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Αριστερόστροφα" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Δεξιόστροφα" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Γωνία" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &μοίρες" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 μ&οίρες" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 μοί&ρες" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Προσαρμοσμένο:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "μοίρες" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to rotate the selection?

        " +msgstr "" +"

        Η περιστροφή της επιλογής σε %1x%2 ίσως απαιτήσει σημαντική ποσότητα " +"μνήμης. Αυτό ίσως μειώσει την απόκριση του συστήματος και προκαλέσει " +"προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε βέβαιοι ότι επιθυμείτε την " +"περιστροφή της επιλογής;

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Περιστροφή της επιλογής;" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Περιστ&ροφή επιλογής" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to rotate the image?

        " +msgstr "" +"

        Η περιστροφή της εικόνας σε %1x%2 ίσως απαιτήσει σημαντική ποσότητα " +"μνήμης. Αυτό ίσως μειώσει την απόκριση του συστήματος και προκαλέσει " +"προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε βέβαιοι ότι επιθυμείτε την " +"περιστροφή της εικόνας;

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Περιστροφή της εικόνας;" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Περιστρο&φή εικόνας" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Λόξυνση επιλογής" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Λόξυνση εικόνας" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Μετά τη λόξυνση:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Οριζόντια:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Κατακόρυφα:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to skew the selection?

        " +msgstr "" +"

        Η λόξυνση της επιλογής σε %1x%2 ίσως απαιτήσει σημαντική ποσότητα " +"μνήμης. Αυτό ίσως μειώσει την απόκριση του συστήματος και προκαλέσει " +"προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε βέβαιοι ότι επιθυμείτε τη " +"λόξυνση της επιλογής;

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Λόξυνση της επιλογής;" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&Λόξυνση επιλογής" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to skew the image?

        " +msgstr "" +"

        Η λόξυνση της εικόνας σε %1x%2 ίσως απαιτήσει σημαντική ποσότητα " +"μνήμης. Αυτό ίσως μειώσει την απόκριση του συστήματος και προκαλέσει " +"προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε βέβαιοι ότι επιθυμείτε τη " +"λόξυνση της εικόνας;

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Λόξυνση της εικόνας;" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Λό&ξυνση εικόνας" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Ομοιότητα χρώματος" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Απόσταση κύβου χρωμάτων &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Ακριβές ταίριασμα" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Τι είναι η ομοιότητα χρωμάτων;" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Αποθήκευση προεπισκόπησης" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (προσέγγ. %2%)" +msgstr[1] "%1 bytes (προσέγγ. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Αδυναμία ανοίγματος του \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Αδυναμία ανοίγματος του \"%1\" - μη υποστηριζόμενος τύπος αρχειοθέτησης " +"εικόνας.\n" +"Το αρχείο μπορεί να είναι κατεστραμμένο." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Αδυναμία αποθήκευσης της εικόνας - ανεπαρκείς πληροφορίες." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Τύπος Mime: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<κενό>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Εσωτερικό σφάλμα" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

        The %1 format may not be able to preserve all of the image's " +"color information.

        Are you sure you want to save in this format?

        " +msgstr "" +"

        Ο τύπος αποθήκευσης %1 υπάρχει περίπτωση να μην μπορεί να " +"διατηρήσει ολόκληρη την πληροφορία χρώματος της εικόνας.

        Είστε βέβαιοι " +"ότι επιθυμείτε την αποθήκευση σε αυτόν τον τύπο;

        " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Τύπος αρχειοθέτησης με απώλειες" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

        Are " +"you sure you want to save at this color depth?

        " +msgstr "" +"

        Αποθηκεύοντας την εικόνα με το χαμηλό βάθος χρώματος %1-bit μπορεί να " +"έχει ως αποτέλεσμα την απώλεια πληροφορίας χρώματος. Επίσης κάθε διαφάνεια " +"θα αφαιρεθεί.

        Είστε σίγουροι ότι επιθυμείτε την αποθήκευση σε αυτό το " +"βάθος χρώματος;

        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Χαμηλό βάθος χρώματος" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Αδυναμία αποθήκευσης της εικόνας - αδυναμία δημιουργίας προσωρινού αρχείου." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Αδυναμία αποθήκευσης ως «%1»: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Σφάλμα κατά την αποθήκευση της εικόνας" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Αδυναμία αποθήκευσης της εικόνας - αποτυχία αποστολής." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Αφαίρεση εσωτερικού &περιθωρίου" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Αφαίρεση εσωτερικού περιθωρίου" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Αυτόματη περικοπή" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Αυτόματη περικοπή" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"Το KolourPaint δεν μπορεί να αφαιρέσει το εσωτερικό περιθώριο της επιλογής " +"καθώς αυτό δεν μπορεί να εντοπιστεί." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Αδυναμία αφαίρεσης του εσωτερικού περιθωρίου" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"Το KolourPaint δεν μπορεί αυτόματα να αποκόψει την εικόνα καθώς το περιθώριό " +"της δεν μπορεί να εντοπιστεί." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Αδυναμία αυτόματης περικοπής" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Ορισμός ως εικόνα" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Επιλογή: Δημιουργία" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Πρόγραμμα ζωγραφικής από το KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Ιδρυτής του έργου" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Αρχηγός ερευνητής" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Υποστήριξη σάρωσης, υποστήριξη Alpha, τρέχων συντηρητής" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Εικονίδια" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Υποστήριξη μεθόδου εισαγωγής" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Εφέ εικόνας" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Μεταφορά στο KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Μεταφορά στο KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Ευχαριστήρια σε πολλά άτομα που βοήθησαν για να γίνει δυνατό αυτό το " +"πρόγραμμα." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Αρχεία εικόνων προς άνοιγμα, κατ' επιλογήν" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Λίστα όλων των αναγνώσιμων τύπων MIME εικόνων" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Προβολή" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Εικόνα" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Χρώματα" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Κύρια γραμμή εργαλείων" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Γραμμή εργαλείων κειμένου" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Μενού δεξί κλικ εργαλείου επιλογής" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Επεξεργασία" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Εικόνα επισκόπησης" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" +"Σύρσιμο με το αριστερό κουμπί του ποντικιού για την αλλαγή μεγέθους της " +"εικόνας." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Αλλαγή μεγέθους εικόνας: Ελευθέρωση όλων των κουμπιών του ποντικιού." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Αλλαγή μεγέθους εικόνας: Δεξί κλικ για ακύρωση." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Κείμενο" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Αδυναμία ανοίγματος της παλέτας χρωμάτων \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Αδυναμία ανοίγματος της παλέτας χρωμάτων \"%1\" - μη υποστηριζόμενος τύπος " +"αρχειοθέτησης.\n" +"Το αρχείο μπορεί να είναι κατεστραμμένο." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Αδυναμία ανοίγματος της παλέτας χρωμάτων του KDE \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Αδυναμία αποθήκευσης της παλέτας χρωμάτων ως \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Χωρίς τίτλο" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Χρήση προκαθορισμένων του KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Χρήση του KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "Ά&νοιγμα..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "&Επαναφόρτωση" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "Απο&θήκευση" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Αποθήκευση &ως..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Προσθήκη γραμμής" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Διαγραφή τελευταίας γραμμής" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Πλαίσιο χρώματος" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Η παλέτα χρωμάτων \"%1\" έχει τροποποιηθεί.\n" +"Επιθυμείτε την αποθήκευσή της;" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Η παλέτα χρωμάτων του KDE \"%1\" τροποποιήθηκε.\n" +"Επιθυμείτε την αποθήκευσή της σε ένα αρχείο;" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Η προκαθορισμένη παλέτα χρωμάτων τροποποιήθηκε.\n" +"Επιθυμείτε την αποθήκευσή της σε ένα αρχείο;" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Άνοιγμα παλέτας χρωμάτων" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Η παλέτα χρωμάτων \"%1\" τροποποιήθηκε.\n" +"Με την επαναφόρτωση θα χαθούν οι τροποποιήσεις μετά την τελευταία " +"αποθήκευση.\n" +"Είστε σίγουροι;" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Επαναφόρτωση" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Η παλέτα χρωμάτων του KDE \"%1\" τροποποιήθηκε.\n" +"Με την επαναφόρτωση θα χαθούν όλες οι τροποποιήσεις.\n" +"Είστε σίγουροι;" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Η προκαθορισμένη παλέτα χρωμάτων τροποποιήθηκε.\n" +"Με την επαναφόρτωση θα χαθούν όλες οι τροποποιήσεις.\n" +"Είστε σίγουροι;" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Αποθήκευση παλέτας χρωμάτων ως" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Επικόλληση σε &νέο παράθυρο" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Διαγραφή επιλογής" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "Α&ντιγραφή σε αρχείο..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Επικόλληση &από αρχείο..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Κείμενο: Δημιουργία πλαισίου" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Κείμενο: Επικόλληση" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"Το KolourPaint δεν μπορεί να επικολλήσει τα περιεχόμενα του προχείρου " +"γιατί αυτό έχει άγνωστο τύπο." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Αδυναμία επικόλλησης" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Κείμενο: Διαγραφή πλαισίου" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Επιλογή: Διαγραφή" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Κείμενο: Τέλος" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Επιλογή: Αναίρεση επιλογής" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Αντιγραφή σε αρχείο" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Επικόλληση από αρχείο" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "Ε&ξαγωγή..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Σάρωση..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Ανάκτηση στιγμιότυπου οθόνης" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Ιδιότητες" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&Επαναφόρτωση" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Όλα τα υποστηριζόμενα αρχεία (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Άνοιγμα εικόνας" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Αποτυχία ανοίγματος του παραθύρου διαλόγου του σαρωτή." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Αποτυχία σάρωσης" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Καθυστέρηση στιγμιότυπου" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " δευτερόλεπτο" +msgstr[1] " δευτερόλεπτα" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Χωρίς καθυστέρηση" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Απόκρυψη κύριου παράθυρου" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Ιδιότητες εγγράφου" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Αποθήκευση εικόνας ως" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Εξαγωγή" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Το έγγραφο \"%1\" τροποποιήθηκε.\n" +"Με την επαναφόρτωση θα χαθούν οι τροποποιήσεις μετά την τελευταία " +"αποθήκευση.\n" +"Είστε σίγουροι;" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Το έγγραφο \"%1\" τροποποιήθηκε.\n" +"Με την επαναφόρτωση θα χαθούν όλες οι τροποποιήσεις.\n" +"Είστε σίγουροι;" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Εκτύπωση εικόνας" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Πρέπει να αποθηκεύσετε την εικόνα πριν την αποστολή της.\n" +"Θέλετε να την αποθηκεύσετε;" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Το έγγραφο « %1 » έχει τροποποιηθεί.\n" +"Θέλετε να το αποθηκεύσετε;" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Α&λλαγή μεγέθους/ Κλιμάκωση..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Ο&ρισμός ως εικόνα (Περικοπή)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Αναστρο&φή (ανάποδα)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Κατοπτρισμός (οριζόντια)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Περιστροφή..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Περιστροφή &αριστερά" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Περιστροφή &δεξιά" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Λόξυνση..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Μείωση σε μο&νόχρωμο (αμφιταλάντευση)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Μείωση σε &κλίμακα του γκρι" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Αντιστροφή χρωμάτων" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Καθαρισμός" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Να γίνει εμπιστευτικό" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Περισσότερα εφέ..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Εικόνα" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "&Επιλογή" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Εμφάνιση &διαδρομής" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Σχεδίαση εξομάλυνσης" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Οικογένεια γραμματοσειράς" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Μέγεθος γραμματοσειράς" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Έντονα" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Πλάγια" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Υπογράμμιση" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Μεσογράμμιση" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Προηγούμενη επιλογή εργαλείου (Ομάδα #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Επόμενη επιλογή εργαλείου (Ομάδα #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Προηγούμενη επιλογή εργαλείου (Ομάδα #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Επόμενη επιλογή εργαλείου (Ομάδα #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Αδιαφανής &σχεδίαση" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Σχεδίαση με ομοιότητα χρώματος..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Εργαλειοθήκη" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Εμφάνιση &καννάβου" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Εμφάνιση εικόνας &επισκόπησης" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Λειτουργία &εστίασης εικόνας επισκόπησης" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Ενεργοποίηση ορ&θογωνίου εικόνας επισκόπησης" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Εστίαση" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Απόκτηση εικόνας" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Αποτυχία ανοίγματος του επιλεγμένου σαρωτή." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Πινέλο" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Ζωγραφική χρησιμοποιώντας πινέλα διαφορετικών σχημάτων και μεγεθών" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Με κλικ σχεδιάστε κουκκίδες ή με σύρσιμο σχεδιάστε γραμμές." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Διαγραφέας χρώματος" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" +"Αντικατάσταση των εικονοστοιχείων του χρώματος προσκηνίου με το χρώμα φόντου" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Με κλικ ή σύρσιμο σβήστε εικονοστοιχεία στο χρώμα του προσκηνίου." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Σβηστήρας" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Σας επιτρέπει να σβήσετε λάθη" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Κάντε κλικ ή σύρσιμο για σβήσιμο." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Ελευθέρωση όλων των κουμπιών του ποντικιού." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Πένα" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Σχεδιάζει κουκκίδες και γραμμές με ελεύθερο χέρι" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Σπρέι" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Σπρέι για γκράφιτι" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Με κλικ ή σύρσιμο δημιουργήστε γκράφιτι με σπρέι." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Δεξί κλικ για ακύρωση." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Αριστερό κλικ για ακύρωση." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Σας επιτρέπει την επιλογή ενός χρώματος από την εικόνα" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Κλικ για την επιλογή ενός χρώματος." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Γεμίζει περιοχές στην εικόνα" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Κλικ για το γέμισμα μιας περιοχής." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Εστίαση" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Μεγέθυνση και σμίκρυνση της εικόνας" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Κλικ για μεγέθυνση/σμίκρυνση ή σύρετε με το αριστερό κουμπί για την εστίαση " +"σε συγκεκριμένη περιοχή." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Καμπύλη" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Σχεδιάζει καμπύλες" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Εφαρμόστε με σύρσιμο τα σημεία τέλους και αρχής." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Αριστερό σύρσιμο για τον ορισμό του πρώτου σημείου ελέγχου ή δεξί κλικ για " +"τέλος." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Δεξί σύρσιμο για τον ορισμό του πρώτου σημείου ελέγχου ή αριστερό κλικ για " +"τέλος." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Αριστερό σύρσιμο για τον ορισμό του τελευταίου σημείου ελέγχου ή δεξί κλικ " +"για τέλος." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Δεξί σύρσιμο για τον ορισμό του τελευταίου σημείου ελέγχου ή αριστερό κλικ " +"για τέλος." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Γραμμή" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Σχεδιάζει γραμμές" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Σύρσιμο για να σχεδιάσετε." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Πολύγωνο" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Σχεδιάζει πολύγωνα" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Σύρσιμο για τον σχεδιασμό της πρώτης γραμμής." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Αριστερό σύρσιμο για άλλη γραμμή ή δεξί κλικ για τέλος." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Δεξί σύρσιμο για άλλη γραμμή ή αριστερό κλικ για τέλος." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Συνδεδεμένες γραμμές" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Σχεδιάζει συνδεδεμένες γραμμές" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Έλλειψη" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Σχεδιάζει ελλείψεις και κύκλους" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Ορθογώνιο" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Σχεδιάζει ορθογώνια και τετράγωνα" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Στρογγυλεμένο ορθογώνιο" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Σχεδιάζει ορθογώνια και τετράγωνα με στρογγυλεμένες γωνίες" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Αριστερό σύρσιμο για τη δημιουργία επιλογής." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Αριστερό σύρσιμο για τη μετακίνηση της επιλογής." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Αριστερό σύρσιμο για την κλιμάκωση της επιλογής." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Επιλογή: Αδιαφανής" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Επιλογή: Διαφανής" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Επιλογή: Χρώμα διαφάνειας" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Επιλογή: Ομοιότητα με χρώμα διαφάνειας" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Επιλογή (Ελλειπτική)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Κάνει μια ελλειπτική ή κυκλική επιλογή" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Επιλογή (Ελεύθερη μορφή)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Κάνει μια επιλογή ελεύθερης μορφής" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Επιλογή (ορθογώνιο)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Κάνει μια ορθογώνια επιλογή" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Επιλογή: Μετακίνηση" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Επάλειψη" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Γράφει κείμενο" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Κείμενο: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Κείμενο: Διαγραφή" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Κείμενο: Νέα γραμμή" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Κείμενο: Γραφή" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Αριστερό σύρσιμο για τη δημιουργία πλαισίου κειμένου." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Αριστερό σύρσιμο για τη μετακίνηση του πλαισίου κειμένου." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Κείμενο: Μετακίνηση πλαισίου" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Αριστερό σύρσιμο για την αλλαγή μεγέθους του πλαισίου κειμένου." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Αριστερό κλικ για την αλλαγή της θέσης του δρομέα." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Κείμενο: Αδιαφανές φόντο" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Κείμενο:·Διαφανές·φόντο" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Κείμενο: Εναλλαγή χρωμάτων" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Κείμενο: Χρώμα προσκηνίου" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Κείμενο:·Χρώμα·φόντου" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Κείμενο: Γραμματοσειρά" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Κείμενο:·Μέγεθος γραμματοσειράς" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Κείμενο:·Έντονα" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Κείμενο: Πλάγια" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Κείμενο: Υπογραμμισμένα" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Κείμενο: Μεσογράμμιση" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Λειτουργία μη εστίασης - εικόνα επισκόπησης" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - εικόνα επισκόπησης" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        To configure it, click on the cube.

        " +msgstr "" +"

        Η ομοιότητα χρώματος ορίζει την ομοιότητα των χρωμάτων " +"διαφορετικών εικονοστοιχείων, για λειτουργίες που τα θεωρούν όμοια.

        Αν " +"την ορίσετε σε οτιδήποτε διαφορετικό από το Ακριβές ταίριασμα, " +"μπορείτε να εργαστείτε πιο αποτελεσματικά με εικόνες και φωτογραφίες " +"αμφιταλάντευσης, άμεσα συγκρίσιμο με το χαρακτηριστικό του \"Μαγικού ραβδιού" +"\" άλλων προγραμμάτων ζωγραφικής.

        Αυτό το χαρακτηριστικό ισχύει σε :

        • Επιλογές: Σε λειτουργία Διαφάνειας, κάθε χρώμα της " +"επιλογής που είναι παρόμοιο με το χρώμα φόντου, θα γίνει διαφανές.
        • Γέμισμα χρώματος: Για περιοχές με παρόμοια - αλλά όχι " +"ταυτόσημα - χρωματιστά εικονοστοιχεία, μια υψηλότερη τιμή είναι πιθανό να " +"γεμίζει περισσότερα εικονοστοιχεία.
        • Σβήσιμο χρώματος: Κάθε " +"εικονοστοιχείο που έχει χρώμα παρόμοιο με το χρώμα προσκηνίου θα " +"αντικατασταθεί με το χρώμα φόντου.
        • Αυτόματη κοπή και " +"Αφαίρεση εσωτερικού περιθωρίου: Για περιθώρια με παρόμοια - " +"αλλά όχι ταυτόσημα - χρωματιστά εικονοστοιχεία, μια υψηλότερη τιμή είναι " +"πιθανό να κόψει όλο το περιθώριο.

        Υψηλότερες ρυθμίσεις σημαίνουν " +"ότι οι λειτουργίες χρησιμοποιούν ένα αυξημένο εύρος χρωμάτων ως επαρκώς " +"παρόμοιο με το επιλεγμένο. Γι' αυτό, θα πρέπει να αυξήσετε τη ρύθμιση " +"αν οι παραπάνω λειτουργίες δεν επηρεάζουν εικονοστοιχεία επαρκώς παρόμοια.

        Ωστόσο, αν επηρεάζουν πολύ και αλλάζουν εικονοστοιχεία με χρώμα που δεν " +"θεωρείτε ότι είναι παρόμοιο (π.χ. Αν το Γέμισμα χρώματος τροποποιεί " +"πάρα πολλά εικονοστοιχεία), θα πρέπει να μειώσετε την τιμή αυτή.

        Για " +"να τη διαμορφώσετε, κάντε κλικ στον κύβο.

        " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        " +msgstr "" +"

        Η ομοιότητα χρώματος ορίζει την ομοιότητα των χρωμάτων " +"διαφορετικών εικονοστοιχείων, για λειτουργίες που τα θεωρούν όμοια.

        Αν " +"την ορίσετε σε οτιδήποτε διαφορετικό από το Ακριβές ταίριασμα, " +"μπορείτε να εργαστείτε πιο αποτελεσματικά με εικόνες και φωτογραφίες " +"αμφιταλάντευσης, άμεσα συγκρίσιμες με το χαρακτηριστικό του \"Μαγικού ραβδιού" +"\" άλλων προγραμμάτων ζωγραφικής.

        Αυτό το χαρακτηριστικό ισχύει σε :

        • Επιλογές: Σε λειτουργία Διαφάνειας, κάθε χρώμα της " +"επιλογής που είναι παρόμοιο με το χρώμα φόντου, θα γίνει διαφανές.
        • Γέμισμα χρώματος: Για περιοχές με παρόμοια - αλλά όχι " +"ταυτόσημα - χρωματιστά εικονοστοιχεία, μια υψηλότερη τιμή είναι πιθανό να " +"γεμίσει περισσότερα εικονοστοιχεία.
        • Σβήσιμο χρώματος: Κάθε " +"εικονοστοιχείο που έχει χρώμα παρόμοιο με το χρώμα προσκηνίου θα " +"αντικατασταθεί με το χρώμα φόντου.
        • Αυτόματη κοπή και " +"Αφαίρεση εσωτερικού περιθωρίου: Για περιθώρια με παρόμοια - " +"αλλά όχι ταυτόσημα - χρωματιστά εικονοστοιχεία, μια υψηλότερη τιμή είναι " +"πιθανό να κόψει όλο το περιθώριο.

        Υψηλότερες ρυθμίσεις σημαίνουν " +"ότι οι λειτουργίες χρησιμοποιούν ένα αυξημένο εύρος χρωμάτων ως επαρκώς " +"παρόμοιο με το επιλεγμένο. Γι' αυτό, θα πρέπει να αυξήσετε την τιμή " +"αν οι παραπάνω λειτουργίες δεν επηρεάζουν εικονοστοιχεία τα οποία θεωρείτε " +"επαρκώς παρόμοια.

        Ωστόσο, αν επηρεάζουν πάρα πολύ και αλλάζουν " +"εικονοστοιχεία που δεν θεωρείτε παρόμοια (π.χ. Αν το Γέμισμα χρώματος " +"τροποποιεί πάρα πολλά εικονοστοιχεία), θα πρέπει να μειώσετε την τιμή της " +"ρύθμισης αυτής.

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

        Color Similarity: %1%

        Click to configure.

        " +msgstr "" +"

        Ομοιότητα χρώματος: %1%

        Κλικ για διαμόρφωση.

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

        Color Similarity: Exact Match

        Click to configure." +msgstr "" +"

        Ομοιότητα χρώματος: Ακριβές ταίριασμα

        Κλικ για " +"διαμόρφωση.

        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Λαμπρότητα:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Επα&ναφορά" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Α&ντίθεση:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Γάμμα:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Επαναφο&ρά" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Κ&ανάλια:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Όλα" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Κόκκινο" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Πράσινο" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Μπλε" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Επαναφορά ό&λων των τιμών" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Ρυθμίσεις" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "Ποσότητ&α:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Ε&νεργοποίηση" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Χρώματα" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Απόχρωση:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "Κορε&σμός:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Τιμή:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Κόκκινο" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Πράσινο" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Μπλε" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "Ό&λα" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Κανάλια" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Μονόχρωμο" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Μο&νόχρωμο (αμφιταλάντευση)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 χρώ&ματα" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 χρώμα&τα (αμφιταλάντευση)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bit χρώμα" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Μείωση σε" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Κοκκώδης υφή:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

        To change the color of a color cell itself, double-click on it.

        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

        " +msgstr "" +"

        Για να επιλέξετε το χρώμα προσκηνίου με το οποίο σχεδιάζουν τα " +"εργαλεία, κάντε αριστερό κλικ σε ένα κελί χρώματος. Για να επιλέξετε το " +"χρώμα φόντου, κάντε δεξί κλικ.

        Για να αλλάξετε το χρώμα ενός κελιού " +"χρώματος, κάντε διπλό κλικ πάνω του.

        Μπορείτε επίσης να εναλλάξετε το " +"χρώμα ενός κελιού με ενός άλλου με χρήση μεταφοράς και απόθεσης. Και αν " +"κρατήσετε πατημένο το πλήκτρο Ctrl, το χρώμα του κελιού προορισμού θα " +"επικαλυφθεί, αντί να γίνει εναλλαγή χρωμάτων.

        " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "&Μετατροπή σε:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Ποιό&τητα:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Προεπισκόπηση" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Μονόχρωμο" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Μονόχρωμο (αμφιταλάντευση)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 χρώματα" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 χρώματα (αμφιταλάντευση)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bit χρώμα" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Θέση ει&κόνας" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Κέντρο της σελίδας" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&Πάνω αριστερά στη σελίδα" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Διαφανές" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Προκαθορισμένα του KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Χρώματα: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Χρώματα: %1[τροποποιημένο]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Κύκλος" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Τετράγωνο" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Κάθετος" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Ανάποδη πλάγια γραμμή" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Χωρίς γέμισμα" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Γέμισμα με χρώμα φόντου" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Γέμισμα με χρώμα προσκηνίου" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Αδιαφανές" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Ένα έγγραφο με όνομα \"%1\" υπάρχει ήδη.\n" +#~ "Θέλετε να το αντικαταστήσετε;" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Μια παλέτα χρωμάτων με όνομα \"%1\" υπάρχει ήδη.\n" +#~ "Επιθυμείτε την αντικατάστασή της;" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Ο ορισμός του επιπέδου εστίασης σε μια τιμή η οποία δεν είναι πολλαπλάσιο " +#~ "του 100% έχει σαν αποτέλεσμα την μη ακριβή επεξεργασία και προβλήματα " +#~ "στην επανασχεδίαση.\n" +#~ "Επιθυμείτε πραγματικά τον ορισμό του επιπέδου εστίασης στο %1%;" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Ορισμός του επιπέδου εστίασης στο %1%" + +#~ msgid "None" +#~ msgstr "Κανένα" + +#~ msgid "" +#~ "

        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

        Are you sure want to resize the image?

        " +#~ msgstr "" +#~ "

        Η αλλαγή μεγέθους της εικόνας σε %1x%2 μπορεί να χρειαστεί " +#~ "σημαντική ποσότητα μνήμης. Αυτό μπορεί να προκαλέσει προβλήματα απόκρισης " +#~ "του συστήματος και προβλήματα πόρων σε άλλες εφαρμογές.

        Είστε " +#~ "σίγουροι ότι επιθυμείτε την αλλαγή μεγέθους;

        " + +#~ msgid "Overwrite" +#~ msgstr "Αντικατάσταση" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Αδυναμία ανοίγματος του \"%1\" - άγνωστος τύπος mime." + +#~ msgid "Save Preview" +#~ msgstr "Αποθήκευση προεπισκόπησης" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Για να βρείτε υποστήριξη, παρακαλώ επισκεφτείτε τον ιστότοπο." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Δεν βρέθηκε πρόσθετο που να παρέχει το διάλογο σαρωτή.\n" +#~ "Αυτό συνήθως σημαίνει ότι το πακέτο που παρέχει το ksaneplugin δεν είναι " +#~ "εγκατεστημένο." + +#~ msgid "No Scanning Support" +#~ msgstr "Χωρίς υποστήριξη σάρωσης" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Η υποστήριξη σάρωσης δεν είναι εγκατεστημένη." + +#~ msgid "" +#~ "

        KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

        This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

        " +#~ msgstr "" +#~ "

        Το KolourPaint δεν μπορεί να επικολλήσει τα περιεχόμενα του " +#~ "πρόχειρου καθώς τα δεδομένα εξαφανίστηκαν απροειδοποίητα.

        Αυτό " +#~ "συνήθως συμβαίνει όταν η εφαρμογή η οποία ήταν υπεύθυνη για τα " +#~ "περιεχόμενα του προχείρου έχει κλείσει.

        " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Ανάκτηση &στιγμιότυπων οθόνης" + +#~ msgid "" +#~ "

        To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

        You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

        Alternatively, you may try the application KSnapshot.

        " +#~ msgstr "" +#~ "

        Για να τραβήξετε ένα στιγμιότυπο οθόνης, πατήστε το %1. Το " +#~ "στιγμιότυπο θα τοποθετηθεί στο πρόχειρο και θα μπορείτε να το " +#~ "επικολλήσετε στο KolourPaint.

        Μπορείτε να ρυθμίσετε την συντόμευση " +#~ "Στιγμιότυπου επιφάνειας εργασίας στο άρθρωμα στις ρυθμίσεις " +#~ "συστήματος του KDE Συντομεύσεις " +#~ "πληκτρολογίου.

        Εναλλακτικά, μπορείτε να δοκιμάσετε την εφαρμογή " +#~ "KSnapshot.

        " + +#~ msgid "" +#~ "

        You do not appear to be running KDE.

        Once you have loaded KDE:" +#~ "

        To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

        Alternatively, you may try the " +#~ "application KSnapshot.

        " +#~ msgstr "" +#~ "

        Φαίνεται ότι δε χρησιμοποιείτε το KDE.

        Μόλις φορτώσετε το KDE:" +#~ "

        Για να ανακτήσετε ένα στιγμιότυπο οθόνης, πατήστε το " +#~ "%1. Το στιγμιότυπο θα τοποθετηθεί στο πρόχειρο και θα μπορείτε να το " +#~ "επικολλήσετε στο KolourPaint.

        Εναλλακτικά, μπορείτε να " +#~ "δοκιμάσετε την εφαρμογή KSnapshot.

        " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Ορισμός ως &ταπετσαρία (κεντραρισμένο)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Ορισμός ως ταπετσαρία (σε &παράθεση)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Για να οριστεί αυτή η εικόνα ως ταπετσαρία, πρέπει να αποθηκευτεί σε ένα " +#~ "τοπικό αρχείο.\n" +#~ "Επιθυμείτε την αποθήκευσή της;" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Για να οριστεί αυτή η εικόνα ως ταπετσαρία, πρέπει να αποθηκευτεί.\n" +#~ "Επιθυμείτε την αποθήκευσή της;" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Αδυναμία αλλαγής της ταπετσαρίας." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Αναστροφή επιλογής" + +#~ msgid "Flip Image" +#~ msgstr "Αναστροφή εικόνας" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Κατακόρυφα (ανάποδα)" + +#~ msgid "&Horizontal" +#~ msgstr "&Οριζόντια" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Πληροφορίες απώλειας χρώματος και ημιδιαφάνειας" + +#~ msgid "Loss of Color Information" +#~ msgstr "Πληροφορίας απώλειας χρώματος" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Πληροφορίας απώλειας ημιδιαφάνειας" + +#~ msgid "" +#~ "

        KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

        To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

        " +#~ msgstr "" +#~ "

        Το KolourPaint δεν υποστηρίζει το τρέχον βάθος χρωμάτων των %1bpp. " +#~ "Το KolourPaint θα προσπαθήσει να εκκινήσει αλλά μπορεί να μην ενεργεί " +#~ "σταθερά.

        Για να αποφύγετε το πρόβλημα αυτό, παρακαλώ τροποποιήστε " +#~ "το βάθος οθόνης σε 24bpp και εκκινήστε ξανά το KolourPaint.

        " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Μη υποστηριζόμενη λειτουργία οθόνης" + +#~ msgid "" +#~ "

        This effect does not support the current screen depth of %1bpp.

        To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Το εφέ αυτό δεν υποστηρίζει το τρέχον βάθος χρωμάτων των %1bpp.

        Για να αποφύγετε το πρόβλημα αυτό, παρακαλώ τροποποιήστε το βάθος " +#~ "οθόνης σε 24bpp και εκκινήστε ξανά το KolourPaint.

        " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Αδυναμία σάρωσης - τέλος της μνήμης γραφικών." + +#~ msgid "Cannot Scan" +#~ msgstr "Αδυναμία σάρωσης" + +#~ msgid "&Flip..." +#~ msgstr "&Αναστροφή..." + +#~ msgid "" +#~ "

        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

        If you save this image, any color loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


        It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

        If you save " +#~ "this image, this loss of translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Η εικόνα προς επικόλληση μπορεί να έχει περισσότερα χρώματα από " +#~ "την τρέχουσα λειτουργία της οθόνης. Για να εμφανιστεί η εικόνα, κάποια " +#~ "χρώματα μπορεί να τροποποιηθούν.

        Αν αποθηκεύσετε την εικόνα, " +#~ "οποιαδήποτε απώλεια χρώματος θα είναι μόνιμη.

        Για να αποφύγετε " +#~ "αυτό το φαινόμενο, δοκιμάστε να αυξήσετε το βάθος χρώματος της οθόνης " +#~ "τουλάχιστον στα %1bpp και εκκινήστε ξανά το KolourPaint.


        Επίσης η εικόνα περιέχει διαφάνεια η οποία δεν υποστηρίζεται πλήρως. " +#~ "Τα δεδομένα διαφάνειας θα προσεγγιστούν με μάσκα διαφάνειας 1bit.

        Αν αποθηκεύσετε την εικόνα αυτήν, η απώλεια της ημιδιαφάνειας θα " +#~ "είναι μόνιμη.

        " + +#~ msgid "" +#~ "

        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

        If you save this image, any color loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Η εικόνα προς επικόλληση μπορεί να έχει περισσότερα χρώματα από " +#~ "την τρέχουσα λειτουργία της οθόνης. Για να εμφανιστεί η εικόνα, κάποια " +#~ "χρώματα μπορεί να τροποποιηθούν.

        Αν αποθηκεύσετε την εικόνα, " +#~ "οποιαδήποτε απώλεια χρώματος θα είναι μόνιμη.

        Για να αποφύγετε " +#~ "αυτό το φαινόμενο, δοκιμάστε να αυξήσετε το βάθος χρώματος της οθόνης " +#~ "τουλάχιστον στα %1bpp και εκκινήστε ξανά το KolourPaint.

        " + +#~ msgid "" +#~ "

        The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Η εικόνα προς επικόλληση περιέχει διαφάνεια η οποία δεν " +#~ "υποστηρίζεται πλήρως. Τα δεδομένα διαφάνειας θα προσεγγιστούν με μάσκα " +#~ "διαφάνειας 1bit.

        Αν αποθηκεύσετε την εικόνα, οποιαδήποτε " +#~ "απώλεια χρώματος θα είναι μόνιμη.

        " + +#~ msgid "

        There is nothing in the clipboard to paste.

        " +#~ msgstr "

        Δεν υπάρχει τίποτα στο πρόχειρο για επικόλληση.

        " + +#~ msgid "" +#~ "

        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

        If you save this image, any color loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


        It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

        If you save this " +#~ "image, this loss of translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Η εικόνα \"%1\" μπορεί να έχει περισσότερα χρώματα από την " +#~ "τρέχουσα λειτουργία της οθόνης. Για να εμφανιστεί η εικόνα, κάποια " +#~ "χρώματα μπορεί να τροποποιηθούν.

        Αν αποθηκεύσετε την εικόνα, " +#~ "οποιαδήποτε απώλεια χρώματος θα είναι μόνιμη.

        Για να αποφύγετε " +#~ "αυτό το φαινόμενο, δοκιμάστε να αυξήσετε το βάθος χρώματος της οθόνης " +#~ "τουλάχιστον στα %2bpp και εκκινήστε ξανά το KolourPaint.


        Επίσης η εικόνα περιέχει διαφάνεια η οποία δεν υποστηρίζεται πλήρως. " +#~ "Τα δεδομένα διαφάνειας θα προσεγγιστούν με μάσκα διαφάνειας 1bit.

        Αν αποθηκεύσετε την εικόνα αυτήν, η απώλεια της ημιδιαφάνειας θα " +#~ "είναι μόνιμη.

        " + +#~ msgid "" +#~ "

        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

        If you save this image, any color loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        Η εικόνα \"%1\" μπορεί να έχει περισσότερα χρώματα από την " +#~ "τρέχουσα λειτουργία της οθόνης. Για να εμφανιστεί η εικόνα, κάποια " +#~ "χρώματα μπορεί να τροποποιηθούν.

        Αν αποθηκεύσετε την εικόνα, " +#~ "οποιαδήποτε απώλεια χρώματος θα είναι μόνιμη.

        Για να αποφύγετε " +#~ "αυτό το φαινόμενο, δοκιμάστε να αυξήσετε το βάθος χρώματος της οθόνης " +#~ "τουλάχιστον στα %2bpp και εκκινήστε ξανά το KolourPaint.

        " + +#~ msgid "" +#~ "

        The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " +#~ msgstr "" +#~ "

        Η εικόνα \"%1\" περιέχει διαφάνεια η οποία δεν υποστηρίζεται " +#~ "πλήρως. Τα δεδομένα διαφάνειας θα προσεγγιστούν με μάσκα διαφάνειας 1bit." +#~ "

        Αν αποθηκεύσετε την εικόνα αυτήν, η απώλεια της ημιδιαφάνειας " +#~ "θα είναι μόνιμη.

        " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Αδυναμία ανοίγματος του \"%1\" - τέλος της μνήμης γραφικών." + +#~ msgid "Scanning Support" +#~ msgstr "Υποστήριξη σάρωσης" + +#~ msgid "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" +#~ msgstr "toolToolBarHiddenMenu" diff --git a/po/en_GB/kolourpaint.po b/po/en_GB/kolourpaint.po new file mode 100644 index 0000000..eaa1179 --- /dev/null +++ b/po/en_GB/kolourpaint.po @@ -0,0 +1,3154 @@ +# translation of kolourpaint4.po to British English +# Copyright (C) 2004, 2005, 2008 Free Software Foundation, Inc. +# +# Andrew Coles , 2004, 2005, 2009. +# Malcolm Hunter , 2004, 2005, 2008. +# Steve Allewell , 2014, 2015, 2016, 2017, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-04 14:02+0100\n" +"Last-Translator: Steve Allewell \n" +"Language-Team: British English \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.04.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Andrew Coles, Steve Allewell" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "andrew_coles@yahoo.co.uk, steve.allewell@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balance" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Soften" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Sharpen" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Clear" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selection: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Emboss" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Flatten" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduce to Greyscale" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Hue, Saturation, Value" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invert Colours" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invert" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduce to Monochrome (Dithered)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduce to Monochrome" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduce to 256 Colour (Dithered)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduce to 256 Colour" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogram Equaliser" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Flip" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Flip horizontally and vertically" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Flip horizontally" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Flip vertically" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Text: Resize Box" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selection: Scale" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selection: Smooth Scale" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Resize" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Scale" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Smooth Scale" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rotate" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Skew" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Undo: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Undo" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Redo: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Redo" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Undo: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Undo" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Redo: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Redo" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 more item" +msgstr[1] "%1 more items" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Colour Picker" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Flood Fill" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "More Image Effects (Selection)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "More Image Effects" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effect:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reduce Colours" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Soften & Sharpen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Document Properties" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Dots &Per Inch (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Unspecified" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

        " +msgstr "" +"

        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "O&ffset" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

        The Offset is the relative position where this image should be " +"placed, compared to other images.

        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

        " +msgstr "" +"

        The Offset is the relative position where this image should be " +"placed, compared to other images.

        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Text Fields" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Add Row" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Delete Row" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Reset" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

        " +msgstr "" +"

        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Key" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Value" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "The text value \"%1\" on line %2 requires a key." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Invalid Text Fields" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensions" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Preview" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Update" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Resize / Scale" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Ac&t on:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Entire Image" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selection" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Text Box" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operation" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
        " +msgstr "" +"
        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"colour) or decreased by cutting it at the right and/or bottom.
        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
        • Smooth Scale: This is the same " +"as Scale except that it blends neighbouring pixels to produce a " +"smoother looking picture.
        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Resize" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Scale" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "S&mooth Scale" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Width:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Height:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&New:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Percent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Keep &aspect ratio" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to resize the text box?

        " +msgstr "" +"

        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to resize the text box?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Resize Text Box?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "R&esize Text Box" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to resize the image?

        " +msgstr "" +"

        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to resize the image?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Resize Image?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&esize Image" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to scale the image?

        " +msgstr "" +"

        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to scale the image?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Scale Image?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Scal&e Image" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to scale the selection?

        " +msgstr "" +"

        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to scale the selection?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Scale Selection?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Scal&e Selection" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the image?" +msgstr "" +"

        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the image?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Smooth Scale Image?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Smooth Scal&e Image" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the selection?" +"

        " +msgstr "" +"

        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the selection?" +"

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Smooth Scale Selection?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Smooth Scal&e Selection" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rotate Selection" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rotate Image" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "After rotate:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direction" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "A&nticlockwise" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "C&lockwise" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Angle" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 °rees" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 d&egrees" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 de&grees" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "C&ustom:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "degrees" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to rotate the selection?

        " +msgstr "" +"

        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to rotate the selection?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rotate Selection?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rotat&e Selection" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to rotate the image?

        " +msgstr "" +"

        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to rotate the image?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rotate Image?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rotat&e Image" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Skew Selection" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Skew Image" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "After skew:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to skew the selection?

        " +msgstr "" +"

        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to skew the selection?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Skew Selection?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Sk&ew Selection" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to skew the image?

        " +msgstr "" +"

        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to skew the image?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Skew Image?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Sk&ew Image" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Colour Similarity" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB Colour Cube Distance" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Exact Match" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"What is Colour Similarity?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Save Preview" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (approx. %2%)" +msgstr[1] "%1 bytes (approx. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Could not open \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Could not save image - insufficient information." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mimetype: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Internal Error" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

        The %1 format may not be able to preserve all of the image's " +"color information.

        Are you sure you want to save in this format?

        " +msgstr "" +"

        The %1 format may not be able to preserve all of the image's " +"colour information.

        Are you sure you want to save in this format?

        " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Lossy File Format" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

        Are " +"you sure you want to save at this color depth?

        " +msgstr "" +"

        Saving the image at the low colour depth of %1-bit may result in the " +"loss of colour information. Any transparency might also be removed.

        Are you sure you want to save at this colour depth?

        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Low Colour Depth" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Could not save image - unable to create temporary file." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Could not save as \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Error saving image" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Could not save image - failed to upload." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Remove Internal B&order" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Remove Internal Border" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Autocr&op" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Autocrop" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Cannot Remove Internal Border" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Cannot Autocrop" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Set as Image" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selection: Create" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Paint Program by KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Project Founder" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Chief Investigator" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Scanning Support, Alpha Support, Current Maintainer" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Icons" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "InputMethod Support" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Image Effects" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 Porting" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF 5 Porting" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Thanks to the many others who have helped to make this program possible." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Image files to open, optionally" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "List all readable image MIME types" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&View" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Image" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Colours" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Main Toolbar" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Text Toolbar" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Selection Tool RMB Menu" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Edit" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Thumbnail" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Left drag the handle to resize the image." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Resize Image: Let go of all the mouse buttons." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Resize Image: Right click to cancel." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Could not open colour palette \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Could not open colour palette \"%1\" - unsupported format.\n" +"The file may be corrupt." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Could not open KDE colour palette \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Could not save colour palette as \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Untitled" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Use KolourPaint Defaults" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Use KDE's" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Open..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Reloa&d" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Save" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Save &As..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Add Row" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Delete Last Row" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Colour Box" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"The colour palette \"%1\" has been modified.\n" +"Do you want to save it?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"The KDE colour palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"The default colour palette has been modified.\n" +"Do you want to save it to a file?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Open Colour Palette" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"The colour palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Reload" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"The KDE colour palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"The default colour palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Save Colour Palette As" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Paste in &New Window" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Delete Selection" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opy to File..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Paste &From File..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: Create Box" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: Paste" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Cannot Paste" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: Delete Box" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selection: Delete" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: Finish" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selection: Deselect" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copy to File" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Paste From File" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xport..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Scan..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Acquire Screenshot" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Properties" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Reloa&d" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "All Supported Files (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Open Image" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Failed to open scanning dialogue." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Scanning Failed" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Snapshot Delay" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " second" +msgstr[1] " seconds" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "No delay" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Hide Main Window" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Document Properties" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Save Image As" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Export" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Print Image" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"You must save this image before sending it.\n" +"Do you want to save it?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&esize / Scale..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Se&t as Image (Crop)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Flip (upside down)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Mirror (horizontally)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rotate..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rotate &Left" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rotate Righ&t" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "S&kew..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reduce to Mo&nochrome (Dithered)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduce to &Greyscale" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Invert Colours" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "C&lear" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Make Confidential" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&More Effects..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Image" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Select&ion" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Show &Path" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Draw Anti-Aliased" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Font Family" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Font Size" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Bold" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Italic" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Underline" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Strike Through" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Previous Tool Option (Group 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Next Tool Option (Group 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Previous Tool Option (Group 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Next Tool Option (Group 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Draw Opaque" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Draw With Colour Similarity..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Tool Box" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Show &Grid" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Show T&humbnail" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Zoo&med Thumbnail Mode" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Enable Thumbnail &Rectangle" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Acquire Image" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Opening the selected scanner failed." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Brush" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Draw using brushes of different shapes and sizes" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Click to draw dots or drag to draw strokes." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Colour Eraser" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Replaces pixels of the foreground colour with the background colour" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Click or drag to erase pixels of the foreground colour." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Eraser" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Lets you rub out mistakes" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Click or drag to erase." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Let go of all the mouse buttons." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pen" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Draws dots and freehand strokes" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Spraycan" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Sprays graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Click or drag to spray graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Right click to cancel." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Left click to cancel." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Lets you select a colour from the image" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Click to select a colour." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Fills regions in the image" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Click to fill a region." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Zooms in and out of the image" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "Click to zoom in/out or left drag to zoom into a specific area." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Curve" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Draws curves" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Drag out the start and end points." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "Left drag to set the first control point or right click to finish." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "Right drag to set the first control point or left click to finish." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "Left drag to set the last control point or right click to finish." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "Right drag to set the last control point or left click to finish." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Line" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Draws lines" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Drag to draw." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polygon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Draws polygons" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Drag to draw the first line." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Left drag another line or right click to finish." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Right drag another line or left click to finish." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Connected Lines" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Draws connected lines" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Draws ellipses and circles" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rectangle" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Draws rectangles and squares" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rounded Rectangle" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Draws rectangles and squares with rounded corners" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Left drag to create selection." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Left drag to move selection." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Left drag to scale selection." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selection: Opaque" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selection: Transparent" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selection: Transparency Colour" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selection: Transparency Colour Similarity" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selection (Elliptical)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Makes an elliptical or circular selection" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selection (Free-Form)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Makes a free-form selection" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selection (Rectangular)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Makes a rectangular selection" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selection: Move" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Smear" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Writes text" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Text: Delete" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Text: New Line" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: Write" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Left drag to create text box." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Left drag to move text box." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Text: Move Box" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Left drag to resize text box." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Left click to change cursor position." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Text: Opaque Background" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: Transparent Background" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Text: Swap Colours" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Text: Foreground Colour" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Text: Background Colour" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Text: Font" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Text: Font Size" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Text: Bold" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: Italic" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Text: Underline" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Text: Strike Through" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Unzoomed Mode - Thumbnail" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Thumbnail" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        To configure it, click on the cube.

        " +msgstr "" +"

        Colour Similarity is how similar the colours of " +"different pixels must be, for operations to consider them to be the same.

        If you set it to something other than Exact Match, you can work " +"more effectively with dithered images and photos, in a comparable manner to " +"the \"Magic Wand\" feature of other paint programs.

        This feature " +"applies to:

        • Selections: In Transparent mode, any " +"colour in the selection that is similar to the background colour will " +"be made transparent.
        • Flood Fill: For regions with similar - but not identical - coloured pixels, a higher setting is likely to fill " +"more pixels.
        • Colour Eraser: Any pixel whose colour is " +"similar to the foreground colour will be replaced with the background " +"colour.
        • Autocrop and Remove Internal Border: For " +"borders with similar - but not identical - coloured pixels, a higher " +"setting is more likely to crop the whole border.

        Higher settings " +"mean that operations consider an increased range of colours to be " +"sufficiently similar so as to be the same. Therefore, you should " +"increase the setting if the above operations are not affecting pixels whose " +"colours you consider to be similar enough.

        However, if they are having " +"too much of an effect and are changing pixels whose colours you do not " +"consider to be similar (e.g. if Flood Fill is changing too many " +"pixels), you should decrease this setting.

        To configure it, click on " +"the cube.

        " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        " +msgstr "" +"

        Colour Similarity is how similar the colours of " +"different pixels must be, for operations to consider them to be the same.

        If you set it to something other than Exact Match, you can work " +"more effectively with dithered images and photos, in a comparable manner to " +"the \"Magic Wand\" feature of other paint programs.

        This feature " +"applies to:

        • Selections: In Transparent mode, any " +"colour in the selection that is similar to the background colour will " +"be made transparent.
        • Flood Fill: For regions with similar - but not identical - coloured pixels, a higher setting is likely to fill " +"more pixels.
        • Colour Eraser: Any pixel whose colour is " +"similar to the foreground colour will be replaced with the background " +"colour.
        • Autocrop and Remove Internal Border: For " +"borders with similar - but not identical - coloured pixels, a higher " +"setting is more likely to crop the whole border.

        Higher settings " +"mean that operations consider an increased range of colours to be " +"sufficiently similar so as to be the same. Therefore, you should " +"increase the setting if the above operations are not affecting pixels whose " +"colours you consider to be similar enough.

        However, if they are having " +"too much of an effect and are changing pixels whose colours you do not " +"consider to be similar (e.g. if Flood Fill is changing too many " +"pixels), you should decrease this setting.

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

        Color Similarity: %1%

        Click to configure.

        " +msgstr "" +"

        Colour Similarity: %1%

        Click to configure.

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

        Color Similarity: Exact Match

        Click to configure." +msgstr "" +"

        Colour Similarity: Exact Match

        Click to configure." +"

        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Brightness:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Re&set" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Rese&t" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "C&hannels:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "All" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Red" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Green" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blue" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Reset &All Values" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Settings" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Amount:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "E&nable" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Colours" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Hue:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturation:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Value:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Red" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Green" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blue" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&All" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Channels" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monochrome" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nochrome (dithered)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 co&lour" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 colou&r (dithered)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bit colour" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduce To" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularity:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

        To change the color of a color cell itself, double-click on it.

        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

        " +msgstr "" +"

        To select the foreground colour that tools use to draw, left-click on " +"a filled-in colour cell. To select the background colour, right-click " +"instead.

        To change the colour of a colour cell itself, double-click on " +"it.

        You can also swap the colour of a filled-in cell with any other " +"cell using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's colour will be overwritten, instead of being swapped with " +"the colour of the source cell.

        " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Convert &to:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Quali&ty:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Preview" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monochrome" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monochrome (Dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Colour" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Colour (Dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bit Colour" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "I&mage Position" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centre of the page" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Top-&left of the page" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparent" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint Defaults" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Colours: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Colours: %1 [modified]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Circle" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Square" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Slash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Backslash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "No Fill" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Fill with Background Colour" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Fill with Foreground Colour" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaque" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "A colour palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Set Zoom Level to %1%" + +#~ msgid "None" +#~ msgstr "None" + +#~ msgid "" +#~ "

        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

        Are you sure want to resize the image?

        " +#~ msgstr "" +#~ "

        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

        Are you sure want to resize the image?

        " + +#~ msgid "Overwrite" +#~ msgstr "Overwrite" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Could not open \"%1\" - unknown mimetype." + +#~ msgid "Save Preview" +#~ msgstr "Save Preview" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "To obtain support, please visit the website." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." + +#~ msgid "No Scanning Support" +#~ msgstr "No Scanning Support" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Scanning support is not installed." + +#~ msgid "" +#~ "

        KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

        This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

        " +#~ msgstr "" +#~ "

        KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

        This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

        " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Acquiring &Screenshots" + +#~ msgid "" +#~ "

        To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

        You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

        Alternatively, you may try the application KSnapshot.

        " +#~ msgstr "" +#~ "

        To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

        You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

        Alternatively, you may try the application KSnapshot.

        " + +#~ msgid "" +#~ "

        You do not appear to be running KDE.

        Once you have loaded KDE:" +#~ "

        To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

        Alternatively, you may try the " +#~ "application KSnapshot.

        " +#~ msgstr "" +#~ "

        You do not appear to be running KDE.

        Once you have loaded KDE:" +#~ "

        To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

        Alternatively, you may try the " +#~ "application KSnapshot.

        " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Set as Wa&llpaper (Centred)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Set as Wallpaper (&Tiled)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Could not change wallpaper." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Flip Selection" + +#~ msgid "Flip Image" +#~ msgstr "Flip Image" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Vertical (upside-down)" + +#~ msgid "&Horizontal" +#~ msgstr "&Horizontal" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Loss of Colour and Translucency Information" + +#~ msgid "Loss of Color Information" +#~ msgstr "Loss of Colour Information" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Loss of Translucency Information" + +#~ msgid "" +#~ "

        KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

        To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

        " +#~ msgstr "" +#~ "

        KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

        To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

        " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Unsupported Screen Mode" + +#~ msgid "" +#~ "

        This effect does not support the current screen depth of %1bpp.

        To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        This effect does not support the current screen depth of %1bpp.

        To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

        " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Cannot scan - out of graphics memory." + +#~ msgid "Cannot Scan" +#~ msgstr "Cannot Scan" + +#~ msgid "&Flip..." +#~ msgstr "&Flip..." + +#~ msgid "" +#~ "

        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

        If you save this image, any color loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


        It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

        If you save " +#~ "this image, this loss of translucency will become permanent.

        " +#~ msgstr "" +#~ "

        The image to be pasted may have more colours than the current " +#~ "screen mode can support. In order to display it, some colour information " +#~ "may be removed.

        If you save this image, any colour loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


        It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

        If you save " +#~ "this image, this loss of translucency will become permanent.

        " + +#~ msgid "" +#~ "

        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

        If you save this image, any color loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        The image to be pasted may have more colours than the current " +#~ "screen mode can support. In order to display it, some colour information " +#~ "may be removed.

        If you save this image, any colour loss will " +#~ "become permanent.

        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

        " + +#~ msgid "" +#~ "

        The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " +#~ msgstr "" +#~ "

        The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " + +#~ msgid "

        There is nothing in the clipboard to paste.

        " +#~ msgstr "

        There is nothing in the clipboard to paste.

        " + +#~ msgid "" +#~ "

        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

        If you save this image, any color loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


        It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

        If you save this " +#~ "image, this loss of translucency will become permanent.

        " +#~ msgstr "" +#~ "

        The image \"%1\" may have more colours than the current screen " +#~ "mode can support. In order to display it, some colour information may be " +#~ "removed.

        If you save this image, any colour loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


        It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

        If you save this " +#~ "image, this loss of translucency will become permanent.

        " + +#~ msgid "" +#~ "

        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

        If you save this image, any color loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

        " +#~ msgstr "" +#~ "

        The image \"%1\" may have more colours than the current screen " +#~ "mode can support. In order to display it, some colour information may be " +#~ "removed.

        If you save this image, any colour loss will become " +#~ "permanent.

        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

        " + +#~ msgid "" +#~ "

        The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " +#~ msgstr "" +#~ "

        The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

        If you save this image, this loss of " +#~ "translucency will become permanent.

        " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Could not open \"%1\" - out of graphics memory." + +#~ msgid "Scanning Support" +#~ msgstr "Scanning Support" + +#~ msgid "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" +#~ msgstr "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" + +#~ msgid "Selection: Transparency" +#~ msgstr "Selection: Transparency" + +#~ msgid "You have to restart KolourPaint for these changes to take effect." +#~ msgstr "You have to restart KolourPaint for these changes to take effect." + +#~ msgid "Toolbar Settings Changed" +#~ msgstr "Toolbar Settings Changed" + +#~ msgid "Hide &Path" +#~ msgstr "Hide &Path" + +#~ msgid "Hide &Grid" +#~ msgstr "Hide &Grid" + +#~ msgid "Hide T&humbnail" +#~ msgstr "Hide T&humbnail" + +#, fuzzy +#~| msgid "Reduce Colors" +#~ msgid "Reload Colors" +#~ msgstr "Reduce Colours" + +#~ msgid "Low Screen Depth" +#~ msgstr "Low Screen Depth" + +#~ msgid "Image Contains Translucency" +#~ msgstr "Image Contains Translucency" + +#, fuzzy +#~| msgid "" +#~| "

        Color Similarity is how close colors must be in the RGB " +#~| "Color Cube to be considered the same.

        If you set it to something " +#~| "other than Exact, you can work more effectively with dithered " +#~| "images and photos.

        This feature applies to transparent selections, " +#~| "as well as the Flood Fill, Color Eraser and Autocrop tools.

        To " +#~| "configure it, double click on the cube.

        " +#~ msgid "" +#~ "

        Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

        If you set it to something " +#~ "other than Exact Match, you can work more effectively with " +#~ "dithered images and photos.

        This feature applies to transparent " +#~ "selections, as well as the Flood Fill, Color Eraser and Autocrop / Remove " +#~ "Internal Border tools.

        To configure it, click on the cube.

        " +#~ msgstr "" +#~ "

        Colour Similarity is how close colours must be in the RGB " +#~ "Colour Cube to be considered the same.

        If you set it to something " +#~ "other than Exact, you can work more effectively with dithered " +#~ "images and photos.

        This feature applies to transparent selections, " +#~ "as well as the Flood Fill, Colour Eraser and Autocrop tools.

        To " +#~ "configure it, double click on the cube.

        " + +#, fuzzy +#~| msgid "" +#~| "

        Color Similarity is how close colors must be in the RGB " +#~| "Color Cube to be considered the same.

        If you set it to something " +#~| "other than Exact, you can work more effectively with dithered " +#~| "images and photos.

        This feature applies to transparent selections, " +#~| "as well as the Flood Fill, Color Eraser and Autocrop tools.

        " +#~ msgid "" +#~ "

        Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

        If you set it to something " +#~ "other than Exact Match, you can work more effectively with " +#~ "dithered images and photos.

        This feature applies to transparent " +#~ "selections, as well as the Flood Fill, Color Eraser and Autocrop / Remove " +#~ "Internal Border tools.

        " +#~ msgstr "" +#~ "

        Colour Similarity is how close colours must be in the RGB " +#~ "Colour Cube to be considered the same.

        If you set it to something " +#~ "other than Exact, you can work more effectively with dithered " +#~ "images and photos.

        This feature applies to transparent selections, " +#~ "as well as the Flood Fill, Colour Eraser and Autocrop tools.

        " + +#, fuzzy +#~| msgid "Paste &From File..." +#~ msgid "Use File..." +#~ msgstr "Paste &From File..." + +#~ msgid "" +#~ "Support / Feedback:\n" +#~ "kolourpaint-support@lists.sourceforge.net\n" +#~ msgstr "" +#~ "Support / Feedback:\n" +#~ "kolourpaint-support@lists.sourceforge.net\n" + +#~ msgid "" +#~ "\n" +#~ "For support, or to report bugs and feature requests, please email\n" +#~ " - the free and friendly\n" +#~ "KolourPaint support service.\n" +#~ "\n" +#~ msgstr "" +#~ "\n" +#~ "For support, or to report bugs and feature requests, please email\n" +#~ " - the free and friendly\n" +#~ "KolourPaint support service.\n" +#~ "\n" + +#~ msgid "" +#~ "For support, or to report bugs and feature requests, please " +#~ "email
        kolourpaint-support@lists.sourceforge.net - the free and " +#~ "friendly
        KolourPaint support service.

        " +#~ msgstr "" +#~ "For support, or to report bugs and feature requests, please " +#~ "email
        kolourpaint-support@lists.sourceforge.net - the free and " +#~ "friendly
        KolourPaint support service.

        " + +#~ msgid "Maintainer" +#~ msgstr "Maintainer" + +#, fuzzy +#~| msgid "Circle" +#~ msgid "Michele" +#~ msgstr "Circle" + +#, fuzzy +#~ msgid "Rotate 90 Degrees Counterclockwise" +#~ msgstr "A&nticlockwise" + +#~ msgid "Color similarity: %1%" +#~ msgstr "Colour similarity: %1%" + +#~ msgid "Color similarity: Exact" +#~ msgstr "Colour similarity: Exact" + +#~ msgid "%1 bytes" +#~ msgstr "%1 bytes" + +#~ msgid "%1 bytes (%2%)" +#~ msgstr "%1 bytes (%2%)" + +#~ msgid "%1 B" +#~ msgstr "%1 B" + +#~ msgid "%1 B (%2%)" +#~ msgstr "%1 B (%2%)" + +#~ msgid "%1 B (approx. %2%)" +#~ msgstr "%1 B (approx. %2%)" + +#~ msgid "%1B" +#~ msgstr "%1B" + +#~ msgid "%1B (%2%)" +#~ msgstr "%1B (%2%)" + +#~ msgid "%1B (approx. %2%)" +#~ msgstr "%1B (approx. %2%)" + +#~ msgid "Custom Pen or Brush" +#~ msgstr "Custom Pen or Brush" diff --git a/po/eo/kolourpaint.po b/po/eo/kolourpaint.po new file mode 100644 index 0000000..2bb12ed --- /dev/null +++ b/po/eo/kolourpaint.po @@ -0,0 +1,2726 @@ +# translation of kolourpaint4.po to esperanto +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Pierre-Marie Pédrot , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2007-12-06 18:56+0100\n" +"Last-Translator: Pierre-Marie Pédrot \n" +"Language-Team: esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: KBabel 1.11.4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Pierre-Marie Pédrot" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "pedrotpmx@wanadoo.fr" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Kompensi" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Glatigi" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Akrigi" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Forviŝi" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Elektado: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Reliefigi" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Tavoligi" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Redukti al grizoskalo" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Koloro, satureco, valoro" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inversigi la kolorojn" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inversigi" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Redukti al unukoloro (punkte)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Redukti al unukoloro" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Redukti al 256 koloroj (punkte)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Redukti al 256 koloroj" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histograma egaligilo" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Renversi" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Renversi horizontale kaj vertikale" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Renversi horizontale" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Renversi vertikale" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Teksto: Regrandigi la ujon" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Elektado: Skali" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Elektado: Glate skali" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Regrandigi" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skali" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Glate skali" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Turni" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Klini" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Malfari: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Malfari" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Refari: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Refari" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Malfari: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Malfari" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Refari: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Refari" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 plia ago" +msgstr[1] "%1 pliaj agoj" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Kolora elektilo" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Plenigilo" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Pliaj bildaj efektoj (elektaĵo)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Pliaj bildaj efektoj" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efekto:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Redukti la kolorojn" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Glatigi kaj akrigi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumentaj ecoj" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Punktoj &po colo (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nespecifita" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontale:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertikale:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Deŝo&vo" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

        The Offset is the relative position where this image should be " +"placed, compared to other images.

        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Tekstaj kampoj" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Aldoni vicon" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Forigi vicon" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Restarigi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Klavo" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valoro" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "La teksta valoro \"%1\" en linio %2 bezonas klavon." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, fuzzy, kde-format +#| msgid "" +#| "All text keys must be unique. The text key \"%1\" on lines %1 and %2 are " +#| "identical." +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Ĉiuj tekstaj klavoj devas esti unika. La teksta klavo \"%1\" ĉe linioj %1 " +"kaj %2 estas samaj." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Nevalidaj tekstaj kampoj" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensioj" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Origina:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Antaŭrigardo" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Akt&ualigi" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Regrandigi / Skali" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "E&fiki sur:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Tuta bildo" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Elektaĵo" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Tekstujo" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operacio" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Regrandigi" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skali" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "&Glate skali" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Larĝo:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Alto:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nova:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Elcento:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Konservi la &aspektan rilaton" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to resize the text box?

        " +msgstr "" +"

        La regrandigo de la tekstujo al %1x%2 eble prenos egan kvanton da " +"memoro. Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn " +"problemojn ĉe alia programo.

        Ĉu vi vere volas regrandigi la tekstujon?" +"

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Ĉu regrandigi la tekstujon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "R&egrandigi la tekstujon" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to resize the image?

        " +msgstr "" +"

        La regrandigo de la bildo al %1x%2 eble prenos egan kvanton da " +"memoro. Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn " +"problemojn ĉe alia programo.

        Ĉu vi vere volas regrandigi la bildon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Ĉu regrandigi la bildon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&egrandigi la bildon" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to scale the image?

        " +msgstr "" +"

        La skalado de la bildo al %1x%2 eble prenos egan kvanton da memoro. " +"Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn problemojn " +"ĉe alia programo.

        Ĉu vi vere volas skali la bildon?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Ĉu skali la bildon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Ska&li la bildon" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to scale the selection?

        " +msgstr "" +"

        La skalado de la elektaĵo al %1x%2 eble prenos egan kvanton da " +"memoro. Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn " +"problemojn ĉe alia programo.

        Ĉu vi vere volas skali la elektaĵon?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Ĉu skali la elektaĵon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Skali la &elektaĵon" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the image?" +msgstr "" +"

        La glata skalado de la bildo al %1x%2 eble prenos egan kvanton da " +"memoro. Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn " +"problemojn ĉe alia programo.

        Ĉu vi vere volas glate skali la bildon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Ĉu glate skali la bildon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Glat&e skali la bildon" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the selection?" +"

        " +msgstr "" +"

        La glata skalado de la elektaĵo al %1x%2 eble prenos egan kvanton da " +"memoro. Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn " +"problemojn ĉe alia programo.

        Ĉu vi vere volas glate skali la elektaĵon?" +"

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Ĉu glate skali la elektaĵon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Glate skali la &elektaĵon" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Turni la elektaĵon" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Turni la bildon" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, fuzzy, kde-format +#| msgid "After Rotate:" +msgid "After rotate:" +msgstr "Post la turnado:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direkto" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "N&elaŭhorloĝe" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Laŭhorloĝe" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Angulo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 gra&doj" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 grad&oj" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &gradoj" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Propra:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "gradoj" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

        Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

        Are you sure want to rotate the selection?

        " +msgid "" +"

        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to rotate the selection?

        " +msgstr "" +"

        La turnado de la elektaĵo al %1x%2 eble prenos egan kvanton da " +"memoro. Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn " +"problemojn ĉe alia programo.

        Ĉu vi vere volas turni la elektaĵon?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Ĉu turni la elektaĵon?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Turni la &elektaĵon" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

        Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

        Are you sure want to rotate the image?

        " +msgid "" +"

        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to rotate the image?

        " +msgstr "" +"

        La turnado de la bildo al %1x%2 eble prenos egan kvanton da memoro. " +"Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn problemojn " +"ĉe alia programo.

        Ĉu vi vere volas turni la bildon?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Ĉu turni la bildon?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Turni &la bildon" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Klini la elektaĵon" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Klini la bildon" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, fuzzy, kde-format +#| msgid "After Skew:" +msgid "After skew:" +msgstr "Post la klinado:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontale:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertikale:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

        Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

        Are you sure want to skew the selection?

        " +msgid "" +"

        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to skew the selection?

        " +msgstr "" +"

        La klinado de la elektaĵo al %1x%2 eble prenos egan kvanton da " +"memoro. Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn " +"problemojn ĉe alia programo.

        Ĉu vi vere volas klini la elektaĵon?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Ĉu klini la elektaĵon?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Klini la &elektaĵon" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

        Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

        Are you sure want to skew the image?

        " +msgid "" +"

        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to skew the image?

        " +msgstr "" +"

        La klinado de la bildo al %1x%2 eble prenos egan kvanton da memoro. " +"Tio povas redukti la respondecon de la sistemo aŭ kaŭzi risurcajn problemojn " +"ĉe alia programo.

        Ĉu vi vere volas klini la bildon?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Ĉu klini la bildon?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Kli&ni la bildon" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Kolora simileco" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RVB kolorkuba distanco" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Ekzakta kongruo" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Kio estas kolora simileco?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Konservi la antaŭrigardon" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 bitoko (aproks. %2%)" +msgstr[1] "%1 bitokoj (aproks. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Ne eblis malfermi \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Ne eblis malfermi \"%1\" - nesubtenata bilda formato.\n" +"La dosiero eble estas koruptita." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Ne eblis konservi la bildon - maltroo da informo." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mime tipo: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Interna eraro" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

        The %1 format may not be able to preserve all of the image's " +"color information.

        Are you sure you want to save in this format?

        " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Perdema dosierformato" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

        Are " +"you sure you want to save at this color depth?

        " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Malalta kolorozo" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Ne eblis konservi kiel \"%1\"." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Forigi la internan rand&on" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Forigi la internan randon" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Aŭt&omate stuci" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Aŭtomate stuci" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Ne eblas forigi la internan randon" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Ne eblas aŭtomate stuci" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Meti kiel bildon" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Elektado: Krei" + +#: kolourpaint.cpp:51 +#, fuzzy, kde-format +#| msgid "KolourPaint BETA" +msgid "KolourPaint" +msgstr "KolourPaint BETA" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "Pentrilo por KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projekta fondinto" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Ĉefula enketanto" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Piktogramoj" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "InputMethod subteno" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Bildefektoj" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Portado al KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "Portado al KDE 4" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Dankon al la multaj aliuloj kiuj helpis por ebligi ĉi tiun programon." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "Malfermenda bilda dosiero" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vidi" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "Bi&ldo" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Koloroj" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Ĉefa ilobreto" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Teksta ilobreto" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Elektila RMB menuo" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Redakti" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniaturo" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Dekstre ŝovi la traktilon por regrandigi la bildon." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Regrandigi bildon: Dekstre klaki por malfari." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Teksto" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Ne eblis malfermi la koloran paletron \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Ne eblis malfermi la koloran paletron \"%1\" - nesubtenata formato.\n" +"La dosiero eble estas koruptita." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Ne eblis malfermi la KDE koloran paletron \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Ne eblis konservi la koloran paletron kiel \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sentitola" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Uzi la defaŭlton de KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Uzi tiun de KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Malfermi..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Reŝar&gi" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "Kon&servi" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Konservi &kiel..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Aldoni vicon" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Forigi la lastan vicon" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Kolorujo" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Malfermi koloran paletron" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Reŝargi" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Konservi la koloran paletron kiel" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Alglui en &nova fenestro" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Forigi la elektaĵon" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opii el dosiero..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Al&glui el dosiero..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Teksto: Krei ujon" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Teksto: Alglui" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Ne eblas alglui" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Teksto: Forigi la ujon" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Elektado: Forigi" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Teksto: Fini" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Elektado: Malelekti" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopii al dosiero" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Alglui el dosiero" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&ksporti..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skani..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, fuzzy, kde-format +#| msgid "Acquiring Screenshots" +msgid "Acquire Screenshot" +msgstr "Akiri ekranfotojn" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, fuzzy, kde-format +#| msgid "Document Properties" +msgid "Properties" +msgstr "Dokumentaj ecoj" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Reŝar&gi" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Malfermi bildon" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, fuzzy, kde-format +#| msgid "Paste in &New Window" +msgid "Hide Main Window" +msgstr "Alglui en &nova fenestro" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumentaj ecoj" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Konservi la bildon kiel" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Eksporti" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Printi bildon" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Vi devas konservi tiun bildon antaŭ ol sendi ĝin.\n" +"Ĉu vi volas konservi ĝin?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&egrandigi / Skali..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Me&ti kiel bildon (stuce)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, fuzzy, kde-format +#| msgid "&Vertical (upside-down)" +msgid "&Flip (upside down)" +msgstr "&Vertikale" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, fuzzy, kde-format +#| msgid "Flip horizontally" +msgid "Mirror (horizontally)" +msgstr "Renversi horizontale" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Turni..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Turni ma&ldekstren" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Turni deks&tren" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Klini..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Redukti al u&nukoloro (punkte)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Redukti al &grizoskalo" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inversigi la kolorojn" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "For&viŝi" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Pliaj efektoj..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "Bi&ldo" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "E&lektaĵo" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Montri la &vojon" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Tipara familio" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Tipara grando" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Grasa" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursiva" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Substrekita" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Enstrekita" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Ilujo" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Montru &kradon" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Montri miniat&uron" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Zo&ma miniatura moduso" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zomi" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Tuta bildo" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Broso" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Desegni per brosoj kun malsamaj formoj kaj grandecoj" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Klaki por desegni punktojn aŭ manumajn strekojn." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Kolora viŝilo" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Anstataŭigas rastrumerojn el la malfona koloro per la fona koloro" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Klaki aŭ ŝovi por forviŝi rastrumerojn el la malfona koloro." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Skrapgumo" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Permesas forviŝi desegnerarojn" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Klaki aŭ ŝovi por forviŝi" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Krajono" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Desegnas punktojn kaj manumajn strekojn" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Vaporigilo" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Vaporigas grafition" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Klaki aŭ ŝovi por vaporigi grafition." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Dekstre klaki por nuligi." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Maldekstre klaki por nuligi." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permesas elekti koloron el la bildo" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Klaki por elekti koloron." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Plenigas zonojn en la bildo" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Klaki por plenigi zonon." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zomo" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "En- kaj elzomas la bildon" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "Klaki por en/el-zomi aŭ maldekstre ŝovi por zomi en preciza zono." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kurbo" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Desegnas kurbojn" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Elŝovi la startan kaj finan punktojn." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Maldekstre ŝovi por krei la unuan kontrolpunkton aŭ dekstre klaki por fini." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Dekstre ŝovi por krei la unuan kontrolpunkton aŭ maldekstre klaki por fini." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Maldekstre ŝovi por krei la lastan kontrolpunkton aŭ dekstre klaki por fini." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Dekstre ŝovi por krei la lastan kontrolpunkton aŭ maldekstre klaki por fini." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linio" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Desegnas liniojn" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Ŝovi por desegni." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Poligono" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Desegnas poligonojn" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Ŝovi por streki la unuan linion." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Maldekstre ŝovi alian linion aŭ dekstre klaki por fini." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Dekstre ŝovi alian linion aŭ maldekstre klaki por fini." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Konektitaj linioj" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Desegnas konektitajn liniojn" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipso" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Desegnas elipsojn kaj cirklojn" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rektangulo" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Desegnas rektangulojn kaj kvadratojn" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Ronda rektangulo" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Desegnas rektangulojn kaj kvadratojn kun rundigitaj anguloj" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Maldekstre ŝovi por krei la elektaĵon." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Maldekstre ŝovi por movi la elektaĵon." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Maldekstre ŝovi por skali la elektaĵon." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Elektado: Maldiafana" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Elektado: Travidebla" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Elektado: Travidebla koloro" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Elektado: Travidebla kolora simileco" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Elektado (elipse)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Kreas elipsan aŭ cirklan elektaĵon" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Elektado (senforme)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Kreas iaforman elektaĵon" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Elektado (rektangule)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Kreas rektangulan elektaĵon" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Elektado: Movi" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Skribas tekston" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Teksto: Retropaŝo" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Teksto: Forigi" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Teksto: Nova linio" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Teksto: Skribi" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Maldekstre ŝovi por krei tekstujon." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Maldekstre ŝovi por movi la tekstujon." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Teksto: Movi la ujon" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Maldekstre ŝovi por regrandigi la elektaĵon." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Maldekstre klaki por ŝanĝi la kursoran pozicion." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Teksto: Maldiafana fono" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Teksto: Travidebla fono" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Teksto: Komuti la kolorojn" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Teksta: Malfona koloro" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Teksta: Fona koloro" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Teksto: Tiparo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Teksto: Tipara grando" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Teksto: Grasa" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Teksto: Kursiva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Teksto: Substreki" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Teksto: Enstreki" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Senzoma moduso - Miniaturo" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Minitaturo" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        To configure it, click on the cube.

        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

        Color Similarity: %1%

        Click to configure.

        " +msgstr "

        Kolora simileco: %1%

        Klaku por agordi.

        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

        Color Similarity: Exact Match

        Click to configure." +msgstr "" +"

        Kolora simileco: Ekzakta kongruo

        Klaku por agordi." +"

        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Heleco:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Re&starigi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrasto:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamo:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Res&tarigi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanaloj:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Ĉio" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Ruĝo" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verdo" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Bluo" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Rest&arigi ĉiujn valorojn" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Agordo" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Kvanto:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "E&bligi" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Koloroj" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Koloro:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Satureco:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valoro:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Ruĝo" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Verdo" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Bluo" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "Ĉ&io" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanaloj" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Unukoloro" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "U&nukoloro (punkte)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 ko&loroj" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 kolo&roj (punkte)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bitaj koloroj" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Redukti al" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Grajneco:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

        To change the color of a color cell itself, double-click on it.

        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

        " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Konver&ti al:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kvali&teco:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Antaŭrigardo" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Unukoloro" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Unukoloro (punkte)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Koloro" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 koloroj (punkte)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitaj koloroj" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Bilda po&zicio" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centro de la pagô" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Supro-ma&ldekstro de la paĝo" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Travidebla" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Koloroj: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Koloroj: %1 [ŝanĝita]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cirklo" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadrato" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Oblikvo" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Deklivo" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Neniu plenigo" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Plenigi per la fona koloro" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Plenigi per la malfona koloro" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Maldiafana" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Kolora paletro kun la nomo \"%1\" jam ekzistas.\n" +#~ "Ĉu vi volas anstataŭigi ĝin?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Agordi la zoman nivelon al %1%" + +#~ msgid "None" +#~ msgstr "Neniu" + +#~ msgid "Overwrite" +#~ msgstr "Anstataŭigi" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Ne eblis malfermi \"%1\" - nekonata mime tipo." + +#~ msgid "Save Preview" +#~ msgstr "Konservi la antaŭrigardon" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Por havi subtenon, bonvolu viziti la retejon." + +#~ msgid "No Scanning Support" +#~ msgstr "Neniu skana subteno" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Skana subteno ne estas instalata." + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Akiri ekran&fotojn" + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Meti kie&l ekrankurtenon (centre)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Meti kiel ekrankurtenon (kahele)" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Ne eblas ŝanĝi la ekrankurtenon." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Renversi la elektaĵon" + +#~ msgid "Flip Image" +#~ msgstr "Renversi la bildon" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Vertikale" + +#~ msgid "&Horizontal" +#~ msgstr "&Horizontale" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Perdado de kolora kaj travidebleca informo" + +#~ msgid "Loss of Color Information" +#~ msgstr "Perdado de kolora informo" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Perdado de travidebleca informo" + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Nesubtenata ekrana moduso" + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Ne eblas skani - maltroo da grafika memoro." + +#~ msgid "Cannot Scan" +#~ msgstr "Ne eblas skani" + +#~ msgid "&Flip..." +#~ msgstr "&Renversi..." + +#~ msgid "

        There is nothing in the clipboard to paste.

        " +#~ msgstr "

        Nenio estas algluebla en la poŝilo.

        " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Ne eblis malfermi \"%1\" - maltroo da grafika memoro." + +#~ msgid "Scanning Support" +#~ msgstr "Skana subteno" diff --git a/po/es/docs/kolourpaint/brush_shapes.png b/po/es/docs/kolourpaint/brush_shapes.png new file mode 100644 index 0000000..6840d4c Binary files /dev/null and b/po/es/docs/kolourpaint/brush_shapes.png differ diff --git a/po/es/docs/kolourpaint/color_box.png b/po/es/docs/kolourpaint/color_box.png new file mode 100644 index 0000000..c14dc0d Binary files /dev/null and b/po/es/docs/kolourpaint/color_box.png differ diff --git a/po/es/docs/kolourpaint/eraser_shapes.png b/po/es/docs/kolourpaint/eraser_shapes.png new file mode 100644 index 0000000..d3379e9 Binary files /dev/null and b/po/es/docs/kolourpaint/eraser_shapes.png differ diff --git a/po/es/docs/kolourpaint/fcc_std_text.png b/po/es/docs/kolourpaint/fcc_std_text.png new file mode 100644 index 0000000..ed8658b Binary files /dev/null and b/po/es/docs/kolourpaint/fcc_std_text.png differ diff --git a/po/es/docs/kolourpaint/fcc_trans_text.png b/po/es/docs/kolourpaint/fcc_trans_text.png new file mode 100644 index 0000000..45b52dc Binary files /dev/null and b/po/es/docs/kolourpaint/fcc_trans_text.png differ diff --git a/po/es/docs/kolourpaint/fill_color_similarity.png b/po/es/docs/kolourpaint/fill_color_similarity.png new file mode 100644 index 0000000..a07eb59 Binary files /dev/null and b/po/es/docs/kolourpaint/fill_color_similarity.png differ diff --git a/po/es/docs/kolourpaint/fill_style.png b/po/es/docs/kolourpaint/fill_style.png new file mode 100644 index 0000000..4f98858 Binary files /dev/null and b/po/es/docs/kolourpaint/fill_style.png differ diff --git a/po/es/docs/kolourpaint/image_balance.png b/po/es/docs/kolourpaint/image_balance.png new file mode 100644 index 0000000..b230ecd Binary files /dev/null and b/po/es/docs/kolourpaint/image_balance.png differ diff --git a/po/es/docs/kolourpaint/image_emboss.png b/po/es/docs/kolourpaint/image_emboss.png new file mode 100644 index 0000000..fbf15e2 Binary files /dev/null and b/po/es/docs/kolourpaint/image_emboss.png differ diff --git a/po/es/docs/kolourpaint/image_flatten.png b/po/es/docs/kolourpaint/image_flatten.png new file mode 100644 index 0000000..59402cf Binary files /dev/null and b/po/es/docs/kolourpaint/image_flatten.png differ diff --git a/po/es/docs/kolourpaint/image_invert.png b/po/es/docs/kolourpaint/image_invert.png new file mode 100644 index 0000000..ee5652c Binary files /dev/null and b/po/es/docs/kolourpaint/image_invert.png differ diff --git a/po/es/docs/kolourpaint/image_reduce_colors.png b/po/es/docs/kolourpaint/image_reduce_colors.png new file mode 100644 index 0000000..7195c7a Binary files /dev/null and b/po/es/docs/kolourpaint/image_reduce_colors.png differ diff --git a/po/es/docs/kolourpaint/image_resize_scale.png b/po/es/docs/kolourpaint/image_resize_scale.png new file mode 100644 index 0000000..c8909a1 Binary files /dev/null and b/po/es/docs/kolourpaint/image_resize_scale.png differ diff --git a/po/es/docs/kolourpaint/image_rotate.png b/po/es/docs/kolourpaint/image_rotate.png new file mode 100644 index 0000000..ad8455a Binary files /dev/null and b/po/es/docs/kolourpaint/image_rotate.png differ diff --git a/po/es/docs/kolourpaint/image_skew.png b/po/es/docs/kolourpaint/image_skew.png new file mode 100644 index 0000000..aa4dcfa Binary files /dev/null and b/po/es/docs/kolourpaint/image_skew.png differ diff --git a/po/es/docs/kolourpaint/image_soften_sharpen.png b/po/es/docs/kolourpaint/image_soften_sharpen.png new file mode 100644 index 0000000..93ccb1b Binary files /dev/null and b/po/es/docs/kolourpaint/image_soften_sharpen.png differ diff --git a/po/es/docs/kolourpaint/index.docbook b/po/es/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..bcbb60b --- /dev/null +++ b/po/es/docs/kolourpaint/index.docbook @@ -0,0 +1,1814 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +El manual de &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; + Rafael Rodríguez Martín
        apt-drink@telefonica.net
        Traductor
        Santiago Fernández Sancho
        santi@kde-es.org
        Traductor
        Javier Viñal
        fjvinal@gmail.com
        Traductor
        +
        + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2018-03-23 +Aplicaciones 18.04 + + +&kolourpaint; es una aplicación de dibujo creada por &kde; libre y fácil de usar. + + + +kolourpaint +kdegraphics + + +
        + + +Introducción +&kolourpaint; es una aplicación de dibujo creado por &kde; libre y fácil de usar. Es perfecta para tareas habituales como: + + + +Pintar y dibujar diagramas y pintar con los dedos + + +Manipulación de capturas de pantalla - captura y edición de pantallas + + +Manipulación de imágenes - edición de capturas de imágenes y fotos; aplicación de efectos + + +Edición de iconos: dibujando «clipart» y logos con transparencias + + + + + + + + + + + + + +Utilizando &kolourpaint; + +Pulse en los siguientes enlaces para explorar las posibilidades de &kolourpaint;: + + + +Herramientas + + +Trabajar con colores + + +Opciones de las vistas + + +Efectos de imagen + + + + + +Herramientas + +Una opción adicional en el menú Preferencias permite definir si las herramientas dibujan usando «antialiasing» (por omisión) o no. + + +Obtención de capturas de pantallas + +Una captura de pantalla es una instantánea de lo que está en la pantalla de su equipo. Puede ser útil para explicar algunas acciones que deberían hacerse para obtener el resultado, o mostrar el problema que usted ha encontrado. +Para que una captura de pantalla pueda editarse en la ventana de &kolourpaint; usted puede usar la opción Archivo Capturar pantalla del menú principal de &kolourpaint;. + + + + + + + +Usando el diálogo abierto, usted puede cambiar el Retraso en la captura de pantalla (en segundos) y elegir Ocultar la pantalla principal durante el proceso de captura. Cuando usted esté listo para tomar la captura de pantalla, solo pulse Aceptar. La captura de pantalla se situará directamente en el área de edición de &kolourpaint;. + + + +Referencia de herramientas + +Una forma rápida de seleccionar una herramienta en &kolourpaint; es pulsar la tecla de acceso rápido asociada con ella y que se documenta a continuación en los consejos emergentes de caja de herramientas. Usted también puede mantener pulsadas &Alt;&Shift; mientras pulsa la tecla, lo que será necesario cuando esté escribiendo texto (los accesos rápidos de sola una tecla estarán desactivada). Por ejemplo, para seleccionar la brocha, pulse &Alt;&Shift;B o únicamente B (cuando no esté escribiendo texto). + + + Brocha (B) + + Borrar color (O) + + Selector de color (C) + + Líneas conectadas (N) + + Curva (V) + + Elipse (E) + + Borrador (A) + + Relleno líquido (F) + + Línea (L) + + Pincel (P) + + Polígono (G) + + Rectángulo (R) + + Rectángulo redondeado (U) + + Selección (elíptica) (I) + + Selección (mano alzada) (M) + + Selección (rectangular) (S) + + Aerógrafo (Y) + + Texto (T) + + + + + +Brocha <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Pulse o pulse y arrastre con la brocha para dibujar. + + + + + + + + + + + + + + +Pulse en una de las formas para seleccionar la forma de la brocha. Usted puede utilizar una forma circular, cuadrada, de barra o de barra inversa para la brocha. + + + + + + +El &LMB; dibuja en el color de primer plano, mientras que el &RMB; dibuja en el color de fondo. + + + +Selector de color <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Para seleccionar el color de primer plano, pulse con el botón izquierdo en un píxel. Para fijar el color de fondo, utilice el botón derecho. &kolourpaint; entonces a la herramienta previamente seleccionada. + + + + +Polígonos y líneas conectadas <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre para dibujar líneas conectadas. La herramienta de polígonos se emplea de la misma manera. Sin embargo, los puntos de comienzo y final son conectados automáticamente para formar un polígono. + +El &LMB; dibuja en el color de primer plano. El &RMB; lo hace en el color de fondo y también invertirá el color de relleno para los polígonos. + +Puede fijar el ancho de la línea. Para polígonos, usted también puede establecer el valor de relleno. + + + + +Curva <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre para dibujar una línea - esto establece los puntos de comienzo y final. Usted puede configurar hasta dos puntos de control arrastrando el ratón. Para finalizar la curva sin utilizar ambos o ninguno de los puntos de control, pulse el otro botón del ratón. La herramienta de curvas dibuja un Bezier cúbico. + +El &LMB; dibuja en el color de primer plano, mientras que el &RMB; dibuja en el color de fondo. + +Usted también puede establecer el grosor de la línea. + + + + +Elipse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre para dibujar una elipse. + +El &LMB; dibuja en el color de primer plano. El &RMB; lo hace en el color de fondo e invertirá el color de relleno. + +Usted puede también fijar el grosor de la línea y el estilo de relleno. + +Para funcionalidades adicionales, utilice las teclas modificadoras: + + + +Pulse &Shift; y arrastre para dibujar un círculo. + + +Para dibujar una elipse torno a un punto central de su elección, mantenga pulsado &Ctrl;, pulse en el punto central y arrastre hasta que la elipse tenga el tamaño y forma correctos. + + +Para dibujar un círculo con un punto central de su elección, mantenga pulsado &Ctrl; y &Shift;, pulse en el punto central y arrastre hasta que el círculo tenga el tamaño correcto. + + + + + + +Borradores + + +Borrador <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre con el borrador para borrar equivocaciones. + + +A diferencia de otras herramientas, los borradores dibujan en el color de fondo. Para dibujar en el color de primer plano, utilice el &RMB;. + + +El borrador solo tiene formas cuadradas. Para dibujar con otras formas (como círculos) utilice la Brocha y el &RMB;. + + +Un doble clic en el icono del borrador limpiará la imagen completa. Esto es equivalente a utilizar la opción Limpiar del menú Imagen. + + + + + +Borrador de color <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre para reemplazar píxeles del color de primer plano con el color de fondo. Para reemplazar todos los píxeles similares (pero no necesariamente tienen que ser exactamente iguales), como en imágenes y fotos difuminadas, cambie la opción Similitud de colores, seleccionando un valor distinto de «Exacto». + + +A diferencia de otras herramientas, los borradores dibujan en el color de fondo. Para reemplazar píxeles del color de fondo con el color de primer plano, utilice el &RMB;. + + +Usted puede configurar el tamaño del borrador. + + +Haga doble clic en el icono de borrador de color para aplicarlo a la imagen entera. + + + + + + +Relleno <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse para rellenar una región. Para rellenar una región difuminada, utilice la opción Similitud de colores, seleccionando un valor distinto de «Exacto». + +El &LMB; rellena en el color de primer plano. El &RMB; lo hace en el color de fondo. + + + +Línea <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre para dibujar una línea. + +El &LMB; dibuja en el color de primer plano, mientras que el &RMB; dibuja en el color de fondo. + +Usted también puede establecer el grosor de la línea. + + + + + + + + + + + + + + + + + + + + + +Mantenga pulsado &Ctrl; para dibujar líneas con ángulos que sean múltiplo de 30 grados. Estas son las líneas en el diagrama rojo. + + +Mantenga pulsado &Shift; para dibujar líneas con ángulos que sean múltiplo de 45 grados. Estas son las líneas en el diagrama azul. + + +Mantenga pulsados &Ctrl; y &Shift; para dibujar líneas con el ángulo más cercano a un múltiplo de 30 o 45 grados. Estas son las líneas en el diagrama verde. + + + + + + +Lápiz <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse para dibujar un punto o pulse y arrastre para dibujar una línea a mano alzada. + +El &LMB; dibuja en el color de primer plano, mientras que el &RMB; dibuja en el color de fondo. + + + + +Rectángulos <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre para dibujar un rectángulo. El Rectángulo redondeado es un rectángulo con esquinas redondeadas. + +El &LMB; dibuja en el color de primer plano. El &RMB; lo hace en el color de fondo e invertirá el color de relleno. + +Usted puede también fijar el grosor de la línea y el estilo de relleno. + +Para funcionalidades adicionales, utilice las teclas modificadoras: + + + +Mantenga pulsado &Shift; y arrastre para dibujar un cuadrado. + + +Para dibujar un rectángulo con un punto central de su elección, mantenga pulsado &Ctrl;, pulse en el punto central y arrastre hasta que el rectángulo tenga el tamaño y la forma correctos. + + +Para dibujar un cuadrado con un punto central de su elección, mantenga pulsado &Ctrl; y &Shift;, pulse en el punto central y arrastre hasta que el cuadrado tenga el tamaño correcto. + + + + + + +Selecciones <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Use las herramientas de selección para dibujar la frontera de una selección. + +Para mover la selección pulse y arrástrelo. La vista principal puede desplazarse siempre que sea preciso para permitirle mover la selección a la parte de la imagen que no se esté mostrando en ese momento. + +Usted puede Redimensionar la imagen entera o Escalar suavemente la parte seleccionada, utilizando los manipuladores. Para mantener las proporciones, mantenga pulsado &Shift; mientras escala la imagen. El &RMB; hace aparecer un menú contextual con las órdenes de Edición y los Efectos de imagen más habituales. + + +Usted puede utilizar los cursores para dibujar la frontera de la selección o para moverla. + + +Si usted mantiene pulsado &Ctrl; antes de mover la selección moverá una copia de ella. Si mantiene pulsado &Shift; antes de mover la selección, dejará un rastro tras ella. + + + + + + + + + + + + + +Hay dos modos de selección: opaco (por defecto) y transparente. Si utiliza el modo de selección transparente, todos los píxeles del color de fondo serán trasparentes (sustracción del fondo). Esto le permite pegar una selección sin el fondo. Para realizar una sustracción de color en una imagen difuminada, utilice un valor para la opción Similitud de colores diferente de Exacto. + + + + + + +Usted puede aplicar efectos de imagen a una selección. Vea la sección Efectos de imagen para más información. + +Es posible guardar la selección en un archivo usando la opción Copiar en archivo... del menú de contexto o la opción EditarCopiar en archivo... del menú principal. + + + +Aerógrafo <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre para dibujar grafitis. Mantenga pulsado el botón del ratón para obtener un spray más concentrado. + + + + + + + + + + + + + +Pulse en uno de los cuadrados para seleccionar el tamaño aerógrafo. Usted puede seleccionar los siguientes tamaños: 9x9, 17x17 y 29x29. + + + + + + +El &LMB; dibuja en el color de primer plano, mientras que el &RMB; dibuja en el color de fondo. + + + + +Texto <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pulse y arrastre para crear un área donde escribir texto. Puede comenzar a escribir el texto en cuanto se muestre el borde. Pulse y arrastre el borde para moverla. Puede cambiar el tamaño del área de texto arrastrando las asas o mediante el diálogo Redimensionar. + + +Si usted ha deseleccionado un área de texto, puede utilizar Deshacer para editar el texto de nuevo. + + + +Utilizando el color transparente + + + + + + + + +El gráfico de la izquierda muestra una imagen de ejemplo. La derecha muestra el añadido de texto con colores opacos para el primer plano y el fondo. + + + + + + + + + +El gráfico de la izquierda muestra el añadido de texto con un color de primer plano opaco y un color de fondo transparente. El gráfico de la derecha muestra el añadido de texto con un color de primer plano transparente y un fondo opaco. + + + + +Opciones comunes de herramientas + + + + + + + + + + + + + +Pulse en uno de los cuadrados para seleccionar el tamaño del borrador. Usted puede seleccionar cuadrados de lado 2, 3, 5, 9, 17 y 29 píxeles. + +El tamaño de borrado afecta a los Borradores. + + + + + + + + + + + +Pulse en una de las líneas para seleccionar el grosor de la línea. Usted puede seleccionar entre anchuras de 1, 2, 3, 5 y 8 píxel(s). + +La opción de grosor de línea afecta a las herramientas de Líneas conectadas, Curva, Elipse, Línea, Polígono, Rectángulo y Rectángulo redondeado. + + + + + + + + + + + +Pulse en uno de los rectángulos para seleccionar el estilo de relleno. Usted puede seleccionarlo entre «Sin relleno», «Relleno con color de fondo» y «Relleno con color de primer plano». La opción de estilo de relleno afecta a las herramientas de Elipse, Polígono, Rectángulo y Rectángulo redondeado. + + + + + + + + + + +Trabajando con color + + +La caja de color + + + + + + + +Caja de color + + + + +La Caja de color tiene 3 secciones principales: la Tableta de color, la Paleta de color y el Selector de similitud de colores. + +La Tableta de color muestra el color de primer plano actual como un cuadrado encima de otro cuadrado que representa el color de fondo. Cuando se dibuja con el &LMB; se emplea el color de primer plano, mientras que si lo hace con el &RMB; se utiliza el color de fondo (excepto para los Borradores). Usted puede pulsar en la línea con flechas a ambos lados para intercambiar el color de primer plano y el de fondo. + +La Paleta de color muestra una selección de colores para que elija. La pirámide traslúcida representa el color transparente. Pulse con el botón izquierdo del ratón en un color para seleccionarlo como color de primer plano y pulse con el botón derecho para seleccionarlo como color de fondo. Puede también arrastrar y soltar cualquier color opaco en los cuadrados de la Tableta de color. Para editar un color en la Tableta de color o la Paleta, pulse dos veces en ella. La herramienta Selector de color le permite seleccionar un color de una imagen. + +Similitud de colores le permite trabajar de forma más efectiva con imágenes y fotos difuminadas, de forma similar a la funcionalidad varita mágica de otros programas de dibujo. Se aplica a selecciones transparentes, así como a las herramientas Relleno de color, Borrador de color y Autorecorte / Eliminar borde interno. Pulse dos veces en el Selector de parecido de colores para seleccionar cómo de similares deben ser los colores para ser considerados el mismo. Cuando esté utilizando selecciones en modo transparente, cualquier color de la selección que sea similar al color de fondo será convertirá también en transparente. + + + + + + + + + +La imagen de la izquierda muestra la imagen de ejemplo. La imagen de la derecha demuestra el uso del relleno de color, con preferencias de similitud de colores de 5%, 15% y 30%. En este ejemplo, con una similitud de color exacta, el relleno de color (80, 100) solo rellenará un píxel, ya que los píxeles que le rodean son similares, pero no idénticos. Mientras mayor valor tenga similitud de color más píxel con un color parecido se considerarán idénticos, por lo tanto, se extenderá más. + + + + + +Opciones de vista + + +Referencia de opciones de vista + +Ampliar incorporando la rejilla +Miniaturas + + + + +Nivel de aumento incorporado a la rejilla +Incrementa el nivel de aumento para editar imágenes con más precisión, o lo reduce para ver más trozo de la imagen. + + +En los niveles de aumento que no sean múltiplos del 100%, pueden aparecer partes de la imagen al mover la imagen como consecuencia de la interacción del usuario. Se pueden producir algunos fallos menores como consecuencia de los niveles de zoom. + + +En los niveles de aumento de 400% o superiores que sean múltiplos de 100%, se puede Mostrar la rejilla para editar píxeles individuales de forma precisa. + + + + + + + + + + + + + + + +La primera imagen muestra el icono de la herramienta de texto, mientras que la posterior muestra el mismo con un aumento del 600% con la rejilla activada. + + +Otro modo de cambiar el tamaño cuando no se está dibujando consiste en desplazar la rueda del ratón mientras se mantiene pulsado &Ctrl;. + + + + + +Miniaturas + + + + + + + +Si el Ajustar tamaño de la miniatura está seleccionado, la imagen entera es mostrada con el tamaño requerido para ajustarse a la ventana de la miniatura (imagen superior derecha). +De modo contrario, la miniatura muestra la imagen hasta donde es posible, comenzando por la parte superior izquierda de la vista principal (imagen inferior derecha). + + + + + +Efectos de imagen + + +Referencia de efectos de imagen +Recorte automático / eliminar el borde interno +Balance +Borrar +Repujar +Aplanar +Voltear (de arriba a abajo) +Invertir +Reducir colores +Reducir a escala de grises +Reducir a monocromo (difuminado) +Reflejar (horizontalmente) +Cambiar tamaño / escalar +Rotar +Fijar como imagen (recorte) +Deformar +Suavizar y realzar +Más efectos +Notas + + + +Autorecorte / Eliminar borde interno + +Elimina automáticamente el borde de una imagen o selección. Utilice Autorecorte si usted tiene una figura que no rellena la imagen completa y desea eliminar el espacio sobrante. Para usar esta característica con una imagen con un borde difuminado, usted necesitara emplear también Similitud de colores. + + + + +Balance + +Esta funcionalidad está disponible desde el diálogo Más efectos. + + + + + + + + +Esto le permite seleccionar el brillo, el contraste y la gamma de la imagen o selección. + + +La medida más habitual de la gamma (un decimal entre 0,10 y 10,00) está entre el cuadro de la Gamma y el botón Reiniciar. + + + + +Borrar + +Rellena la imagen completa o selección con el color de fondo. + + +Pulse dos veces en el icono de Borrador para limpiar la imagen completa. + + + + + +Relieve + +Esta funcionalidad está disponible desde el diálogo Más efectos. + + + + + + + + +Marque Activar para aplicar el efecto relieve. Esto enfatiza el borde y da a la imagen o selección una "apariencia resaltada ". + + + +Aplanar + +Esta funcionalidad está disponible desde el diálogo Más efectos. + + + + + + + + +Esto recolorea la imagen con variaciones de sombras de los dos colores seleccionados. + + + +Rotar (al revés) + +Voltea la imagen completa o selección verticalmente. + + + + +Invertir + +Esta funcionalidad está disponible desde el diálogo Más efectos. + + + + + + + + +Esto le permite invertir uno o más canales RGB en la imagen o selección. Seleccione Todos para pasar una fotografía a negativo y viceversa. Generalmente, suele resultar bastante divertido. + + +Para invertir rápidamente todos los canales, usted no necesita utilizar este diálogo. Usted puede acceder al elemento Invertir colores en el menú Imagen o Selección. El elemento Selección solo se muestra en la barra de menú si usted utiliza una de las herramientas de selección. Además, usted puede acceder a esta acción desde el menú de contexto abierto con un &RMB; pulsando en el área de la imagen. + + + + + +Reflejar (en horizontal) + +Refleja la imagen completa o selección horizontalmente. + + + + +Reducir colores + +Esta funcionalidad está disponible desde el diálogo Más efectos. + + + + + + + + +Reduce el número de colores utilizados por la imagen o la selección, con o sin difuminado. + +El difuminado, generalmente proporciona mejor calidad en los resultados, sin embargo, usted puede desactivar esto para obtener efectos artísticos, ⪚ utilizando Monocromo en lugar de Monocromo (difuminado) genera un efecto de silueta. + +Otra importante diferencia es que mientras Monocromo (difuminado) convertirá la imagen completa o la selección a blanco y negro, Monocromo solo lo hará si la imagen o selección contiene más de 2 colores. + + +Para obtener un difuminado monocromo de forma rápida de una imagen o selección, utilice el elemento Convertir a monocromo (difuminado) de los menús Imagen o Selección. La opción Selección solo se muestra en la barra de menú si usted usa una de las herramientas de selección. Además, usted puede acceder a esta acción desde el menú de contexto abierto con un &RMB; pulsando en el área de la imagen. + + + +Cambiar el número de colores aquí no tendrá ningún efecto en la profundidad de color del formato de archivo. Si usted desea cambiar la profundidad de color, debería seleccionarla en el diálogo de guardado de archivos. Tenga en cuenta, que el cambio de la profundidad de color también afectará al número de colores. + + + + +Convertir a escala de grises + +Convierte la imagen completa o selección a escala de grises. + + + + +Convertir a monocromo (difuminado) + +Convierte la imagen completa o selección a blanco y negro. + + +Si usted no desea difuminar la imagen o selección utilice el diálogo Reducir colores. + + + + +Redimensionar / escalar + + + + + + + + + +Redimensionar la imagen cambia sus dimensiones sin aplicar una transformación a sus contenidos. Escalar la imagen estirará los contenidos existentes hasta sus nuevas dimensiones. Escalado suave, generalmente proporciona unos mejores resultados de calidad que utilizando Escalado, al mezclarse con los colores vecinos. + +Usted puede expresar las nuevas dimensiones en píxeles, o como porcentaje del tamaño original. Si selecciona Mantener proporción, la anchura y altura serán escalados en el mismo porcentaje. + + +Usted puede Redimensionar la imagen entera o Escalar suavemente la parte seleccionada, utilizando los manipuladores correspondientes. + + + +Para selecciones, solo se admite el escalado, mientras que para áreas de texto solo se puede redimensionar. Vea Notas para detalles adicionales sobre estos efectos. + + + + +Rotar + + + + + + + + + +Rota la imagen. Usted puede especificar un ángulo y dirección de rotación. + + +Usted puede invertir la dirección de rotación si especifica un ángulo negativo. + + + +Vea Notas para obtener detalles sobre aplicar este efecto a una selección. + + + + +Seleccionar imagen como (recorte) + +Establece la selección como la imagen actual. + + +Solo está disponible cuando usted tiene una selección activa. + + + + +Deformar + + + + + + + + + +Deforma la imagen completa o selección horizontalmente o verticalmente. + + +Vea Notas para obtener detalles sobre aplicar este efecto a una selección. + + + + +Suavizar y enfocar + +Esta funcionalidad está disponible desde el diálogo Más efectos. + + + + + + + + +Utilice este efecto para suavizar y enfocar la imagen. + + + + +Más efectos + +Este diálogo contiene las funcionalidades Balance, Relieve, Aplanar, Invertir, Reducir colores y Suavizar & enfocar. + + + +Notas + +Redimensionar / Escalar, Rotar y Deformar pueden cambiar las dimensiones de la imagen. Usted puede ver las nuevas dimensiones en el cuadro de diálogo. + +Si usted aplica estos efectos a una imagen, la imagen se redimensionará si es necesario. Sin embargo, si aplica estos efectos a una selección, la imagen no será redimensionada, aun cuando la selección transformada no encaje. + + + + + + + + + +La imagen de la izquierda se ha rotado 30 grados en el sentido de las agujas del reloj para crear la imagen de la derecha. &kolourpaint; ha ampliado la imagen automáticamente para ajustarla al nuevo contenido. + + + + + + + + + +La selección de la izquierda se ha rotado 30 grados en el sentido de las agujas del reloj para crear la imagen de la derecha. El tamaño de la imagen continuará siendo el mismo, por lo tanto, formará parte de la selección pero no será visible sino se ha Redimensionado la imagen. + + + + + +Créditos y licencia + +Carl Tucker +Puede que no sea una documentación concisa. Puede que no sea una documentación completa. Pero es una documentación honrada. + + +&kolourpaint; +Copyright del programa © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Iconos específicos de &kolourpaint; Copyright © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Documentación y documentación adicional del trabajo gráfico Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Partes reproducidas con permiso de . + +Traducido por Rafael Rodríguez Martín apt-drink@telefonica.net, Santiago Fernández Sancho santi@kde-es.org y Javier Viñal fjvinal@gmail.com &underFDL; Este programa tiene la licencia siguiente: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; +
        + + diff --git a/po/es/docs/kolourpaint/line_width.png b/po/es/docs/kolourpaint/line_width.png new file mode 100644 index 0000000..13fd4c5 Binary files /dev/null and b/po/es/docs/kolourpaint/line_width.png differ diff --git a/po/es/docs/kolourpaint/lines_30_45_deg.png b/po/es/docs/kolourpaint/lines_30_45_deg.png new file mode 100644 index 0000000..0b38c99 Binary files /dev/null and b/po/es/docs/kolourpaint/lines_30_45_deg.png differ diff --git a/po/es/docs/kolourpaint/lines_30_deg.png b/po/es/docs/kolourpaint/lines_30_deg.png new file mode 100644 index 0000000..454b5ba Binary files /dev/null and b/po/es/docs/kolourpaint/lines_30_deg.png differ diff --git a/po/es/docs/kolourpaint/lines_45_deg.png b/po/es/docs/kolourpaint/lines_45_deg.png new file mode 100644 index 0000000..a2d7a0c Binary files /dev/null and b/po/es/docs/kolourpaint/lines_45_deg.png differ diff --git a/po/es/docs/kolourpaint/rotate_image_30.png b/po/es/docs/kolourpaint/rotate_image_30.png new file mode 100644 index 0000000..5bc2afd Binary files /dev/null and b/po/es/docs/kolourpaint/rotate_image_30.png differ diff --git a/po/es/docs/kolourpaint/rotate_selection_30.png b/po/es/docs/kolourpaint/rotate_selection_30.png new file mode 100644 index 0000000..d3a50de Binary files /dev/null and b/po/es/docs/kolourpaint/rotate_selection_30.png differ diff --git a/po/es/docs/kolourpaint/selections_opaque_transparent.png b/po/es/docs/kolourpaint/selections_opaque_transparent.png new file mode 100644 index 0000000..24f5ffd Binary files /dev/null and b/po/es/docs/kolourpaint/selections_opaque_transparent.png differ diff --git a/po/es/docs/kolourpaint/spraycan_patterns.png b/po/es/docs/kolourpaint/spraycan_patterns.png new file mode 100644 index 0000000..136ae06 Binary files /dev/null and b/po/es/docs/kolourpaint/spraycan_patterns.png differ diff --git a/po/es/docs/kolourpaint/text_zoom_grid.png b/po/es/docs/kolourpaint/text_zoom_grid.png new file mode 100644 index 0000000..41988e0 Binary files /dev/null and b/po/es/docs/kolourpaint/text_zoom_grid.png differ diff --git a/po/es/docs/kolourpaint/tool_brush.png b/po/es/docs/kolourpaint/tool_brush.png new file mode 100644 index 0000000..372ff62 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_brush.png differ diff --git a/po/es/docs/kolourpaint/tool_color_picker.png b/po/es/docs/kolourpaint/tool_color_picker.png new file mode 100644 index 0000000..4d647ec Binary files /dev/null and b/po/es/docs/kolourpaint/tool_color_picker.png differ diff --git a/po/es/docs/kolourpaint/tool_color_washer.png b/po/es/docs/kolourpaint/tool_color_washer.png new file mode 100644 index 0000000..0967ae9 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_color_washer.png differ diff --git a/po/es/docs/kolourpaint/tool_curve.png b/po/es/docs/kolourpaint/tool_curve.png new file mode 100644 index 0000000..c7e0b27 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_curve.png differ diff --git a/po/es/docs/kolourpaint/tool_ellipse.png b/po/es/docs/kolourpaint/tool_ellipse.png new file mode 100644 index 0000000..4e2fe52 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_ellipse.png differ diff --git a/po/es/docs/kolourpaint/tool_elliptical_selection.png b/po/es/docs/kolourpaint/tool_elliptical_selection.png new file mode 100644 index 0000000..acd1d6c Binary files /dev/null and b/po/es/docs/kolourpaint/tool_elliptical_selection.png differ diff --git a/po/es/docs/kolourpaint/tool_eraser.png b/po/es/docs/kolourpaint/tool_eraser.png new file mode 100644 index 0000000..f3ef915 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_eraser.png differ diff --git a/po/es/docs/kolourpaint/tool_flood_fill.png b/po/es/docs/kolourpaint/tool_flood_fill.png new file mode 100644 index 0000000..f0900a7 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_flood_fill.png differ diff --git a/po/es/docs/kolourpaint/tool_free_form_selection.png b/po/es/docs/kolourpaint/tool_free_form_selection.png new file mode 100644 index 0000000..31e3a48 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_free_form_selection.png differ diff --git a/po/es/docs/kolourpaint/tool_line.png b/po/es/docs/kolourpaint/tool_line.png new file mode 100644 index 0000000..2bdb607 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_line.png differ diff --git a/po/es/docs/kolourpaint/tool_pen.png b/po/es/docs/kolourpaint/tool_pen.png new file mode 100644 index 0000000..467b0d5 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_pen.png differ diff --git a/po/es/docs/kolourpaint/tool_polygon.png b/po/es/docs/kolourpaint/tool_polygon.png new file mode 100644 index 0000000..bd0eac1 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_polygon.png differ diff --git a/po/es/docs/kolourpaint/tool_polyline.png b/po/es/docs/kolourpaint/tool_polyline.png new file mode 100644 index 0000000..ca8dd6a Binary files /dev/null and b/po/es/docs/kolourpaint/tool_polyline.png differ diff --git a/po/es/docs/kolourpaint/tool_polystar.png b/po/es/docs/kolourpaint/tool_polystar.png new file mode 100644 index 0000000..b8f72e8 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_polystar.png differ diff --git a/po/es/docs/kolourpaint/tool_rect_selection.png b/po/es/docs/kolourpaint/tool_rect_selection.png new file mode 100644 index 0000000..35d9f18 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_rect_selection.png differ diff --git a/po/es/docs/kolourpaint/tool_rectangle.png b/po/es/docs/kolourpaint/tool_rectangle.png new file mode 100644 index 0000000..b373fa4 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_rectangle.png differ diff --git a/po/es/docs/kolourpaint/tool_rectangles.png b/po/es/docs/kolourpaint/tool_rectangles.png new file mode 100644 index 0000000..727d2e0 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_rectangles.png differ diff --git a/po/es/docs/kolourpaint/tool_rounded_rectangle.png b/po/es/docs/kolourpaint/tool_rounded_rectangle.png new file mode 100644 index 0000000..2fd0b3e Binary files /dev/null and b/po/es/docs/kolourpaint/tool_rounded_rectangle.png differ diff --git a/po/es/docs/kolourpaint/tool_selections.png b/po/es/docs/kolourpaint/tool_selections.png new file mode 100644 index 0000000..ca7430e Binary files /dev/null and b/po/es/docs/kolourpaint/tool_selections.png differ diff --git a/po/es/docs/kolourpaint/tool_spraycan.png b/po/es/docs/kolourpaint/tool_spraycan.png new file mode 100644 index 0000000..f34b2a1 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_spraycan.png differ diff --git a/po/es/docs/kolourpaint/tool_text.png b/po/es/docs/kolourpaint/tool_text.png new file mode 100644 index 0000000..bdfe7c7 Binary files /dev/null and b/po/es/docs/kolourpaint/tool_text.png differ diff --git a/po/es/docs/kolourpaint/view_thumbnails.png b/po/es/docs/kolourpaint/view_thumbnails.png new file mode 100644 index 0000000..48ebdcc Binary files /dev/null and b/po/es/docs/kolourpaint/view_thumbnails.png differ diff --git a/po/es/kolourpaint.po b/po/es/kolourpaint.po new file mode 100644 index 0000000..65048e7 --- /dev/null +++ b/po/es/kolourpaint.po @@ -0,0 +1,2811 @@ +# translation of kolourpaint.po to Spanish +# Miguel Revilla Rodríguez , 2004. +# Pablo de Vicente , 2004, 2005. +# Santiago Fernandez Sancho , 2005. +# santi , 2005. +# Eloy Cuadra , 2005, 2006, 2007, 2008, 2009, 2011, 2012, 2014, 2015, 2016, 2017, 2020, 2021. +# Javier Viñal , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-03 18:21+0200\n" +"Last-Translator: Eloy Cuadra \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 21.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Eloy Cuadra,Miguel Revilla Rodríguez,Pablo de Vicente" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ecuadra@eloihr.net,yo@miguelrevilla.com,p.devicente@wanadoo.es" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Equilibrar" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Suavizar" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Afilar" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Borrar" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selección: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Relieve" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Aplanar" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reducir a escala de grises" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Tinte, saturación, valor" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invertir colores" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertir" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reducir a monocromo (difuminado)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reducir a monocromo" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reducir a 256 colores (difuminado)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reducir a 256 colores" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Ecualizador del histograma" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Voltear" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Voltear en horizontal y en vertical" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Voltear en horizontal" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Voltear en vertical" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Texto: redimensionar caja" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selección: escalar" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selección: escalar suavemente" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Redimensionar" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Escalar" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Escalar suavemente" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rotar" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Deformar" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Deshacer: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Deshacer" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Rehacer: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Rehacer" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Deshacer: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Deshacer" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Rehacer: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Rehacer" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 elemento más" +msgstr[1] "%1 elementos más" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Selector de color" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Rellenar" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Más efectos de imagen (selección)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Más efectos de imagen" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efecto:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reducir colores" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Suavizar y agudizar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Propiedades del documento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Puntos por pulgada (PPP)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Sin especificar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

        " +msgstr "" +"

        Puntos por pulgada (PPP) especifica el número de píxeles de la " +"imagen que se debe imprimir en cada pulgada (2,54 cm).

        Cuantos más PPP " +"tenga la imagen, menor será la imagen impresa. Tenga en cuenta que es poco " +"probable que su impresora genere documentos de gran calidad si incrementa " +"este parámetro a más de 300 o 600 PPP, según la impresora.

        Si desea " +"imprimir la imagen de modo que tenga el mismo tamaño que el mostrado en la " +"pantalla, establezca el valor de PPP de la imagen para que sea el mismo que " +"el de la pantalla.

        Si este valor es sin especificar, también se " +"imprimirá la imagen con el mismo tamaño que tiene en la pantalla.

        No " +"todos los formatos de imagen poseen valores de PPP. Si el formato en el que " +"guarde la imagen no posee esta característica, su valor no será guardado." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Despla&zamiento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

        The Offset is the relative position where this image should be " +"placed, compared to other images.

        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

        " +msgstr "" +"

        El desplazamiento es la posición relativa donde será colocada " +"esta imagen, comparada con otras imágenes.

        No todos los formatos de " +"imagen implementan la característica desplazamiento. Si el formato en " +"el que guarde la imagen no posee esta característica, su valor no será " +"guardado.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Campos de &texto" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Añadir fila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Eliminar fila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Reiniciar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

        " +msgstr "" +"

        Los campos de texto proporcionan información extra sobre la " +"imagen. Probablemente será un área de comentarios donde podrá escribir " +"cualquier texto.

        No obstante, es específico del formato, por lo que " +"estos campos pueden, en teoría, ser datos interpretados por su equipo (que " +"no debería modificar), aunque esto es poco probable.

        No todos los " +"formatos de imagen poseen valores de campos de texto. Si el formato " +"en el que guarde la imagen no posee esta característica, su contenido no " +"será guardado.

        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Clave" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "El valor del texto «%1» de la línea %2 necesita una clave." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Todas las claves de texto deben ser únicas. La clave de texto «%1» de las " +"líneas %2 y %3 son idénticas." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Campos de texto no válidos" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensiones" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Previsualizar" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Act&ualizar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Cambiar tamaño / escalar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Ac&tuar sobre:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Imagen completa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selección" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Área de texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operación" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
        " +msgstr "" +"
        • Redimensionar: El tamaño de la imagen aumentará creando " +"nuevas áreas a la derecha y/o abajo (rellenadas con el color del fondo) o " +"disminuirá cortándola por la derecha o/y abajo.
        • Escalar: La " +"imagen se expandirá duplicando píxeles o se reducirá eliminando píxeles.
        • Escalar suavemente: Esta opción es igual que la de Escalar excepto que los píxeles adyacentes se mezclan para suavizar la imagen.
        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Redimensionar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "E&scalar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Escalado s&uave" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Ancho:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Alto:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nuevo:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Porcentaje:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Mantener &proporción" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to resize the text box?

        " +msgstr "" +"

        La modificación del tamaño del área de texto a %1x%2 puede consumir " +"una cantidad importante de memoria, reduciendo la respuesta del sistema y " +"ocasionando posibles problemas a otras aplicaciones.

        ¿Seguro que desea " +"cambiar el tamaño del área de texto?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "¿Cambiar el tamaño del área de texto?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Cambiar tamaño del área de t&exto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to resize the image?

        " +msgstr "" +"

        La modificación del tamaño de la imagen a %1x%2 puede consumir una " +"cantidad importante de memoria, reduciendo la respuesta del sistema y " +"ocasionando posibles problemas a otras aplicaciones.

        ¿Seguro que " +"desea redimensionar la imagen?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "¿Cambiar el tamaño de la imagen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&edimensionar la imagen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to scale the image?

        " +msgstr "" +"

        El escalado de la imagen a %1x%2 puede consumir una cantidad " +"importante de memoria, reduciendo la respuesta del sistema y ocasionando " +"posibles problemas a otras aplicaciones.

        ¿Seguro que desea escalar la " +"imagen?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "¿Escalar la imagen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "E&scalar imagen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to scale the selection?

        " +msgstr "" +"

        El escalado de la selección a %1x%2 puede consumir una cantidad " +"importante de memoria, reduciendo la respuesta del sistema y ocasionando " +"posibles problemas a otras aplicaciones.

        ¿Seguro que desea escalar la " +"selección?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "¿Escalar la selección?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Escal&ar selección" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the image?" +msgstr "" +"

        El escalado suave de la imagen a %1x%2 puede consumir una cantidad " +"importante de memoria, reduciendo la respuesta del sistema y ocasionando " +"posibles problemas a otras aplicaciones.

        ¿Seguro que desea escalar " +"suavemente la imagen?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "¿Escalar suavemente la imagen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Escalar suavem&ente la imagen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to smooth scale the selection?" +"

        " +msgstr "" +"

        El escalado suave de la selección a %1x%2 puede consumir una cantidad " +"importante de memoria, reduciendo la respuesta del sistema y ocasionando " +"posibles problemas a otras aplicaciones.

        ¿Seguro que desea escalar " +"suavemente la selección?

        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "¿Escalar suavemente la selección?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Escalar suavement&e la selección" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rotar la selección" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rotar la imagen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Después de rotar:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Dirección" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "A la &izquierda" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "A la &derecha" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Ángulo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &grados" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&rados" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 gr&ados" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Personalizado:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "grados" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to rotate the selection?

        " +msgstr "" +"

        La rotación de la selección a %1x%2 puede consumir una cantidad " +"importante de memoria, reduciendo la respuesta del sistema y ocasionando " +"posibles problemas de recursos a otras aplicaciones.

        ¿Seguro que desea " +"rotar la selección?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "¿Rotar la selección?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rot&ar la selección" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to rotate the image?

        " +msgstr "" +"

        La rotación de la imagen a %1x%2 puede consumir una cantidad " +"importante de memoria, reduciendo la respuesta del sistema y ocasionando " +"posibles problemas de recursos a otras aplicaciones.

        ¿Seguro que desea " +"rotar la imagen?

        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "¿Rotar la imagen?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rot&ar la imagen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Deformar la selección" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Deformar la imagen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Después de deformar:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

        Are you sure you want to skew the selection?

        " +msgstr "" +"

        La deformación de la selección a %1x%2 puede consumir una cantidad " +"importante de memoria, reduciendo la respuesta del sistema y ocasionando " +"posibles problemas de recursos a otras aplicaciones.

        ¿Seguro que desea " +"deformar la imagen?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "¿Deformar la selección?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "D&eformar la selección" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

        Are you sure you want to skew the image?

        " +msgstr "" +"

        La deformación de la imagen a %1x%2 puede consumir una cantidad " +"importante de memoria, reduciendo la respuesta del sistema y ocasionando " +"posibles problemas de recursos a otras aplicaciones.

        ¿Seguro que desea " +"deformar la imagen?

        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "¿Deformar la imagen?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "D&eformar la imagen" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Similitud de colores" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Distancia en el cubo de color &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Coincidencia exacta" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"¿Qué es la similitud de colores?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Guardar vista previa" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (aprox. %2%)" +msgstr[1] "%1 bytes (aprox. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "No se puede abrir «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"No se puede abrir «%1» - formato de imagen no implementado.\n" +"El archivo podría estar dañado." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "No se puede guardar la imagen - información insuficiente." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Tipo MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Error interno" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

        The %1 format may not be able to preserve all of the image's " +"color information.

        Are you sure you want to save in this format?

        " +msgstr "" +"

        Es posible que el formato %1 no sea capaz de preservar toda la " +"información del color de la imagen.

        ¿Seguro que desea guardar en este " +"formato?

        " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Formato de archivo con pérdidas" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

        Are " +"you sure you want to save at this color depth?

        " +msgstr "" +"

        Si guarda la imagen con la baja profundidad de color de %1 bits, es " +"posible que pierda información sobre el color. También se eliminará " +"cualquier transparencia.

        ¿Seguro que quiere guardarla con esta " +"profundidad de color?

        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Baja profundidad de color" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "No se puede guardar la imagen - no se puede crear el archivo temporal." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "No se puede guardar como «%1»: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Ha ocurrido un error al guardar la imagen" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "No se puede guardar la imagen - error en la carga." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Eliminar b&orde interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Eliminar borde interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Autorrec&ortar" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Autorrecorte" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint no puede eliminar el borde interno de la selección porque no se " +"ha podido localizar." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "No ha sido posible eliminar el borde interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint no puede recortar automáticamente la imagen porque su borde no " +"se ha podido encontrar." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "No ha sido posible recortar automáticamente" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Establecer como imagen" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selección: crear" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programa de pintura creado por KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Fundador del proyecto" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Investigador jefe" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Uso de escáner, implementación de alfa, encargado actual" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Iconos" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Implementación de InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efectos de imagen" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Conversión a KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Adaptación a KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Gracias a todas las personas que han ayudado a hacer este programa posible." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Archivos de imagen a abrir, opcionalmente" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Listar todos los tipos MIME de imágenes que se pueden leer" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Ver" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imagen" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Colores" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barra de herramientas principal" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra de herramientas de texto" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menú de contexto para selección de herramienta" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Editar" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Arrastre el asa con el botón izquierdo para redimensionar la imagen." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Redimensionar imagen: Permitir con todos los botones del ratón." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Redimensionar imagen: Botón derecho para cancelar." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "No se puede abrir la paleta de color «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"No se puede abrir la paleta de color «%1» - formato no admitido.\n" +"El archivo podría estar dañado." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "No se puede abrir la paleta de color de KDE «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "No se puede guardar la paleta de color como «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sin título" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Usar los predeterminados de KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Usar los de KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Abrir..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "V&olver a cargar" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Guardar" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "G&uardar como..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Añadir fila" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Eliminar la última fila" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Caja de color" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"La paleta de color «%1» ha sido modificada.\n" +"¿Desea guardarla?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"La paleta de color de KDE «%1» ha sido modificada.\n" +"¿Desea guardarla en un archivo?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"La paleta predeterminada de color ha sido modificada.\n" +"¿Desea guardarla en un archivo?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Abrir paleta de color" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"La paleta de color «%1» ha sido modificada.\n" +"Si la vuelve a cargar perderá todos los cambios realizados desde la última " +"vez que la guardó.\n" +"¿Seguro que desea continuar?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Volver a cargar" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"La paleta de color de KDE «%1» ha sido modificada.\n" +"Si la vuelve a cargar perderá todos los cambios realizados.\n" +"¿Seguro que desea continuar?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"La paleta de color predeterminada ha sido modificada.\n" +"Si la vuelve a cargar perderá todos los cambios realizados.\n" +"¿Seguro que desea continuar?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Guardar paleta de color como" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Pegar en ventana &nueva" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Eliminar selección" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opiar a archivo..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Pegar &desde archivo..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Texto: crear caja" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Texto: pegar" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint no puede pegar el contenido del portapapeles porque tiene un " +"formato desconocido." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "No se puede pegar" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Texto: eliminar caja" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selección: eliminar" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Texto: terminar" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selección: deseleccionar" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copiar en archivo" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Pegar desde archivo" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportar..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Escanear..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Obtener captura de pantalla" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Propiedades" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&Volver a cargar" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Todos los archivos permitidos (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Abrir imagen" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "La apertura del diálogo de escaneado ha fallado." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "El escaneado ha fallado" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Retardo de la instantánea" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " segundo" +msgstr[1] " segundos" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Sin retardo" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Ocultar la ventana principal" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Propiedades del documento" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Guardar imagen como" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportar" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"El documento «%1» ha sido modificado.\n" +"Si lo vuelve a cargar perderá todos los cambios realizados desde la última " +"vez que lo guardó.\n" +"¿Seguro que desea continuar?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"El documento «%1» ha sido modificado.\n" +"Si lo vuelve a cargar perderá todos los cambios realizados.\n" +"¿Seguro que desea continuar?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Imprimir imagen" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Debe guardar la imagen antes de enviarla.\n" +"¿Desea guardarla?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"El documento «%1» ha sido modificado.\n" +"¿Desea guardarlo?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&edimensionar / escalar..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Es&tablecer como imagen (recortar)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Voltear (de arriba abajo)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Espejo (horizontalmente)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rotar..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rotar a la &izquierda" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rotar a la &derecha" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "De&formar..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reducir a mo&nocromo (difuminado)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reducir a escala de &grises" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Invertir colores" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Borrar" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Hacer confidencial" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Más efectos..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imagen" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Selecc&ión" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Mostrar &ruta" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Dibujar con antialias" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Familia del tipo de letra" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Tamaño del tipo de letra" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Negrita" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Cursiva" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Subrayado" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Tachado" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Opción anterior de la herramienta (grupo #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Opción siguiente de la herramienta (grupo #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Opción anterior de la herramienta (grupo #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Opción siguiente de la herramienta (grupo #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Dibujar opaco" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Dibujar con similitud de colores..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Caja de herramientas" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Mostrar re&jilla" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Mostrar &miniatura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Ajustar ta&maño de la miniatura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Activar miniatura &rectangular" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Ampliación" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Obtener imagen" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "La apertura del escáner seleccionado ha fallado." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Brocha" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Dibujar utilizando brochas de distintas formas y tamaños" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Haga clic para dibujar puntos o arrastre para dibujar trazos." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Borrador de color" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Sustituye los píxeles del color de primer plano por el color de fondo" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Haga clic o arrastre para borrar píxeles del color de primer plano." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Borrador" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Permite borrar los errores" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Haga clic o arrastre para borrar." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Permitir con todos los botones del ratón." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Lápiz" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Dibuja puntos y trazos a mano alzada" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Aerógrafo" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Dibuja graffitis" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Pulse o arrastre para dibujar graffitis." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Pulse el botón derecho para cancelar." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Pulse el botón izquierdo para cancelar." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permite seleccionar un color de la imagen" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Haga clic para seleccionar un color." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Rellena zonas de la imagen" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Haga clic para rellenar una región." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Ampliación" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Amplía y reduce la imagen" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Pulse para ampliar/reducir, o arrastre con el botón izquierdo para ampliar " +"un área específica." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Curva" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Dibuja curvas" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Arrastre los puntos de inicio y fin." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Botón izquierdo para establecer el primer punto de control o botón derecho " +"para terminar." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Botón derecho para establecer el primer punto de control o botón izquierdo " +"para terminar." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Botón izquierdo para establecer el último punto de control o botón derecho " +"para terminar." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Botón derecho para establecer el último punto de control o botón izquierdo " +"para terminar." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Línea" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Dibuja líneas" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Arrastre para dibujar." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polígono" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Dibuja polígonos" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Arrastre para dibujar la primera línea." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Botón izquierdo para arrastrar otra línea o botón derecho para terminar." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Botón derecho para arrastrar otra línea o botón izquierdo para terminar." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Líneas conectadas" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Dibuja líneas conectadas" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Dibuja elipses y círculos" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rectángulo" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Dibuja rectángulos y cuadrados" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rectángulo redondeado" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Dibuja rectángulos y cuadrados con esquinas redondeadas" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Arrastre con el botón izquierdo para crear la selección." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Arrastre con el botón izquierdo para mover la selección." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Arrastre con el botón izquierdo para escalar la selección." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selección: opaca" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selección: transparente" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selección: color de transparencia" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selección: similitud de color de transparencia" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selección (elíptica)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Realiza una selección elíptica o circular" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selección (a mano alzada)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Realiza una selección de forma libre" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selección (rectangular)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Realiza una selección rectangular" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selección: mover" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: emborronar" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Escribe texto" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Texto: retroceso" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Texto: borrar" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Texto: nueva línea" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Texto: escribir" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Arrastre con el botón izquierdo para crear el área de texto." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Arrastre con el botón izquierdo para mover el área de texto." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Texto: mover caja" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" +"Arrastre con el botón izquierdo para cambiar el tamaño del área de texto." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Haga clic para cambiar la posición del cursor." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Texto: fondo opaco" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Texto: fondo transparente" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Texto: conmutar colores" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Texto: color de primer plano" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Texto: color de fondo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Texto: tipo de letra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Texto: tamaño del tipo de letra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Texto: negrita" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Texto: cursiva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Texto: subrayado" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Texto: tachado" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Modo sin ampliar - Miniatura" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

        This feature applies " +"to:

        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

        To configure it, click on the cube.

        " +msgstr "" +"

        La similitud de colores se refiere a qué similitud " +"deben tener los colores de diferentes píxeles para ser considerados el mismo " +"en ciertas operaciones.

        Si selecciona cualquier opción distinta de " +"Coincidencia exacta podrá trabajar más eficientemente con imágenes " +"difuminadas y fotos, de un modo comparable a la herramienta de «varita " +"mágica» de otros programas de dibujo.

        Esta característica se aplica a:" +"

        • Selecciones: en el modo transparente, cualquier " +"color de la selección que sea similar al color del fondo se hará " +"transparente.
        • Rellenar: en las regiones con píxeles de " +"colores similares (aunque no idénticos), un valor más alto rellenará " +"seguramente más píxeles.
        • Borrador de color: cualquier píxel " +"cuyo color sea similar al color del fondo será reemplazado con el " +"color del fondo.
        • Autorrecortar y Eliminar borde interno: en los bordes con píxeles de colores similares (aunque no " +"idénticos), un valor más alto recortará probablemente todo el borde.
        • Un valor más alto significa que las operaciones consideren que un " +"elevado número de colores sea lo suficientemente similar como para " +"ser el mismo. Por lo tanto, debería incrementar este valor si las " +"operaciones anteriores no están afectando a píxeles cuyos colores considere " +"usted que son bastante similares.

          Sin embargo, si estas operaciones " +"están teniendo demasiado efecto y están modificando píxeles cuyos colores no " +"considera usted que son similares (por ejemplo, si Rellenar está " +"cambiando demasiados píxeles), debería decrementar este valor.

          Para " +"configurarlo, haga clic sobre el cubo.

          " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

          Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

          If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

          This feature applies " +"to:

          • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
          • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
          • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
          • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

          Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

          However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

          " +msgstr "" +"

          La similitud de colores se refiere a qué similitud " +"deben tener los colores de diferentes píxeles para ser considerados el mismo " +"en ciertas operaciones.

          Si selecciona cualquier opción distinta de " +"Coincidencia exacta podrá trabajar más eficientemente con imágenes " +"difuminadas y fotos, de un modo comparable a la herramienta de «varita " +"mágica» de otros programas de dibujo.

          Esta característica se aplica a:" +"

          • Selecciones: en el modo transparente, cualquier " +"color de la selección que sea similar al color del fondo se hará " +"transparente.
          • Rellenar: en las regiones con píxeles de " +"colores similares (aunque no idénticos), un valor más alto rellenará " +"seguramente más píxeles.
          • Borrador de color: cualquier píxel " +"cuyo color sea similar al color del fondo será reemplazado con el " +"color del fondo.
          • Autorrecortar y Eliminar borde interno: en los bordes con píxeles de colores similares (aunque no " +"idénticos), un valor más alto recortará probablemente todo el borde.
          • Un valor más alto significa que las operaciones consideren que un " +"elevado número de colores sea lo suficientemente similar como para " +"ser el mismo. Por lo tanto, debería incrementar este valor si las " +"operaciones anteriores no están afectando a píxeles cuyos colores considere " +"usted que son bastante similares.

            Sin embargo, si estas operaciones " +"están teniendo demasiado efecto y están modificando píxeles cuyos colores no " +"considera usted que son similares (por ejemplo, si Rellenar está " +"cambiando demasiados píxeles), debería decrementar este valor.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Similitud de colores: %1%

            Pulse para configurar." + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Similitud de colores: coincidencia exacta

            Pulse " +"para configurar.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Brillo:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Re&iniciar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntraste:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Rei&niciar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "C&anales:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Todos" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rojo" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Azul" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Reiniciar &todos los valores" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Preferencias" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Cantidad:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "A&ctivar" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Colores" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tinte:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturación:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valor:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rojo" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Verde" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Azul" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Todos" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canales" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monocromo" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nocromo (difuminado)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 co&lores" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 colo&res (difuminado)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Color de 24 &bits" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reducir a" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularidad:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Para seleccionar el color con el que dibujarán las herramientas, haga " +"clic con el botón izquierdo sobre una celda de color. Por el contrario, para " +"seleccionar el color del fondo, haga clic con el botón derecho.

            Para " +"cambiar el color de una celda, haga doble clic sobre ella.

            También " +"puede intercambiar el color de dos celdas usando el método de arrastrar y " +"soltar. Si mantiene pulsada la tecla Control durante esta operación, " +"se sobrescribirá el color de la celda de destino (en lugar de intercambiarse " +"con el de la celda de origen).

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Convertir &a:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Cali&dad:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Previsualizar" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monocromo" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monocromo (difuminado)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 colores" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 colores (difuminado)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Color de 24 bits" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Posición de la i&magen" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centro de la página" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Esquina superior &izquierda" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparente" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Predeterminados de KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Colores: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Colores:%1 [modificada]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Círculo" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Cuadrado" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barra inversa" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Sin relleno" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Rellenar con el color de fondo" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Rellenar con el color de primer plano" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaco" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Ya existe un documento llamado «%1».\n" +#~ "¿Desea sobrescribirlo?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Ya existe una paleta de color llamada «%1».\n" +#~ "¿Desea sobrescribirla?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Un nivel de aumento que no sea múltiplo de 100 % puede ocasionar una " +#~ "edición poco precisa y errores al redibujar.\n" +#~ "¿Seguro que desea establecer el nivel de aumento a %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Establecer nivel de aumento a %1%" + +#~ msgid "None" +#~ msgstr "Ninguna" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            La modificación del tamaño de la imagen a %1x%2 puede consumir una " +#~ "cantidad importante de memoria, reduciendo la respuesta del sistema y " +#~ "ocasionando posibles problemas a otras aplicaciones.

            ¿Está seguro " +#~ "de que desea redimensionar la imagen?

            " + +#~ msgid "Overwrite" +#~ msgstr "Sobrescribir" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "No se puede abrir «%1» - tipo MIME desconocido." + +#~ msgid "Save Preview" +#~ msgstr "Guardar vista previa" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Visite el sitio web para obtener apoyo." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "No se ha encontrado ningún complemento que proporcione el diálogo para el " +#~ "escáner.\n" +#~ "Esto suele significar que el paquete que proporciona «ksaneplugin» no " +#~ "está instalado." + +#~ msgid "No Scanning Support" +#~ msgstr "Sin soporte de escáner" diff --git a/po/et/docs/kolourpaint/index.docbook b/po/et/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..2583155 --- /dev/null +++ b/po/et/docs/kolourpaint/index.docbook @@ -0,0 +1,1792 @@ + + + ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + + +]> + + + + +&kolourpaint;i käsiraamat + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; + Marek Laane
            bald@starman.ee
            Tõlge eesti keelde
            +
            + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2011-04-03 +&kde; 4.7 + + +&kolourpaint; on vaba ja hõlpsasti kasutatav &kde; joonistamisrakendus. + + + +kolourpaint +kdegraphics + + +
            + + +Sissejuhatus +&kolourpaint; on vaba ja hõlpsasti kasutatav &kde; joonistamisrakendus. See sobib suurepäraselt sellisteks igapäevasteks asjadeks, nagu: + + + +Joonistamine - diagrammide loomine ja käsitsijoonistused + + +Ekraanipiltide käitlemine - nende hankimine ja redigeerimine + + +Pilditöötlus - ekraanipiltide ja fotode redigeerimine ning efektide rakendamine + + +Ikoonitöötlus - ikoonipiltide ja logode joonistamine (ka läbipaistvalt) + + + + + + + + + + + + + +&kolourpaint;i kasutamine + +Klõpsa mõnel järgmistest viitadest &kolourpaint;i võimalustega tutvumiseks: + + + +Tööriistad + + +Värvide kasutamine + + +Vaatevalikud + + +Pildiefektid + + + + + +Tööriistad + + +Ekraanipiltide hankimine + +Ekraanipilt, nagu nimigi ütleb, näitab seda, mida näed oma ekraanil. Sellest võib olla abi seletamaks, mida sa oled ette võtnud konkreetse tulemuse saavutamiseks, või leitud vea näitamiseks. +Ekraanipildi redigeerimiseks &kolourpaint;is võib kasutada menüükäsku Fail Ekraanipildi võtmine, mille leiab &kolourpaint;i peamenüüst. + + + + + + + +Ilmuvas dialoogis saab muuta pildistamise viivitust (sekundites) ja valida peaakna peitmise pildistamise ajal. Kui oled ekraanipildi tegemiseks valmis, klõpsa lihtsalt OK. Ekraanipilt asetatakse otse &kolourpaint;i redigeerimisalasse. + + + +Tööriistade seletused + +Kiireim võimalus valida mõni &kolourpaint;i tööriist on vajutada sellega seotud kiirkorraldusele ehk klahvile. Millised need on, saab teada nii käesolevast käsiraamatust kui ka tööriistakasti kohtspikritelt. Kiirklahvi vajutamise ajal võib olla vajalik all hoida klahve &Alt;&Shift; - seda just siis, kui sisestad parajasti teksti, sest sel juhul üheklahvilised kiirkorraldused ei toimi. Näiteks pintsli valimiseks vajuta &Alt;&Shift;B või lihtsalt B (kui sa ei kirjuta parajasti teksti). + + + Pintsel (B) + + Värvikustutaja (O) + + Värvivalija (C) + + Ühendatud sirged (N) + + Kõver (V) + + Ellips (E) + + Kustutaja (A) + + Ülekanduv täitumine (F) + + Sirge (L) + + Pliiats (P) + + Hulknurk (G) + + Ristkülik (R) + + Ümardatud ristkülik (U) + + Valik (elliptiline) (I) + + Valik (vabakäsi) (M) + + Valik (ristkülikuline) (S) + + Pihusti (Y) + + Tekst (T) + + + + + +Pintsel <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Joonistamiseks klõpsa või lohista pintslit. + + + + + + + + + + + + + + +Klõpsa mõnel kujundil pintslikuju valimiseks. Kasutada on võimalik ümarat, ruudukujulist ning kahtpidi diagonaalset pintslit. + + + + + + +&HVN;ga saab joonistada esiplaani värvi, &HPN;ga tausta värvi. + + + +Värvivalija <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Esiplaani värvi määramiseks klõpsa pikslil hiire vasaku nupuga. Taustavärvi määramiseks klõpsa pikslil &HPN;ga. Pärast seda naaseb &kolourpaint; eelnevalt valitud tööriista juurde. + + + + +Ühendatud sirged ja hulknurk <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Ühendatud sirgete joonistamiseks klõpsa ja lohista hiirt. Hulknurki joonistatakse samamoodi, ainult et algus- ja lõpp-punkt ühendatakse automaatselt hulknurga loomiseks. + +&HVN;ga saab joonistada esiplaani värvi, &HPN;ga tausta värvi, samuti muuta vastupidiseks hulknurka täitva värvi. + +Võimalik on määrata sirge laius. Hulknurga korral saab ka määrata täitmise stiili. + + + + +Kõver <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klõpsa ja lohista sirge joonistamiseks - nii määrad algus- ja lõpp-punkti. Lohistades saab määrata kuni kaks kontrollpunkti. Kõvera lõpetamiseks mõlemat kontrollpunkti kasutades või kasutamata jättes klõpsa hiire teise nupuga. Kõvera tööriist joonistab Bezier' kõvera. + +&HVN;ga saab joonistada esiplaani värvi, &HPN;ga tausta värvi. + +Võimalik on ka määrata sirge laius. + + + + +Ellips <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Ellipsi joonistamiseks klõpsa ja lohista hiirt. + +&HVN;ga saab joonistada esiplaani värvi, &HPN;ga tausta värvi, samuti muuta vastupidiseks täitevärvi. + +Võimalik on ka määrata sirge laius ja täitmise stiil. + +Lisavõimalusi pakuvad muuteklahvid: + + + +Hoia all klahv &Shift; ja joonista hiirt lohistades ring. + + +Ellipsi joonistamiseks enda määratud keskpunktiga hoia all klahvi &Ctrl;, klõpsa keskpunktile ja lohista hiirt, kuni ellips on just vajaliku suuruse ja kujuga. + + +Ringi joonistamiseks enda määratud keskpunktiga hoia all klahvi &Ctrl;, klõpsa keskpunktile ja lohista hiirt, kuni ring on just vajaliku suurusega. + + + + + + +Kustutajad + + +Kustutaja <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klõpsa ja lohista kustutajat vigade kõrvaldamiseks. + + +Erinevalt muudest tööriistadest joonistavad kustutajad taustavärvi. Esiplaani värvi joonistamiseks on mõeldud &HPN;. + + +Kustutaja töötab ainult ruuduga. Muude kujundite, näiteks ringide jaoks, võta kasutusele pintsel ja &HPN;. + + +Topeltklõpsuga kustutaja ikoonil saab eemaldada terve pildi. See on võrdväärne pildimenüüst käsu Puhasta valimisega. + + + + + +Värvikustutaja <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klõpsa ja lohista hiirt esiplaani pikslite asendamiseks taustavärviga. Kõigi esiplaani värvi sarnaste (kuid mitte tingimata täpselt samade) pikslite asendamiseks näiteks pseudotoonitud piltidel ja fotodel määra värvisarnasuse väärtuseks midagi muud kui täpne. + + +Erinevalt muudest tööriistadest joonistavad kustutajad taustavärvi. Taustavärvi pikslite asendamiseks esiplaani värviga on mõeldud &HPN;. + + +Kustutaja suurust on võimalik seadistada. + + +Topeltklõps värvikustutaja ikoonil rakendab seda tervele pildile. + + + + + + +Ülekanduv täitmine <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klõpsa mingi piirkonna täitmiseks. Pseudotoonitud piirkonna täitmiseks määra värvisarnasuse väärtuseks midagi muud kui täpne. + +&HVN; täidab esiplaani värvi, &HPN; taustavärvi. + + + +Sirge <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Sirge joonistamiseks klõpsa ja lohista hiirt. + +&HVN;ga saab joonistada esiplaani värvi, &HPN;ga tausta värvi. + +Võimalik on ka määrata sirge laius. + + + + + + + + + + + + + + + + + + + + + +Klahvi &Ctrl; all hoides saab joonistada sirgeid 30-kraadiste vahedega, nagu näitab punane diagramm. + + +Klahvi &Shift; all hoides saab joonistada sirgeid 45-kraadiste vahedega, nagu näitab sinine diagramm. + + +Klahve &Ctrl; ja &Shift; all hoides saab joonistada sirgeid 30- või 45-kraadiste vahedega, nagu näitab roheline diagramm. + + + + + + +Pliiats <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klõpsa punkti joonistamiseks või klõpsa ja lohista hiirt vabakäesirge joonistamiseks. + +&HVN;ga saab joonistada esiplaani värvi, &HPN;ga tausta värvi. + + + + +Ristkülikud <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klõpsa ja lohista hiirt ristküliku joonistamiseks. Ümardatud ristkülik on ristkülik ümarate nurkadega. + +&HVN;ga saab joonistada esiplaani värvi, &HPN;ga tausta värvi, samuti muuta vastupidiseks täitevärvi. + +Võimalik on ka määrata sirge laius ja täitmise stiil. + +Lisavõimalusi pakuvad muuteklahvid: + + + +Klahvi &Shift; all hoides saab hiirt lohistades joonistada ruudu. + + +Ristküliku joonistamiseks enda määratud keskpunktiga hoia all klahvi &Ctrl;, klõpsa keskpunktile ja lohista hiirt, kuni ristkülik on just vajaliku suuruse ja kujuga. + + +Ruudu joonistamiseks enda määratud keskpunktiga hoia all klahve &Ctrl; ja &Shift;, klõpsa keskpunktile ja lohista hiirt, kuni ruut on just vajaliku suurusega. + + + + + + +Valikud <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Valiku tööriistadega saab joonistada valiku piirjooned. + +Valiku liigutamiseks klõpsa ja lohista seda hiirega. Vajadusel liigub ka peavaade kaasa, võimaldades liigutada valiku pildi parajasti mittenähtavasse osasse. + +Sangu kasutades on võimalik valikut sujuvalt skaleerida või selle suurust muuta. Proportsioonide säilitamiseks hoia skaleerimise ajal all klahv &Shift;. Klõps &HPN;ga avab kontekstimenüü, millest leiab levinumad redigeerimiskäsud ja pildiefektid. + + +Valiku piirjooni joonistades või liigutades võib kasutada ka nooleklahve. + + +Kui vajutada enne valiku liigutamist alla klahv &Ctrl;, saab liigutada valiku koopia. Kui aga hoida all klahv &Shift;, saab valikut nihutada. + + + + + + + + + + + + + +Valikul on kaks režiimi: läbipaistmatu (vaikimisi) ja läbipaistev. Kui kasutad viimast, on kõik taustavärvi pikslid näha. See võimaldab valiku ilma taustata asetada. Tausta eraldamiseks pseudotoonitud pildil määra värvisarnasuse väärtuseks midagi muud kui täpne. + + + + + + +Valikule võib rakendada ka pildiefekte - vaata selle kohta lähemalt pildiefektide osa. + + + +Pihusti <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klõpsa ja lohista hiirt pihusti kasutamiseks. Hiirenuppu all hoides saab pihusti värvijuga tihendada. + + + + + + + + + + + + + +Klõpsa mõnel ruudukesel kustutaja suuruse valimiseks. Võimalik on valida suuruste 9x9, 17x17 ja 29x29 vahel. + + + + + + +&HVN;ga saab joonistada esiplaani värvi, &HPN;ga tausta värvi. + + + + +Tekst <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klõpsa ja loo hiirt lohistades ala, kuhu soovid teksti kirjutada. Niipea kui näeb piiret, võid hakata teksti kirjuta,a. Loodud kasti serval klõpsates saab seda lohistada teise kohta, samuti on võimalik selle suurust muuta ka sangu lohistades või vastavas dialoogis. + + +Kui oled tekstikastist väljunud, saad käsuga Võta tagasi uuesti teksti redigeerima asuda. + + + +Läbipaistva värvi kasutamine + + + + + + + + +Vasakul on näidispilt. Paremal on sama pilt, millele on lisatud läbipaistmatu esiplaani ja taustavärviga tekst. + + + + + + + + + +Vasakul on pildile lisatud läbipaistmatu esiplaani värvi ja läbipaistva taustavärviga tekst. Paremal on pildile lisatud läbipaistva esiplaani värvi ja läbipaistmatu taustavärviga tekst. + + + + +Üldised tööriistade valikud + + + + + + + + + + + + + +Klõpsa mõnel ruudukesel kustutaja suuruse valimiseks. Võimalik on valida ruutude vahel, mille küljepikkuseks on 2, 3, 5, 9, 17 ja 29 pikslit. + +Kustutaja suurus mõjutab kustutajaid. + + + + + + + + + + + +Klõpsa mõnel joonel laiuse valimiseks. Võimalik on valida laiuse 1, 2, 3, 5 ja 8 pikslit vahel. + +Sirge laius mõjutab ühendatud sirgeid, kõveraid, ellipseid, sirgeid, hulknurki, ristkülikuid ja ümardatud ristkülikuid. + + + + + + + + + + + +Klõpsa mõnel ristkülikul täitmise stiili valimiseks. Võimalusteks on täitmise puudumine, taustavärviga täitmine ja esiplaani värviga täitmine. Täitmise stiil mõjutabellipseid, hulknurki, ristkülikuid ja ümardatud ristkülikuid. + + + + + + + + + + +Värvide kasutamine + + +Värvikast + + + + + + + +Värvikast + + + + +Värvikast koosneb kolmest põhiosast: värvitabloo, värvipalett ja värvisarnasuse valija. + +Värvitabloo näitab parajasti kehtivat esiplaani värvi ruudukesena teise ruudu peal, mis tähistab parajasti kehtivat taustavärvi. &HVN;ga lohistamisel kasutatakse esiplaani, &HPN;ga lohistamisel taustavärvi (välja arvatud kustutajate puhul). Kahe otsaga noolel klõpsates saab esiplaani ja taustavärvi vahetada. + +Värvipalett näitab värve, mille seast valida. Läbipaistev püramiid näitab läbipaistvat värvi. Hiire vasaku nupu klõpsuga värvil saab määrata esiplaani, parema nupu klõpsuga taustavärvi. Samuti võib läbipaistmatu värvi lohistada värvitabloo ruudukestele. Värvi muutmiseks tablool või paletil tee sellel topeltklõps. Värvivalija võimaldab valida pildilt mõne värvi. + +Värvisarnasuse valija võimaldab paremini toime tulla pseudotoonitud piltide ja fotodega, sarnanedes mitmes muus joonistamisprogrammis kasutatava võlukepiga. See mõjutab läbipaistvat valikut, samuti ülekanduvat täitmist, värvikustutajat ja automaatset kärpimist / sisepiirde eemaldamist. Topeltklõpsuga värvisarnasuse valijal saab määrata, milliseid sarnaseid värve tuleks hinnata ühesuguseks. Valiku kasutamisel läbipaistvuse korral muudetakse iga värv valikus, mis on sarnane taustavärviga, samuti läbipaistvaks. + + + + + + + + + +Vasakul on näha näidispilt. Paremal näeb ülekanduva täitmise tulemust, mille puhul värvisarnasuseks on 5%, 15% ja 30%. Toodud näites täidetakse valiku Täpne korral asukohas (80,100) ainult üks piksel, sest ümbritsevad pikslid on küll sarnased, aga mitte samased. Värvisarnasuse suurendamisel peetakse aina suuremat hulka sarnase värviga piksleid samaseks ning vastavalt suureneb ka täitmise ala. + + + + + +Vaatevalikud + + +Vaatevalikute seletused + +Suurendus koos alusvõrguga +Pisipilt + + + + +Suurendus koos alusvõrguga +Suurendab, et pilte saaks täpsemalt muuta, või vähendab, et näha korraga rohkem pildist. + + +Kui suurendustase ei ole täpselt 100%-kordne, võivad mõningad pildi osad nendega tegelemisel paista liikuvat. Ebatraditsioonilise suurendustaseme kasutamisel võib ette tulla ka muid väiksemaid pildi esitamise probleeme. + + +Suurendustasemel 400% või enam (aga 100%-kordse väärtusega) on mõttekas lülitada sisse alusvõrgu näitamine, mis lubab iga pikslit täpsemini muuta. + + + + + + + + + + + + + + + +Esimene pilt näitab tekstitööriista ikooni, teine aga sedasama suurendusega 600% ja alusvõrguga. + + +Teine viis suurendamiseks ajal, mil sa ei joonista, on kerida hiire rattaga, hoides samal ajal all klahvi &Ctrl;. + + + + + +Pisipilt + + + + + + + +Kui valitud on suurendatud pisipildi režiim, näidatakse kogu pilti, mida vajadusel skaleeritakse, et see pisipildiaknasse mahuks (pilt üleval paremal). +Vastasel juhul näitab pisipilt pilti nii palju kui aknasse mahub alates peavaate ülemisest vasakust nurgast (pilt all paremal). + + + + + +Pildiefektid + + +Pildiefektide seletused +Automaatne kärpimine / Sisepiirde eemaldamine +Balanss +Puhastamine +Kohrutus +Kihtide ühendamine +Pea peale (ülemine pool alla) +Värvide inverteerimine +Värvide taandamine +Taandamine halltoonidesse +Taandamine ühevärviliseks (pseudotoonitud) +Peegeldamine (horisontaalselt) +Suuruse muutmine / skaleerimine +Pööramine +Määramine pildiks (kärpimine) +Pööramine nurgeti +Pehmendus ja teravdus +Rohkem efekte +Märkused + + + +Automaatne kärpimine / Sisepiirde eemaldamine + +See eemaldab automaatselt pildi või valiku piirde. Kasuta automaatset kärpimist, kui sul on tegemist kujundiga, mis ei mahu tervele pildile ning soovid eemaldada ülearuse tühjuse. Pseudotoonitud pildipiirdega pildi automaatseks kärpimiseks tuleb kasutada ka värvisarnasuse valija abi. + + + + +Balanss + +Seda võimalust saab kasutada dialoogis Rohkem efekte. + + + + + + + + +See võimaldab määrata pildi või valiku heleduse, kontrasti ja gamma. + + +Gamma kõige levinum väärtus (kümnendarv vahemikus 0,10 kui 10,00) asub keritava kasti Gamma ja nupu Lähtesta vahel. + + + + +Puhastamine + +See täidab kogu pildi või valiku taustavärviga. + + +Topeltklõps kustutaja ikoonil lubab puhastada kogu pildi. + + + + + +Kohrutus + +Seda võimalust saab kasutada dialoogis Rohkem efekte. + + + + + + + + +Kohrutusefekti kasutamiseks märgi ära Lubatud. See rõhutab pildi või valiku servi ja tekitab "graveeringu" mulje. + + + +Kihtide ühendamine + +Seda võimalust saab kasutada dialoogis Rohkem efekte. + + + + + + + + +See muudab pildi värvi, tekitades seal kahe valitud värvi mitmesuguseid varjundeid. + + + +Pea peale (ülemine pool alla) + +See peegeldab kogu pilti või valikut vertikaalselt. + + + + +Värvide inverteerimine + +Seda võimalust saab kasutada dialoogis Rohkem efekte. + + + + + + + + +See muudab iga piksli punase, rohelise ja sinise komponendi vastupidiseks. Selle abil saab näiteks fotost teha negatiivi ja vastupidi, kui valida Kõik. Üldiselt on see päris naljakas. + + +Kõigi RGB-kanalite kiireks inverteerimiseks ei ole dialoog vajalik. Selle asemel saab kasutada käsku Inverteeri värvid, mille leiab menüüst Pilt või Valik. Kirje Valik leiab menüüribalt ainult siis, kui kasutad mõnda valikutööriista. Lisaks saab seda kasutada kontekstimenüüst, kui teha &HPNga; klõps pildialal. + + + + + +Peegeldamine (horisontaalselt) + +See peegeldab kogu pilti või valikut horisontaalselt. + + + + +Värvide taandamine + +Seda võimalust saab kasutada dialoogis Rohkem efekte. + + + + + + + + +See taandab pildi või valiku värvide arvu pseudotoonimist kasutades või ilma. + +Pseudotoonimine tagab tavaliselt parema kvaliteedi, kuid kunsti huvides võib olla mõttekas seda mitte kasutada - nt. Ühevärviline annab ühevärviline (pseudotoonitud) asemel kasutades tulemuseks vahva silueti. + +Teine oluline erinevus seisab selles, et kui Ühevärviline (pseudotoonitud) taandab alati kogu pildi või valiku mustvalgeks, siis Ühevärviline teeb seda ainult juhul, kui pildil või valikul on üle kahe värvi. + + +Pildi või valiku kiireks taandamiseks pseudotoonitud ühevärviliseks kasuta käsku Taanda ühevärviliseks (pseudotoonitud), mille leiab menüüst Pilt või Valik. Kirje Valik leiab menüüribalt ainult siis, kui kasutad mõnda valikutööriista. Lisaks saab seda kasutada kontekstimenüüst, kui teha &HPNga; klõps pildialal. + + + +Värvide arvu muutmine siin ei mõjuta failivormingu värvisügavust. Kui soovid muuta värvisügavust, tuleb see valida faili salvestamise dialoogis. Pane siiski tähele, et värvisügavuse muutmine muudab ühtlasi ka värvide arvu. + + + + +Taandamine halltoonidesse + +See taandab kogu pildi või valiku halltoonidesse. + + + + +Taandamine ühevärviliseks (pseudotoonitud) + +See taandab kogu pildi või valiku mustvalgeks. + + +Kui sa ei soovi pildi või valiku pseudotoonimist, kasuta dialoogi Värvide taandamine. + + + + +Suuruse muutmine / skaleerimine + + + + + + + + + +Suuruse muutmine muudab pildi mõõtmeid ilma sisu kuidagi muutmata. Skaleerimisega saab pildi sisu venitada uutesse mõõtmetesse. Sujuv skaleerimine tagab üldiselt parema tulemuse kui lihtne skaleerimine, seset nii liidetakse ka naabervärvid. + +Uued mõõtmed võib määrata pikslites või protsendina algsuurusest. Kui valida võimalus Proportsioon säilitatakse, skaleeritakse laiust ja kõrgust ühevõrra. + + +Sangu kasutades saab valikut vabalt sujuvalt skaleerida või selle suurust muuta. + + + +Valiku korral saab kasutada ainult skaleerimist, tekstikastide korral ainult suuruse muutmist. Vaata märkuste osast täpsemalt, kuidas neid efekte rakendada. + + + + +Pööramine + + + + + + + + + +See pöörab pilti. Võimalik on määrata pööramise nurk ja suund. + + +Pööramise suuna saab muuta vastupidiseks negatiivset pööramisnurka määrates. + + + +Vaata märkuste osast täpsemalt, kuidas seda efekti valikule rakendada. + + + + +Määra pildiks (kärbi) + +See määrab valiku pildiks. + + +Seda saab kasutada ainult aktiivse valiku olemasolul. + + + + +Pööramine nurgeti + + + + + + + + + +See pöörab kogu pilti või valikut horisontaalselt ja/või vertikaalselt. + + +Vaata märkuste osast täpsemalt, kuidas seda efekti valikule rakendada. + + + + +Pehmendus ja teravdus + +Seda võimalust saab kasutada dialoogis Rohkem efekte. + + + + + + + + +Sellega saab pilti pehmendada või teravdada. + + + + +Rohkem efekte + +Selles dialoogis saab kasutada võimalusi Balanss, Kohrutus, Kihtide ühendamine, Värvide inverteerimine, Värvide taandamine ning Pehmendus ja teravdus. + + + +Märkused + +Suuruse muutmine, pööramine ja pööramine nurgeti võivad muuta pildi mõõtmeid. Uusi mõõtmeid saab näha dialoogis. + +Nende efektide rakendamisel pildile muudetakse vajaduse korral selle suurust. Kui aga rakendad neid valikule, ei muudeta pildi suurust isegi juhul, kui muudetud valik sellesse enam ei sobi. + + + + + + + + + +Vasakpoolset pilti on pööratud 30 kraadi päripäeva, mis annab tulemuseks parempoolse pildi. &kolourpaint; suurendab automaatselt pilti, et see sobituks suurema sisuga. + + + + + + + + + +Vasakpoolset valikut on pööratud 30 kraadi päripäeva, mis annab tulemuseks parempoolse valiku. Pildi suurus jääb samaks, seepärast ei ole osa valikust näha muidu kui pildi suurust muutes. + + + + + +Autorid ja litsents + +Carl Tucker +See ei ole võib-olla kõige täpsem dokumentatsioon, võib-olla ka mitte täielik, aga kindlasti on see aus dokumentatsioon. + + +&kolourpaint; +Rakenduse autoriõigus © 2003, 2004, 2005: &Clarence.Dang; &Clarence.Dang.mail; + +&kolourpaint;i spetsiifiliste ikoonide autoriõigus © 2004, 2005: Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk. + +Dokumentatsiooni ja selle kunstilise vormistuse autoriõigus © 2004, 2005: &Thurston.Dang; &Thurston.Dang.mail;. + +Mõned osad on loaga kopeeritud aadressilt . + +Tõlge eesti keelde: Marek Laane bald@smail.ee +&underFDL; Programmi litsents on järgmine: + +Autoriõigus © 2003, 2004, 2005: &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + +Paigaldamine + +&kolourpaint;i hankimine +&install.intro.documentation; Uusimad väljalasked koos varasemate &kde; versioonide toetusega leiab aadressilt http://kolourpaint.sourceforge.net/. + + + + +Kompileerimine ja paigaldamine + + +Kui sa loed seda &abikeskus;es, tähendab see seda, et &kolourpaint; on juba sinu arvutisse paigaldatud ja sul ei ole siintoodud juhistega suurt midagi peale hakata. + &install.compile.documentation; + + + +&documentation.index; +
            + + diff --git a/po/et/kolourpaint.po b/po/et/kolourpaint.po new file mode 100644 index 0000000..a9298a9 --- /dev/null +++ b/po/et/kolourpaint.po @@ -0,0 +1,3003 @@ +# translation of kolourpaint4.po to Estonian +# Marek Laane , 2004-2005, 2007-2008. +# Hasso Tepper , 2004. +# Marek Laane , 2009, 2010, 2011, 2012, 2016, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2020-06-03 20:33+0300\n" +"Last-Translator: Marek Laane \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.12.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Marek Laane" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "qiilaq69@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balanss" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Pehmendus" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Teravdus" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Puhasta" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Valik: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Kohrutus" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Kihtide ühendamine" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Taanda halltooni" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Toon, küllastus, väärtus" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Värvide inverteerimine" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverteerimine" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Taandamine ühevärviliseks (pseudotoonitud)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Taandamine ühevärviliseks" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Taandamine 256 värvile (pseudotoonitud)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Taandamine 256 värvile" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogrammi ekvalaiser" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Peegelda" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Peegelda horisontaalselt ja vertikaalselt" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Peegelda horisontaalselt" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Peegelda vertikaalselt" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Tekst: Kasti suuruse muutmine" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Valik: Skaleerimine" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Valik: Sujuv skaleerimine" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Muuda suurust" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skaleeri" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Skaleeri sujuvalt" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Pööra" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Pööra nurgeti" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Võta tagasi: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Võta tagasi" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Tee uuesti: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Tee uuesti" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Võta tagasi: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Võta tagasi" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Tee uuesti: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Tee uuesti" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "veel %1 element" +msgstr[1] "veel %1 elementi" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Värvivalija" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Ülekanduv täitmine" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Rohkem pildiefekte (valik)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Rohkem pildiefekte" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Värvide taandamine" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Pehmendus ja teravdus" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumendi omadused" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Punkti tolli kohta (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Täpsustamata" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horisontaalne:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertikaalne:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Punkti tolli kohta (DPI) määrab pikslite arvu pildil, mida " +"trükkida ühes tollis (2,54 cm).

            Mida suurem on pildi DPI, seda väiksem " +"on trükitud pilt. Pane tähele, et sinu printer suudab vaevalt trükkida kõrge " +"kvaliteediga pilte, kui suurendad väärtuse enam kui 300 või 600 DPI-le (see " +"sõltub muidugi printerist).

            Kui soovid trükkida pildi samas suuruses, " +"nagu see on ekraanil, vali ka DPI väärtused ekraaniga samad.

            Kui " +"mõlemad DPI väärtused ons Täpsustamata, trükitakse pilt samuti " +"ekraaniga samas suuruses.

            Kõik pildivormingud ei toeta DPI väärtusi. " +"Kui vorming, millesse pildi salvestad, DPI väärtusi ei toeta, siis neid ka " +"ei salvestata.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Nihe" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Nihe on suhteline asukoht, kuhu pilt tuleb võrreldes teiste " +"piltidega asetada.

            Kõik pildivormingud ei toeta nihet. Kui " +"vorming, millesse oma pildi salvestad, seda ei toeta, siis siin määratud " +"väärtusi ei salvestata.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Tekstiväljad" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Lis&a rida" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Kustuta rida" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "Lä&htesta" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Tekstiväljad pakuvad pildi kohta lisainfot. See on " +"põhimõtteliselt kommentaariala, kuhu võib kirjutada mida tahes.

            Siiski " +"on tegemist konkreetse vormindusega, mida teoreetiliselt võivad täita arvuti " +"poolt tõlgendatavad andmed, mida sa ei peaks muutma, kuid see on üldiselt " +"väheusutav.

            Kõik pildivormingud ei toeta tekstivälju. Kui " +"vorming, millesse oma pildi salvestad, neid ei toeta, siis neid ka ei " +"salvestata.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Võti" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Väärtus" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Teksti väärtus \"%1\" real %2 nõuab võtit." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Kõik tekstivõtmed peavad olema unikaalsed. Tekstivõti \"%1\" real %2 ja %3 " +"on ühesugune." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Vigased tekstiväljad" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Mõõtmed" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Originaal:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Eelvaatlus" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Uuenda" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Suuruse muutmine / skaleerimine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Rakenda&takse:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Kogu pilt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Valik" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Tekstikast" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Tegevus" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Suuruse muutmine: pildi suurust suurendatakse uusi alasid " +"paremale ja/või alla luues (mis täidetakse taustavärviga) või vähendatakse " +"pilti paremalt ja/või alt kärpides.
            • Skaleerimine: pilti " +"suurendatakse piksleid paljundades või surutakse kokku piksleid ära visates." +"
            • Sujuv skaleerimine : sama, mis Skaleerimine, ainult " +"et naaberpikslid liidetakse, et tulemuspilt paistaks ühtlasem.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Suu&ruse muutmine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skaleerimine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Su&juv skaleerimine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Laius:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Kõrgus:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Uus:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Protsent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Säilit&atakse proportsioon" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Tekstikastile mõõtmete %1x%2 andmine võib võtta tublisti mälu. See " +"kahandab süsteemi reageerimisvõimet ja võib tekitada ressursiprobleeme " +"muudele töötavatele rakendustele.

            Kas tõesti muuta tekstikasti suurust?" +"

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Kas muuta tekstikasti suurust?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Muuda t&ekstikasti suurust" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Pildile mõõtmete %1x%2 andmine võib võtta tublisti mälu. See kahandab " +"süsteemi reageerimisvõimet ja võib tekitada ressursiprobleeme muudele " +"töötavatele rakendustele.

            Kas tõesti muuta pildi suurust?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Kas muuta pildi suurust?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "M&uuda suurust" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Pildi skaleerimine mõõtmetele %1x%2 võib võtta tublisti mälu. See " +"kahandab süsteemi reageerimisvõimet ja võib tekitada ressursiprobleeme " +"muudele töötavatele rakendustele.

            Kas tõesti skaleerida pilt?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Kas skaleerida pilt?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Skal&eeri pilt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Valiku skaleerimine mõõtmetele %1x%2 võib võtta tublisti mälu. See " +"võib kahandada süsteemi reageerimisvõimet ja tekitada ressursiprobleeme " +"teistele töötavatele rakendustele.

            Kas tõesti skaleerida valik?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Kas skaleerida valik?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Skal&eeri valik" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Pildi sujuv skaleerimine mõõtmetele %1x%2 võib võtta tublisti mälu. " +"See kahandab süsteemi reageerimisvõimet ja võib tekitada ressursiprobleeme " +"muudele töötavatele rakendustele.

            Kas tõesti skaleerida pilt sujuvalt?" +"

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Kas skaleerida pilt sujuvalt?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Skal&eeri pilt sujuvalt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Valiku sujuv skaleerimine mõõtmetele %1x%2 võib võtta tublisti mälu. " +"See võib kahandada süsteemi reageerimisvõimet ja tekitada ressursiprobleeme " +"teistele töötavatele rakendustele.

            Kas tõesti skaleerida valik " +"sujuvalt?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Kas skaleerida valik sujuvalt?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Skal&eeri valik sujuvalt" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Valiku pööramine" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Pildi pööramine" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Pärast pööramist:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Suund" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "V&astupäeva" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Pä&ripäeva" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Nurk" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 kraa&di" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 kraad&i" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &kraadi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Kohandat&ud:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "kraadi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Valiku pööramine mõõtmetele %1x%2 võib võtta tublisti mälu. See võib " +"kahandada süsteemi reageerimisvõimet ja tekitada ressursiprobleeme teistele " +"töötavatele rakendustele.

            Kas tõesti pöörata valik?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Kas pöörata valik?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "&Pööra valik" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Pildi pööramine mõõtmetele %1x%2 võib võtta tublisti mälu. See " +"kahandab süsteemi reageerimisvõimet ja võib tekitada ressursiprobleeme " +"muudele töötavatele rakendustele.

            Kas tõesti pöörata pilt?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Kas pöörata pilt?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "&Pööra pilt" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Valiku nurgeti pööramine" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Pildi nurgeti pööramine" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Pärast nurgeti pööramist:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horisontaalne:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertikaalne:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Valiku pööramine nurgeti mõõtmetele %1x%2 võib võtta tublisti mälu. " +"See võib kahandada süsteemi reageerimisvõimet ja tekitada ressursiprobleeme " +"teistele töötavatele rakendustele.

            Kas tõesti pöörata valik nurgeti?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Kas pöörata valik nurgeti?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&Pööra valik nurgeti" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Pildi pööramine nurgeti mõõtmetele %1x%2 võib võtta tublisti mälu. " +"See kahandab süsteemi reageerimisvõimet ja võib tekitada ressursiprobleeme " +"muudele töötavatele rakendustele.

            Kas tõesti pöörata pilt nurgeti?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Kas pöörata pilt nurgeti?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&Pööra pilt nurgeti" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Värvisarnasus" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB värvikuubi vahemaa" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Täpne sobivus" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Mis on värvisarnasus?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Salvestamise eelvaatlus" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 bait (umbes %2%)" +msgstr[1] "%1 baiti (umbes %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "\"%1\" avamine nurjus." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" avamine nurjus - tundmatu pildivorming.\n" +"Võib-olla on fail vigane." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Pildi salvestamine nurjus - infot napib." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"MIME tüüp: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Sisemine tõrge" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Vorming %1 ei pruugi säilitada kogu pildi värviinfot.

            Kas tõesti salvestada selles vormingus?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Kadudega failivorming" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Pildi salvestamine vähese %1-bitise värvisügavusega võib tuua kaasa " +"värviinfo kao. Kaob ka kogu läbipaistvus.

            Kas tõesti salvestada selle " +"värvisügavusega?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Vähene värvisügavus" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Pildi salvestamine nurjus - ajutise faili loomine nurjus." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Salvestamine kui \"%1\" nurjus: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Tõrge pildi salvestamisel" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Pildi salvestamine nurjus - üleslaadimine nurjus." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "&Eemalda sisepiire" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Sisepiirde eemaldamine" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Aut&omaatne kärpimine" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automaatne kärpimine" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint ei suuda eemaldada valiku sisepiiret, sest seda pole võimalik " +"tuvastada." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Sisepiirde eemaldamine nurjus" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint ei saa pilti automaatselt kärpida, sest selle piirde tuvastamine " +"nurjus." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Automaatne kärpimine nurjus" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Määra pildiks (kärbi)" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Valik: loo" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "KDE joonistamisrakendus" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projekti rajaja" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Peauurija" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Skannimise toetus, alfa toetus, praegune hooldaja" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikoonid" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Sisestusmeetodi toetus" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Pildiefektid" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 port" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF5 port" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Tänusõnad ka paljudele teistele, kes on rakenduse juures kaasa aidanud." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Avatavad pildifailid (lisavõimalus)" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vaade" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "P&ilt" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "Vä&rvid" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Peamine tööriistariba" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Tekstiriba" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Valikuvahendi kontekstimenüü" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Redigeerimine" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Pisipilt" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Pildi suuruse muutmiseks lohista sanga." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Pildi suuruse muutmine: kasutame kõiki hiirenuppe." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Pildi suuruse muutmine: paremklõps lõpetab." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Värvipaleti \"%1\" avamine nurjus." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Värvipaleti \"%1\" avamine nurjus - tundmatu vorming.\n" +"Võib-olla on fail vigane." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "KDE värvipaleti \"%1\" avamine nurjus." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Värvipaleti salvestamine kui \"%1\" nurjus." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Nimetu" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "KolourPainti vaikeväärtused" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE vaikeväärtused" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Ava..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Laa&di uuesti" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Salvesta" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Sa&lvesta kui..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Lisa rida" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Kustuta viimane rida" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Värvikast" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Värvipaletti \"%1\" on muudetud.\n" +"Kas salvestada see?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE värvipaletti \"%1\" on muudetud.\n" +"Kas salvestada see failina?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Vaikimisi värvipaletti on muudetud.\n" +"Kas salvestada see failina?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Värvipaleti avamine" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Värvipaletti \"%1\" on muudetud.\n" +"Taaslaadimisel kaotad kõik pärast viimast salvestamist tehtud muudatused.\n" +"Kas tõesti tahad seda?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Laa&di uuesti" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE värvipaletti \"%1\" on muudetud.\n" +"Taaslaadimisel kaotad kõik muudatused.\n" +"Kas tõesti tahad seda?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Vaikimisi värvipaletti on muudetud.\n" +"Taaslaadimisel kaotad kõik muudatused.\n" +"Kas tõesti tahad seda?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Värvipaleti salvestamine" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Aseta &uues aknas" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Kustuta valik" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opeeri faili..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Aseta &failist..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Tekst: Loo kast" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Tekst: Aseta" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint ei saa asetada lõikepuhvri sisu, sest selle vorming on " +"tundmatu." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Asetamine nurjus" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Tekst: Kustuta kast" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Valik: Kustuta" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Tekst: Lõpeta" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Valik: Tühista valik" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopeerimine faili" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Failist asetamine" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Eksport..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skaneeri..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Ekraanipildi võtmine" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Omadused" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Laa&di uuesti" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Kõik toetatud failid (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Pildi avamine" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Skannimisdialoogi avamine nurjus." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Skannimine nurjus" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Pildistamise viivitus" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekund" +msgstr[1] " sekundit" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Puudub" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Peaakna peitmine" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumendi omadused" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Pildi salvestamine" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Eksport" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokumenti \"%1\" on muudetud.\n" +"Taaslaadimisel kaotad kõik pärast viimast salvestamist tehtud muudatused.\n" +"Kas tõesti tahad seda?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokumenti \"%1\" on muudetud.\n" +"Taaslaadimisel kaotad kõik muudatused.\n" +"Kas tõesti tahad seda?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Pildi trükkimine" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"See pilt tuleb enne saatmist salvestada.\n" +"Kas salvestada pilt?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokumenti \"%1\" on muudetud.\n" +"Kas salvestada see?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Muuda suurust / skal&eeri..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "&Määra pildiks (kärbi)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Pea peale (ülemine pool alla)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Peegeldamine (horisontaalselt)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "Pöö&ra..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Pööra vasaku&le" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Pööra &paremale" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Pööra &nurgeti..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Taa&nda ühevärviliseks (pseudotoonitud)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Taanda &halltooni" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inverteeri värvid" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Puhasta" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Muuda konfidentsiaalseks" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Rohke&m efekte..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "P&ilt" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Val&ik" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Asu&koha näitamine" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Antialiasega näitamine" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Fondi perekond" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Fondi suurus" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Rasvane" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kaldkiri" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Allajoonitud" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Läbikriipsutatud" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Eelmine tööriista valik (grupp #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Järgmine tööriista valik (grupp #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Eelmine tööriista valik (grupp #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Järgmine tööriista valik (grupp #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Joonista läbipaistmatult" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Joonista värvisarnasusega..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Tööriistakast" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Alusvõr&gu näitamine" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "P&isipildi näitamine" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Pisipiltide suurendusrežii&m" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Pisipiltide &ristküliku lubamine" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Suurendus" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Pildihõive" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Valitud skanneri avamine nurjus." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pintsel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Joonistamine erineva kuju ja suurusega pintslitega" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Klõpsa punkti joonistamiseks või lohista kriipsu tõmbamiseks." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Värvikustutaja" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Asendab esiplaani värvi pikslid taustavärviga" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Klõpsa või lohista esiplaani värvi pikslite kustutamiseks." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Kustutaja" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Võimaldab vead kõrvaldada" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Klõpsa või lohista kustutamiseks." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Kasutame kõiki hiirenuppe." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pliiats" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Joonistab punkte ja vabakäejooni" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Pihusti" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Pihustab graffitit" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Klõpsa või lohista pihustamiseks." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Paremklõps lõpetab." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Vasakklõps lõpetab." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Võimaldab valida pildilt värvi" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Klõpsa värvi valimiseks." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Täidab pildi piirkondi" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Klõpsa piirkonna täitmiseks." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Suurendus" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Pildi suurendamine ja vähendamine" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Klõpsa pildi suurendamiseks/vähendamiseks või lohista vasaku nupuga " +"konkreetse ala suurendamiseks." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kõverjoon" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Joonistab kõverjooni" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Lohista algus- ja lõpp-punkti märkimiseks." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Vasaku nupuga lohistamine esimese pöördepunkti määramiseks või parem klõps " +"lõpetamiseks." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Parema nupuga lohistamine esimese pöördepunkti määramiseks või vasak klõps " +"lõpetamiseks." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Vasaku nupuga lohistamine viimase pöördepunkti määramiseks või parem klõps " +"lõpetamiseks." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Parem nupuga lohistamine viimase pöördepunkti määramiseks või vasak klõps " +"lõpetamiseks." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Sirge" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Joonistab sirgeid" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Lohista joonistamiseks." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Hulknurk" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Joonistab hulknurki" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Lohista esimese sirge joonistamiseks." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Vasaku nupuga lohistamine teine sirge või parem klõps lõpetamiseks." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Parema nupuga lohistamine teine sirge või vasak klõps lõpetamiseks." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Murdjoon" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Joonistab ühendatud sirgeid" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellips" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Joonistab ellipseid ja ringjooni" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Ristkülik" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Joonistab ristkülikuid ja ruute" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Ümardatud ristkülik" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Joonistab ristkülikuid ja ruute ümarate nurkadega" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Vasakuga lohistamine valiku loomiseks." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Vasakuga lohistamine valiku liigutamiseks." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Vasakuga lohistamine valiku skaleerimiseks." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Valik: läbipaistmatu" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Valik: läbipaistev" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Valik: läbipaistvuse värv" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Valik: läbipaistvuse värvi sarnasus" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Valik (elliptiline)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Sooritab elliptilise või ringjoonelise valiku" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Valik (vabakäsi)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Võimaldab sooritada vabakäevaliku" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Valik (ristkülikuline)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Võimaldab sooritada ristkülikulise valiku" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Valik: Liiguta" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Määri laiali" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Kirjutab teksti" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Tekst: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Tekst: Kustuta" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Tekst: Uus rida" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Tekst: Kirjuta" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Vasakuga lohistamine tekstikasti lohistamiseks." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Vasakuga lohistamine tekstikasti liigutamiseks." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Tekst: Liiguta kasti" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Vasakuga lohistamine tekstikasti suuruse muutmiseks." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Vasakklõps kursori asukoha muutmiseks." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Tekst: Läbipaistmatu taust" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Tekst: Läbipaistev taust" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Tekst: Vaheta värvid" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Tekst: Esiplaani värv" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Tekst: Taustavärv" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Tekst: Font" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Tekst: Fondi suurus" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Tekst: Rasvane" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Tekst: Kaldkiri" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Tekst: Allajoonitud" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Tekst: Läbikriipsutatud" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Suurenduseta režiim - Pisipilt" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Pisipilt" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Värvisarnasus näitab, kui sarnased peavad olema " +"erinevate pikslite värvid, et toimingud peaksid neid üheks värviks.

            Kui valid midagi muud kui täpne sobivus, saad tõhusamalt " +"käsitleda pseudotoonitud pilte ja fotosid - umbes nii, nagu teistes " +"joonistusrakendustes \"võlukepiga\".

            Seda võimalust saab kasutada " +"järgmistel juhtudel:

            • Valikud: läbipaistvas režiimis " +"muudetakse läbipaistvaks iga valiku värv, mis on sarnane " +"taustavärviga.
            • Ülekanduv täitmine: sarnaste, aga mitte " +"ühesugust värvi pikslitega piirkondade puhul täidab suurem väärtus " +"arvatavasti rohkem piksleid.
            • Värvikustutaja: kõik pikslid, " +"mille värv on sarnane esiplaani värviga, asendatakse taustavärviga.
            • Automaatne kärpimine ja Sisepiiri eemaldamine: " +"sarnaste, aga mitte ühesugust värvi pikslitega piiri korral kärbib " +"suurem väärtus arvatavasti kogu piiri.

            Suurem väärtuis tähendab " +"seda, et toiming peab suuremat värvivahemikku piisavalt sarnaseks ehk " +"sisuliselt üheks värviks. Seepärast tuleb suurendada väätust, kui mainitud " +"toimingud ei mõjuta piksleid, mille värve sina pead piisavalt sarnaseks.

            Kui aga toimingu mõju on liiga suur ja muutma hakatakse piksleid, mis " +"sinu meelest ei ole sarnased (nt. kui ülekanduv täitmine muudab liiga " +"palju piksleid),tuleks väärtust vähendada.

            Seadistamiseks klõpsa " +"kuubile.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Värvisarnasus näitab, kui sarnased peavad olema " +"erinevate pikslite värvid, et toimingud peaksid neid üheks värviks.

            Kui valid midagi muud kui täpne sobivus, saad tõhusamalt " +"käsitleda pseudotoonitud pilte ja fotosid - umbes nii, nagu teistes " +"joonistusrakendustes \"võlukepiga\".

            Seda võimalust saab kasutada " +"järgmistel juhtudel:

            • Valikud: läbipaistvas režiimis " +"muudetakse läbipaistvaks iga valiku värv, mis on sarnane " +"taustavärviga.
            • Ülekanduv täitmine: sarnaste, aga mitte " +"ühesugust värvi pikslitega piirkondade puhul täidab suurem väärtus " +"arvatavasti rohkem piksleid.
            • Värvikustutaja: kõik pikslid, " +"mille värv on sarnane esiplaani värviga, asendatakse taustavärviga.
            • Automaatne kärpimine ja Sisepiiri eemaldamine: " +"sarnaste, aga mitte ühesugust värvi pikslitega piiri korral kärbib " +"suurem väärtus arvatavasti kogu piiri.

            Suurem väärtuis tähendab " +"seda, et toiming peab suuremat värvivahemikku piisavalt sarnaseks ehk " +"sisuliselt üheks värviks. Seepärast tuleb suurendada väätust, kui mainitud " +"toimingud ei mõjuta piksleid, mille värve sina pead piisavalt sarnaseks.

            Kui aga toimingu mõju on liiga suur ja muutma hakatakse piksleid, mis " +"sinu meelest ei ole sarnased (nt. kui ülekanduv täitmine muudab liiga " +"palju piksleid),tuleks väärtust vähendada.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Värvisarnasus: %1%

            Klõpsa seadistamiseks.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Värvisarnasus: täpne sobivus

            Klõpsa seadistamiseks." +"

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "Ere&dus:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Lähte&sta" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Läh&testa" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanalid:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Kõik" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Punane" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Roheline" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Sinine" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Lähtest&a kõik väärtused" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Seadistused" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "Ko&gus:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Lu&batud" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Värvid" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Toon:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "Värvikülla&stus:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Väärtus:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Punane" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Roheline" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Sinine" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Kõik" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanalid" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "Ü&hevärviline" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Üh&evärviline (pseudotoonitud)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 vä&rvi" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 &värvi (pseudotoonitud)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bitine värv" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Taandamise tulemus" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Teralisus:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Esiplaani värvi valimiseks, millega tööriistad joonistavad, klõpsa " +"hiire vasaku nupuga värvilahtril. Taustavärvi valimiseks klõpsa hiire parema " +"nupuga.

            Värvilahtri enda värvi muutmiseks tee sellel topeltklõps.

            Lahtrite värve saab vahetada ka lohistades. Kui hoida all klahvi " +"Ctrl, kirjutatakse sihtlahtri värv üle, mitte ei vahetata läthelahtri " +"värviga.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "&Teisendatakse:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kvalitee&t:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Eelvaatlus" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Ühevärviline" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Ühevärviline (pseudotoonitud)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 värvi" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 värvi (pseudotoonitud)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitine värv" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "&Pildi asukoht" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Lehekülje keskel" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&Lehekülje ülemises vasakus nurgas" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Läbipaistev" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPainti vaikeväärtused" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Värvid: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Värvid: %1 [muudetud]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Ring" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Ruut" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Kaldkriips" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Kurakaldkriips" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Täitmiseta" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Täida taustavärviga" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Täida esiplaani värviga" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Läbipaistmatu" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Dokument nimega \"%1\" on juba olemas.\n" +#~ "Kas kirjutada see üle?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Värvipalett nimega \"%1\" on juba olemas.\n" +#~ "Kas kirjutada see üle?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Suurendusele väärtuse andmine, mis ei ole 100% kordne, toob kaasa " +#~ "ebatäpsust.\n" +#~ "Kas soovid tõesti määrata suurenduseks %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Suurenduse määramine väärtusega %1%" + +#~ msgid "None" +#~ msgstr "Puudub" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Pildile mõõtmete %1x%2 andmine võib võtta tublisti mälu. See " +#~ "kahandab süsteemi reageerimisvõimet ja võib tekitada ressursiprobleeme " +#~ "muudele töötavatele rakendustele.

            Kas tõesti muuta pildi suurust?" + +#~ msgid "Overwrite" +#~ msgstr "Kirjuta üle" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "\"%1\" avamine nurjus - tundmatu MIME tüüp." + +#~ msgid "Save Preview" +#~ msgstr "Salvestamise eelvaatlus" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Toetuse hankimiseks külasta palun veebilehekülge." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Skanneridialoogi pakkuvat pluginat ei leitud.\n" +#~ "See tähendab tavaliselt, et ksaneplugin'it pakkuv pakett on paigaldamata." + +#~ msgid "No Scanning Support" +#~ msgstr "Skaneerimise toetus puudub" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Skaneerimise toetust pole paigaldatud." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            KolourPaint ei suuda lõikepuhvri sisu asetada, sest andmed kadusid " +#~ "ootamatult ära.

            See juhtub tavaliselt siis, kui rakendus, mille " +#~ "andmed lõikepuhvris olid, suletakse.

            " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "&Ekraanipiltide võtmine" + +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            Ekraanipildi võtmiseks vajuta %1. Ekraanipilt asetatakse " +#~ "lõikepuhvrisse, kust selle saab asetada KolourPainti.

            Kiirklahvi " +#~ "Töölaua pildistamine saab muuta KDE Süsteemi seadistuste moodulis " +#~ "Kiirklahvid.

            Teine võimalus " +#~ "on kasutada rakendust KSnapshot.

            " + +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            Paistab, et sa ei kasuta KDE-d.

            Kui oled KDE käivitanud:" +#~ "

            Ekraanipildi võtmiseks vajuta %1. Ekraanipilt " +#~ "asetatakse lõikepuhvrisse, kust selle saab asetada KolourPainti.

            Teine võimalus on kasutada rakendust KSnapshot.

            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Määra taustapi&ldiks (tsentreeritud)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Määra &taustapildiks (paanidena)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Enne pildi määramist taustapildiks tuleb see salvestada kohaliku " +#~ "failina.\n" +#~ "Kas soovid pildi salvestada?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Enne pildi määramist taustapildiks tuleb see salvestada.\n" +#~ "Kas salvestada pilt?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Taustapildi muutmine nurjus." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Valiku peegeldamine" + +#~ msgid "Flip Image" +#~ msgstr "Pildi peegeldamine" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Vertikaalne (pea alaspidi)" + +#~ msgid "&Horizontal" +#~ msgstr "&Horisontaalne" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Värvi ja läbipaistvusinfo kadu" + +#~ msgid "Loss of Color Information" +#~ msgstr "Värviinfo kadu" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Läbipaistvusinfo kadu" + +#~ msgid "" +#~ "

            KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

            To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

            " +#~ msgstr "" +#~ "

            KolourPaint ei toeta praegust ekraanisügavust %1 bpp. KolourPaint " +#~ "püüab käivituda, aga ei pruugi korralikult töötada.

            Probleemi " +#~ "vältimiseks muuda palun ekraanisügavuseks 24 bpp ja käivita KolourPaint " +#~ "uuesti.

            " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Toetamata ekraanirežiim" + +#~ msgid "" +#~ "

            This effect does not support the current screen depth of %1bpp.

            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            See efekt ei toeta praegust ekraanisügavust %1 bpp.

            Probleemi vältimiseks muuda palun ekraanisügavuseks 24 bpp ja " +#~ "käivita KolourPaint uuesti.

            " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Skaneerimine nurjus - videomälu napib." + +#~ msgid "Cannot Scan" +#~ msgstr "Skaneerimine nurjus" + +#~ msgid "&Flip..." +#~ msgstr "Keera üm&ber..." + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Asetatud pilt võib sisaldada rohkem värve kui aktiivne " +#~ "resolutsioon. Selle näitamiseks muudetakse mõningaid värve.

            Pildi salvestamisel muutub värvikadu püsivaks.

            Probleemi värltimiseks püüa oma ekraanisügavust suurendada vähemalt " +#~ "%1 bpp-ni ja käivita KolourPaint uuesti.


            Samuti sisaldab see " +#~ "läbipaistvust, mis pole täielikult toetatud. Läbipaistvuseandmeid " +#~ "kohendatakse 1-bitise maskiga.

            Pildi salvestamisel muutub " +#~ "läbipaistvuse kadu püsivaks.

            " + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Asetatud pilt võib sisaldada rohkem värve kui toetab aktiivne " +#~ "ekraanirežiim. Selle näitamiseks muudetakse mõningaid värve.

            Pildi salvestamisel muutub värvikadu püsivaks.

            Probleemi värltimiseks püüa oma ekraanisügavust suurendada vähemalt " +#~ "%1 bpp-ni ja käivita KolourPaint uuesti.

            " + +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Asetatud pilt sisaldab läbipaistvust, mis ei ole täielikult " +#~ "toetatud. Läbipaistvusandmete täpsust kohendatakse 1-bitise maskiga.

            Pildi salvestamisel muutub läbipaistvuse kadu püsivaks.

            " + +#~ msgid "

            There is nothing in the clipboard to paste.

            " +#~ msgstr "

            Lõikepuhvris pole midagi, mida asetada.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Pilt \"%1\" võib sisaldada rohkem värve kui toetab aktiivne " +#~ "ekraanirežiim. Selle näitamiseks võidakse eeamldada osa värviinfot.

            Pildi salvestamisel muutub värvikadu püsivaks.

            Probleemi vältimiseks suurenda oma ekraanisügavust vähemalt %2 bpp-" +#~ "ni ja käivita KolourPaint uuesti.


            Samuti sisaldab see " +#~ "läbipaistvust, mis pole täielikult toetatud. Läbipaistvuseandmeid " +#~ "kohendatakse 1-bitise maskiga.

            Pildi salvestamisel muutub " +#~ "läbipaistvuse kadu püsivaks.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Pilt \"%1\" võib sisaldada rohkem värve kui toetab aktiivne " +#~ "ekraanirežiim. Selle näitamiseks võidakse eeamldada osa värviinfot.

            Pildi salvestamisel muutub värvikadu püsivaks.

            Probleemi vältimiseks suurenda oma ekraanisügavust vähemalt %2 bpp-" +#~ "ni ja käivita KolourPaint uuesti.

            " + +#~ msgid "" +#~ "

            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Pilt \"%1\" sisaldab läbipaistvust, mis pole täielikult toetatud. " +#~ "Läbipaistvuseandmeid kohendatakse 1-bitise maskiga

            Pildi " +#~ "salvestamisel muutub läbipaistvuse kadu püsivaks.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "\"%1\" avamine nurjus - videomälu napib." + +#~ msgid "Scanning Support" +#~ msgstr "Skaneerimise toetus" + +#~ msgid "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" +#~ msgstr "toolToolBarHiddenMenu" + +#~ msgid "Selection: Transparency" +#~ msgstr "Valik: Läbipaistvus" diff --git a/po/eu/kolourpaint.po b/po/eu/kolourpaint.po new file mode 100644 index 0000000..e5dd136 --- /dev/null +++ b/po/eu/kolourpaint.po @@ -0,0 +1,3028 @@ +# Translation for kolourpaint.po to Euskara/Basque (eu). +# Copyright (C) 2005-2018, Free Software Foundation. +# Copyright (C) 2019-2021, This file is copyright: +# This file is distributed under the same license as the kolourpaint package. +# KDE euskaratzeko proiektuko arduraduna . +# +# Translators: +# Marcos , 2005. +# Ion Gaztañaga , 2005. +# Iñaki Larrañaga Murgoitio , 2009. +# Enbata , 2009. +# Iñigo Salvador Azurmendi , 2011, 2018, 2020, 2021, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-10-11 07:08+0200\n" +"Last-Translator: Iñigo Salvador Azurmendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 22.08.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Ion Gaztañaga, Marcos Goyenetxe" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "igaztanaga@gmail.com, marcos@euskalgnu.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Oreka" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Bigundu" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Zorroztu" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Garbitu" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Hautapena: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Bozeldu" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Berdindu" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Bihurtu gris-eskalara" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Ñabardura, saturazioa, balioa" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Alderantzikatu koloreak" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Alderantzikatu" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Bihurtu monokromora (bilbatua)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Bihurtu monokromora" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Bihurtu 256 koloretara (bilbatua)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Bihurtu 256 koloretara" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogramaren ekualizadorea" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Irauli" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Irauli horizontalki eta bertikalki" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Irauli horizontalki" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Irauli bertikalki" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Testua: aldatu koadroaren tamaina" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Hautapena: eskalatu" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Hautapena: eskalatze leuna" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Aldatu tamaina" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Eskalatu" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Eskalatze leuna" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Biratu" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Okertu" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Desegin: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Desegin" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "Be&rregin: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "Be&rregin" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Desegin: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Desegin" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Berregin: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Berregin" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "elementu %1 gehiago" +msgstr[1] "%1 elementu gehiago" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Kolore-hautatzailea" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Betegarria" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Irudi-efektu gehiago (hautapena)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Irudi-efektu gehiago" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efektua:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Murriztu koloreak" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Bigundu eta zorroztu" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumentuaren propietateak" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Puntu &hazbeteko (dpi)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Zehaztu gabea" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontala:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Bertikala:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Puntu hazbeteko (DPI) unitateak irudiaren pixel kopurua " +"hazbete (2,54 cm) baten barruan zehazten du.

            Irudiaren DPIa zenbat " +"eta altuagoa izan hare eta txikiagoa izango da inprimatutako irudia. Jakin " +"ezazu balio hau 300 edo 600 dpi baino gehiagora handiagotzen baduzu, " +"litekeena da inprimagailuak kalitate altuagoan ezin inprimatzea, beti ere " +"inprimagailu motaren arabera noski.

            Irudiak pantailan daukan tamaina " +"berdinean inprimatzea nahi baduzu, ezarri irudiaren DPI balioa " +"pantailakoaren berdinarekin.

            DPIaren balioa Zehaztu gabea bada, " +"irudia pantailako tamaina berdinean inprimatu ahalko da baita ere.

            Irudien formatu batzuk ez dute DPI balioak onartzen. Gordetzen duzun " +"formatuak ez badu onartzen, balio horiek ez dira gordeko.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Desplazamendua" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Desplazamendua irudi hau kokatuta egon beharko lukeen posizio " +"erlatiboa da, beste irudi batzuekin konparatuz.

            Irudien formatu batzuk " +"ez dute Desplazamendua ezaugarria onartzen. Erabiltzen duzun " +"formatuak ez badu desplazamendua onartzen, hemen zehaztutako balioa ez da " +"gordeko.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Testuaren eremuak" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Gehitu errenkada" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Ezabatu errenkada" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "Be&rrezarri" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Testu eremuek irudiari buruzko informazio gehigarria " +"eskaintzen dute. Baliteke hau iruzkinentzako txokoa izatea nahi duzun " +"edozein testu bertan idazteko.

            Hala ere, formatuaren araberakoa denez, " +"teorikoki ordenagailuak interpreta ditzakeen datuak eduki ditzakete eremuok, " +"eta ez zenuke aldatu beharko, baina hori gertatzea ia ezinezkoa dela esan " +"daiteke.

            Irudien formatu batzuk ez dute Testuaren eremuak " +"onartzen. Erabiltzen duzun formatuak ez baditu onartzen, hauek ez dira " +"gordeko.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Gakoa" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Balioa" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Testuaren \"%1\" balioa gako bat behar du %2 lerroan." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Testuaren gako guztiak esklusiboak izan behar dute. Testuaren \"%1\" gakoa " +"%2 eta %3 lerroan berdinak dira." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Testu eremu baliogabeak" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimentsioak" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Jatorrizkoa:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Aurrebista" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Eguneratu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Aldatu tamaina / Eskalatu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Eragin hemen:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Irudi osoa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Hautapena" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Testu-koadroa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Eragiketa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Aldatu tamaina: irudiaren tamaina handituko da eskuinean " +"eta/edo behean area berriak sortuz (atzeko planoko kolorearekin beteko dira) " +"edo txikiagotu egingo da eskuinean eta/edo behean moztuz.
            • Eskalatu: irudia hedatuko da pixelak bikoiztuz edo txikiagotu " +"egingo da pixelak kenduz.
            • Eskalatze leuna: hau Eskalatu-ren berdina da baina bere inguruko pixelak nahasten ditu itxura leunagoko " +"irudi bat sortzeko.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Aldatu tamaina" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "E&skalatu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Es&kalatze leuna" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Zabalera:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Altuera:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Berria:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "E&hunekoa:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Mantendu &aspektu-erlazioa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Testu-koadroaren tamaina %1x%2 -(e)ra aldatzeak memoria kopuru handia " +"behar dezake. Honek sistemaren erantzuteko gaitasuna txikiagotu eta " +"aplikazioen baliabidetan arazoak sor ditzake.

            Ziur zaude testu-" +"koadroaren tamaina aldatzea nahi duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Testu-koadroaren tamaina aldatu?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "&Aldatu testu-koadroaren tamaina" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Irudiaren tamaina %1x%2-(e)ra aldatzeak memoria kopuru handia behar " +"dezake. Honek sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen " +"baliabideetan arazoak sor ditzake.

            Ziur zaude irudiaren tamaina " +"aldatzea nahi duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Irudiaren tamaina aldatu?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&Aldatu irudiaren tamaina" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Irudia %1x%2-(e)ra eskalatzeak memoria kopuru handia behar dezake. " +"Honek sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen " +"baliabideetan arazoak sor ditzake.

            Ziur zaude irudia eskalatzea nahi " +"duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Eskalatu irudia?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&Eskalatu irudia" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Hautapena %1x%2-(e)ra eskalatzeak memoria kopuru handia behar dezake. " +"Honek sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen " +"baliabideetan arazoak sor ditzake.

            Ziur zaude hautapena eskalatzea " +"nahi duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Eskalatu hautapena?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Eskalatu hautapena" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Irudia %1x%2-(e)ra leunki eskalatzeak memoria kopuru handia behar " +"dezake. Honek sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen " +"baliabideetan arazoak sor ditzake.

            Ziur zaude irudia leunki eskalatzea " +"nahi duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Leunki eskalatu irudia?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Eskalatu &leunki irudia" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Hautapena %1x%2-(e)ra leunki eskalatzeak memoria kopuru handia behar " +"dezake. Honek sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen " +"baliabideetan arazoak sor ditzake.

            Ziur zaude hautapena leunki " +"eskalatzea nahi duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Leunki eskalatu hautapena?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Eskalatu &leunki irudia" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Biratu hautapena" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Biratu irudia" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Biratu ondoren:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Norabidea" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Erlojuaren noratzaren &kontra" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Erlo&juaren noratzan" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Angelua" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 gra&du" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 gr&adu" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &gradu" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Pertsonalizatua:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "gradu" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Hautapena %1x%2-(e)ra biratzeak memoria kopuru handia behar dezake. " +"Honek sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen " +"baliabideetan arazoak sor ditzake.

            Ziur zaude hautapena biratzea nahi " +"duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Biratu hautapena?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Birat&u hautapena" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Irudia %1x%2-(e)ra biratzeak memoria kopuru handia behar dezake. " +"Honek sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen " +"baliabideetan arazoak sor ditzake.

            Ziur zaude irudia biratzea nahi " +"duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Biratu irudia?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "&Biratu irudia" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Okertu hautapena" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Okertu irudia" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Okertu ondoren:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontala:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Bertikala:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Hautapena %1x%2-(e)ra oketzeak memoria asko erabil dezake. Honek " +"sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen baliabideetan " +"arazoak sor ditzake.

            Ziur zaude hautapena okertzea nahi duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Okertu hautapena?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&Okertu hautapena" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Irudia %1x%2-(e)ra okertzeak memoria asko erabil dezake. Honek " +"sistemaren erantzuteko gaitasuna txikiagotu eta aplikazioen baliabideetan " +"arazoak sor ditzake.

            Ziur zaude irudia okertzea nahi duzula?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Okertu irudia?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "O&kertu irudia" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Koloreen antzekotasuna" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&GBU koloreen kuboaren distanzia" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Bat egite zehatza" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Zer da koloreen antzekotasuna?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Gorde aurrebista" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "Byte 1 (gutxi gorab. % %2)" +msgstr[1] "%1 byte (gutxi gorab. % %2)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Ezin izan da \"%1\" ireki." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Ezin izan da \"%1\" ireki - ez da irudiaren formatua onartzen.\n" +"Fitxategia hondatuta egon daiteke." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Ezin izan da irudia gorde - ez dago nahikoa informazio." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URLa: %1\n" +"MIME mota: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Barneko akatsa" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Agian %1 formatuak ezin izango du irudiaren kolore informazio " +"guztia gorde.

            Ziur zaude formatu honetan gorde nahi duzula?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Galeradun fitxategi-formatua" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Irudia %1 biteko kolore-sakonera baxuarekin gordetzean kolorearen " +"informazioa gal daiteke. Edozein gardentasun kenduko da.

            Ziur zaude " +"kolore-sakonera honekin gorde nahi duzula?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Kolore-sakonera baxua" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Ezin izan da irudia gorde - ezin da behin-behineko fitxategia sortu." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Ezin izan da «%1» bezala gorde: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Errorea irudia gordetzean" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Ezin izan da irudia gorde - erroea kargatzean." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Kendu barneko &ertza" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Kendu barneko ertza" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Auto-&mozketa" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Auto-mozketa" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint-ek ezin du hautapenaren barneko ertza kendu, ezin izan delako " +"aurkitu." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Ezin da barneko ertza kendu" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint-ek ezin du automatikoki irudia moztu, bere ertza ezin delako " +"kokatu." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Ezin da auto-moztu" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Ezarri irudi gisa" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Hautapena: sortu" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "KDEren margotzeko programa" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Proiektuaren sortzailea" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Ikertzaile-burua" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Eskaneatzeko euskarria, alfaren euskarria, uneko mantentzailea" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikonoak" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Sarrerako metodoaren euskarria" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Irudien efektuak" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 moldaketa" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF5 eratorpena" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Mila esker beste hainbati programa hau posible izaten laguntzeagatik." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Ireki beharreko irudi fitxategiak, aukera gisa" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Zerrendatu irudi irakurgarri guztien MIME motak" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Ikusi" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Irudia" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Koloreak" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Tresna-barra nagusia" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Testuaren tresna-barra" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Hautapen tresnaren laster-menua" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Editatu" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Koadro txikia" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" +"Arrastatu heldulekua ezkerreko botoiarekin irudiaren tamaina aldatzeko." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Aldatu irudiaren tamaina: saguaren botoi guztiak baimendu." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" +"Aldatu irudiaren tamaina: eskuin botoiarekin klik egin bertan behera uzteko." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Testua" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Ezin izan da \"%1\" kolore-paleta ireki." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Ezin izan da \"%1\" kolore-paleta ireki - ez da formatua onartzen.\n" +"Fitxategia hondatuta egon daiteke." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Ezin izan da KDEren \"%1\" kolore-paleta ireki." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Ezin izan da kolore-paleta \"%1\" gisa gorde." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Titulu gabea" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Erabili KolourPaint-en lehenespenak" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDErenak erabili" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Ireki..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Birkar&gatu" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Gorde" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Gorde &honela..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Gehitu errenkada" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Ezabatu azken errenkada" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Kolore-koadroa" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"\"%1\" kolore-paleta aldatu da.\n" +"Gorde nahi duzu?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDEko \"%1\" kolore-paleta aldatu da.\n" +"Fitxategi batean gordetzea nahi duzu?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Kolore-paleta lehenetsia aldatu da.\n" +"Fitxategi batean gordetzea nahi duzu?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Ireki kolore-paleta" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"\"%1\" kolore-paleta aldatu da.\n" +"Birkargatzean azken aldiz kargatu zenuenetik egindako aldaketak galduko " +"dituzu.\n" +"Ziur zaude?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Birkargatu" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDEko \"%1\" kolore-paleta aldatu da.\n" +"Birkargatzean aldaketa guztiak galduko dituzu.\n" +"Ziur zaude?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Kolore-paleta lehenetsia aldatu da.\n" +"Birkargatzean aldaketa guztiak galduko dituzu.\n" +"Ziur zaude?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Gorde kolore-paleta honela" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Itsatsi lehio &berrian" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Ezabatu hautapena" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opiatu fitxategian..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Itsatsi &fitxategitik..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Testua: sortu koadroa" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Testua: itsatsi" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint-ek ezin du itsatsi arbelaren edukia formatu ezezaguna " +"duelako." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Ezin da itsatsi" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Testua: ezabatu koadroa" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Hautapena: ezabatu" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Testua: amaitu" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Testua: desautatu" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopiatu fitxategira" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Itsatsi fitxategitik" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&sportatu..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Eskaneatu..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Egin pantaila-argazkia" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Propietateak" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Birkar&gatu" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Onartutako fitxategi guztiak (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Ireki irudia" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Huts egin du eskaneatzeko elkarrizketa-koadroa irekitzea." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Ezkaneatzea huts egin du" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Kapturaren atzerapena" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " segundo" +msgstr[1] " segundo" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Atzerapenik ez" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Ezkutatu leiho nagusia" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumentuaren propietateak" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Gorde irudia honela" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Esportatu" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"\"%1\" dokumentua aldatu da.\n" +"Birkargatzean azken aldiz kargatu zenuenetik egindako aldaketak galduko " +"dituzu.\n" +"Ziur zaude?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"\"%1\" dokumentua aldatu da.\n" +"Birkargatzean aldaketa guztiak galduko dituzu.\n" +"Ziur zaude?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Inprimatu irudia" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Bidali aurretik irudi hau gorde behar duzu.\n" +"Gorde nahi duzu?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"\"%1\" dokumentua aldatu da.\n" +"Gorde nahi duzu?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "T&amaina aldatu / Eskalatu..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Eza&rri irudi gisa (moztu)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Irauli (goitik-behera)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Ispilua (horizontalki)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Biratu..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Biratu e&zkerrera" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Biratu e&skuinera" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Okertu..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Bihurtu mo&nokromora (bilbatua)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Bihurtu &gris-eskalara" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Alderantzikatu koloreak" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Ga&rbitu" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Egin isilpekoa" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Efektu &gehiago..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Irudia" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Haut&apena" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Erakutsi &bide-izena" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Marraztu ertzak leunduta" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "% %1" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Letra-tipoen familia" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Letra-tamaina" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Lodia" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Etzana" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Azpimarratua" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Marratua" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Aurreko tresnaren aukera (1. taldea)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Hurrengo tresnaren aukera (1. taldea)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Aurreko tresnaren aukera (2. taldea)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Hurrengo tresnaren aukera (2. taldea)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Marraztu opakoa" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Marraztu koloreen antzekotasunarekin..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Tresna-koadroa" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Erakutsi &sareta" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Erakutsi &koadro txikiak" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Zoo&madun koadro txikien modua" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Gaitu koadro txikien &laukizuzena" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zooma" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Eskuratu irudia" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Hautatutako eskanerra irekitzea huts egin du." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Brotxa" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Marraztu forma eta tamaina desberdineko brotxak erabiliz" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Egin klik puntuak marrazteko edo arrastatu trazak marrazteko." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Koloreen borragoma" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Aurreko planoko kolorea atzeko planoko kolorearekin ordezten du" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Egin klik edo arrastatu aurreko planoaren koloreko pixelak ezabatzeko." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Borragoma" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Zure akatsak ezabatzeko aukera ematen dizu" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Egin klik edo arrastatu ezabatzeko." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Baimendu saguaren botoi guztiak." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Arkatza" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Puntuak eta pultsuan trazak marrazten ditu" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Aerografoa" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Graffiti-ak marrazten ditu" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Egin klik edo arrastatu graffitia marrazteko." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Eskuin-klik egin bertan behera uzteko." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Ezker-klik egin bertan behera uzteko." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Irudiko kolore bat hautatzeko aukera ematen dizu" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Egin klik kolore bat hautatzeko." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Bete irudiaren eskualdeak" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Egin klik eskualde bat betetzeko" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zooma" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Handiagotu eta txikiagotu irudiaren zooma" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Egin klik zooma handiagotzeko/txikiagotzeko edo ezker-arrastatu area zehatz " +"baten zooma egiteko." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kurba" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Marraztu kurbak" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Arrastatu eta mantendu hasierako eta amaierako puntuak." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Ezker-arrastatu lehen kontrol-puntua ezartzeko edo eskuin-klik egin " +"amaitzeko." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Eskuin-arrastatu lehen kontrol-puntua ezartzeko edo ezker-klik egin " +"amaitzeko." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Ezker-arrastatu azken kontrol-puntua ezartzeko edo eskuin-klik egin " +"amaitzeko." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Eskuin-arrastatu azken kontrol-puntua ezartzeko edo ezker-klik egin " +"amaitzeko." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Marra" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Marrak marrazten ditu" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Arrastatu marrazteko." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Poligonoa" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Poligonoak marrazten ditu" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Arrastatu lehen marra marrazteko." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Ezker-arrastatu beste marra bat arrastatzeko edo eskuin-klik egin amaitzeko." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Eskuin-arrastatu beste marra bat marrastatzeko edo ezker-klik egin amaitzeko." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Konektatutako marrak" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Marraztu konektatutako marrak" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipsea" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Elipseak eta zirkuluak marrazten ditu" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Laukizuzena" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Laukizuzenak eta karratuak marrazten ditu" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Biribildutako laukizuzena" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Ertz biribildun laukizuzen eta karratuak marrazten ditu" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Ezker-arrastatu hautapena sortzeko." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Ezker-arrastatu hautapena lekuz aldatzeko." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Ezker-arrastatu hautapena eskalatzeko." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Hautapena: opakoa" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Hautapena: gardena" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Hautapena: gardentasunaren kolorea" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Hautapena: gardentasun kolorearen antzekotasuna" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Hautapena (eliptikoa)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Hautapen eliptiko edo zirkular bat egiten du" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Hautapena (forma librekoa)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Forma libreko hautapen bat egiten du" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Hautapena (laukizuzena)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Hautapen laukizuzen bat egiten du" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Hautapena: lekuz aldatu" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: lohitu" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Testua idazten du" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Testua: atzera-tekla" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Testua: ezabatu" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Testua: lerro berria" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Testua: idatzi" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Ezker-arrastatu testu-koadroa sortzeko." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Ezker-arrastatu testu-koadroa mugitzeko." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Testua: mugitu koadroa" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Ezker-arrastatu testu-koadroaren tamaina aldatzeko." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Ezker-klik kurtsorearen posizioa aldatzeko." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Testua: atzeko planoa opakoa" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Testua: atzeko aplano gardena" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Testua: aldatu koloreak" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Testua: aurreko planoko kolorea" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Testua: atzeko planoko kolorea" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Testua: letra-tipoa" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Testua: letra-tamaina" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Testua: lodia" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Testua: etzana" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Testua: azpimarratua" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Testua: marratua" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Zoomik gabeko modua - Koadro txikia" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "% %1 - Koadro txikia" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Kolorearen antzekotasuna da pixel desberdinetako koloreak " +"zenbateraino antzekoak izan behar diren, eragiketek berdin gisa hartu " +"ditzaten.

            Erabat berdina ez den beste zerbaitekin ezartzen " +"baduzu, bilbatutako irudi eta argazkiekin hobeto lan egingo duzu, " +"marrazketako beste aplikazio batzuen \"makila magikoa\" moduaren parekoa " +"izanez.

            Eginbide hau honakoei aplikatzen zaie:

            • Hautapenak: gardena moduan, atzeko planoko " +"kolorearen antzekoa den hautapeneko edozein kolore garden jarriko da." +"
            • Betegarria: antzeko (baina ez berdinak) koloreko " +"pixelakdituzten eskualdeentzako, ezarpen altuago batek pixel gehiago beteko " +"ditu.
            • Koloreen borragoma: aurreko planoko kolorearen " +"antzeko koloreak dituzten edozein pixel atzeko planoko kolorearekin " +"ordeztuko da.
            • Auto-mozketa eta Kendu barneko ertza: " +"antzeko (baina ez berdinak) koloreko pixelak dituzten ertzentzako, " +"ezarpen altuago baten ertz osoago bat moztuko du.

            Ezarpen altuak " +"zera adierazten dute: nahiko antzekoak diren handitutako kolore-" +"barrutia eragiketek berdinak bezala hartzea. Horrela, ezarpena handiagotu " +"beharko zenuke gaineko eragiketek ez badiete eragiten zuk nahiko antzekotzat " +"hartzen dituzun pixeletan.

            Hala ere, efektu gehiegi jasotzen badute " +"eta antzeko koloreak ez direla uste dituzun pixelak aldatzen badute (adib. " +"Betegarriak pixel gehiegi aldatzen baditu), ezarpen hau gutxiagotu " +"dezakezu.

            Hau konfiguratzeko, egin klik kuboan.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Kolorearen antzekotasuna da pixel desberdinetako koloreak " +"zenbateraino antzekoak izan behar diren, eragiketek berdin gisa hartu " +"ditzaten.

            Erabat berdina ez den beste zerbaitekin ezartzen " +"baduzu, bilbatutako irudi eta argazkiekin hobeto lan egingo duzu, " +"marrazketako beste aplikazio batzuen \"makila magikoa\" moduaren parekoa " +"izanez.

            Eginbide hau honakoei aplikatzen zaie:

            " +"
            • Hautapenak: gardena moduan, atzeko planoko kolorearen " +"antzekoa den hautapeneko edozein kolore garden jarriko da.
            • Betegarria: antzeko (baina ez berdinak) koloreko " +"pixelakdituzten eskualdeentzako, ezarpen altuago batek pixel gehiago beteko " +"ditu.
            • Koloreen borragoma: aurreko planoko kolorearen " +"antzeko koloreak dituzten edozein pixel atzeko planoko kolorearekin " +"ordeztuko da.
            • Auto-mozketa eta Kendu barneko ertza: " +"antzeko (baina ez berdinak) koloreko pixelak dituzten ertzentzako, " +"ezarpen altuago baten ertz osoago bat moztuko du.

            Ezarpen altuak " +"zera adierazten dute: nahiko antzekoak diren handitutako kolore-" +"barrutia eragiketek berdinak bezala hartzea. Horrela, ezarpena handiagotu " +"beharko zenuke gaineko eragiketek ez badiete eragiten zuk nahiko antzekotzat " +"hartzen dituzun pixeletan.

            Hala ere, efektu gehiegi jasotzen badute " +"eta antzeko koloreak ez direla uste dituzun pixelak aldatzen badute (adib. " +"Betegarriak pixel gehiegi aldatzen baditu), ezarpen hau gutxiagotu " +"dezakezu.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Kolorearen antzekotasuna: % %1

            Egin klik " +"konfiguratzeko.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Kolorearen antzekotasuna: bat egite zehatza

            Egin " +"klik konfiguratzeko.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Distira:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Berre&zarri" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrastea:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&Berrezarri" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanalak:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Guztiak" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Gorria" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Berdea" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Urdina" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Berrezarri balio &guztiak" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Ezarpenak" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Kopurua:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Gaitu" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Koloreak" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Ñabardura:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturazioa:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Balioa:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Gorria" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Berdea" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Urdina" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Guztiak" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanalak" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monokromoa" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nokromoa (bilbatua)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 ko&lore" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 kolo&re (bilbatua)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&biteko kolorea" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Murriztu hona" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Pikortatzea:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Tresnek marrazteko erabiliko duten aurreko planoko kolorea " +"hautatzeko, egin klik ezkerreko botoiarekin kolorez betetako gelaxkan. " +"Atzeko planoko kolorea hautatzeko egin klik saguaren eskuineko botoiarekin.

            Kolore-gelaxka baten kolorea aldatzeko, egin klik bikoitza beraren " +"gainean.

            Betetako gelaxka baten kolorea beste gelaxka batekoarekin " +"truka dezakezu baita ere arrastatu eta jareginez. Gainera, Ktrl tekla " +"sakatuta edukiz, helburuko gelaxkaren kolorea gainidatziko da, iturburuko " +"gelaxkako kolorearekin trukatu ordez.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Bihurtu &hona:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kal&itatea:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Aurrebista" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monokromoa" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monokromoa (bilbatua)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 kolore" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 kolore (bilbatua)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-biteko kolorea" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "I&rudiaren kokapena" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Orrialdearen ze&ntrua" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Orrialdearen goi-e&zkerraldea" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Gardena" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint lehenespenak" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Koloreak: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Koloreak: %1 [aldatua]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Zirkulua" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Karratua" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Alderantzizko barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Betegarririk ez" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Bete atzeko planoko kolorearekin" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Bete aurreko planoko kolorearekin" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opakoa" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" izeneko dokumentua badago lehendik ere.\n" +#~ "Gainidatzi nahi duzu?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" izeneko kolore-paleta badago lehendik ere.\n" +#~ "Gainidatzi nahi duzu?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Zoomaren maila % 100-en multiploa ez den balio batera ezartzean " +#~ "zehaztasunik gabeko edizioa eta bistaratzeko erroreak sor ditzake.\n" +#~ "Ziur zaude zoomaren maila % %1 baliora ezarri nahi duzula?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Ezarri zooma % %1 mailara" + +#~ msgid "None" +#~ msgstr "Bat ere ez" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Irudia %1x%2 tamainara aldatzeak memoria asko erabil dezake. Honek " +#~ "sistemaren erantzuteko denbora txikiagotu eta aplikazioen baliabideetan " +#~ "arazoak sor ditzake.

            Ziur zaude irudiaren tamaina aldatzea nahi " +#~ "duzula?

            " + +#~ msgid "Overwrite" +#~ msgstr "Gainidatzi" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Ezin izan da \"%1\" ireki - MIME mota ezezaguna." + +#~ msgid "Save Preview" +#~ msgstr "Gordetzearen aurrebista" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Laguntza eskuratzeko, bisitatu webgunea." + +#~ msgid "No Scanning Support" +#~ msgstr "Eskaneatzea ez dago onartuta" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Eskanerraren euskarria ez dago instalatuta." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            KolourPaint-ek ezin ditu arbelaren edukia itsatsi, datuak " +#~ "ustekabean desagertu direlako.

            Hau normalean arbelaren arduraduna " +#~ "den aplikazioa itxi delako gertatzen da.

            " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Egin &pantaila-argazkiak" + +#, fuzzy +#~| msgid "" +#~| "

            To acquire a screenshot, press %1. The screenshot will be " +#~| "placed into the clipboard and you will be able to paste it in " +#~| "KolourPaint.

            You may configure the Desktop Screenshot " +#~| "shortcut in the KDE Control Center module Keyboard Shortcuts.

            Alternatively, you may try the " +#~| "application KSnapshot.

            " +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            Pantaila-argazki bat egiteko, sakatu %1. Pantaila-argazkia " +#~ "arbelean kokatuko da eta KolourPaint-en itsasteko aukera izango duzu.

            KDEren kontrol-zentruko Teklatua " +#~ "bidezko lasterbideak moduluan Mahaigainaren pantaila-argazkia " +#~ "lasterbidea konfigura dezakezu.

            Honez gain, KSnapshot aplikazioa erabil dezakezu.

            " + +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            Badirudi ez zaudela KDE ingurunean.

            KDE kargatu eta ondoren:" +#~ "

            Pantaila-argazkia egiteko, sakatu %1. Pantaila-" +#~ "argazkia arbelean jarriko da eta KolourPaint-en itsasteko aukera duzu.

            Honez gain, KSnapshot " +#~ "aplikazioa erabil dezakezu.

            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Ezarri &horma-paper gisa (zentratua)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Ezarri horma-paper gisa (&lauza moduan)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Irudi hau horma-papera bezala ezarri aurretik, fitxategi lokal bat bezala " +#~ "gorde behar duzu.\n" +#~ "Gorde nahi duzu?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Irudi hau horma-papera bezala ezarri aurretik, gorde egin behar duzu.\n" +#~ "Gorde nahi duzu?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Ezin izan da horma-papera aldatu." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Irauli hautapena" + +#~ msgid "Flip Image" +#~ msgstr "Irauli irudia" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Bertikala (goitik-behera)" + +#~ msgid "&Horizontal" +#~ msgstr "&Horizontala" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Kolore eta zeharrargitasunaren informazioaren galera" + +#~ msgid "Loss of Color Information" +#~ msgstr "Kolorearen informazioaren galera" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Zeharrargitasunaren informazioaren galera" + +#~ msgid "" +#~ "

            KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

            To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

            " +#~ msgstr "" +#~ "

            KolourPaint-ek ez du pantailaren uneko %1 bpp sakonera onartzen. " +#~ "KolourPaint abiatzen saiatuko da baina agian ez da ongi ibiliko.

            " +#~ "

            Arazo hau saihesteko, aldatu pantailaren sakonera 24 bpp baliora, " +#~ "ondoren berrabiarazi KolourPaint.

            " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Onartu gabeko pantailaren modua" + +#~ msgid "" +#~ "

            This effect does not support the current screen depth of %1bpp.

            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Efektu honek ez du pantailaren uneko %1 bpp sakonera onartzen.

            Arazo hau saihesteko, aldatu pantailaren sakonera 24 bpp baliora, " +#~ "ondoren berrabiarazi KolourPaint.

            " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Ezin da eskaneatu - memoria grafikorik gabe." + +#~ msgid "Cannot Scan" +#~ msgstr "Ezin da eskaneatu" + +#~ msgid "&Flip..." +#~ msgstr "&Irauli..." + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Itsasteko irudiak uneko pantailako moduak baino kolore gehiago " +#~ "izan ditzake. Bistaratzean, kolore batzuk gal daitezke.

            Irudi " +#~ "hau gordetzen baduzu, edozein kolore galera betirako izango da.

            Arazo hau saihesteko, saiatu pantailaren sakonera gutxienez %1bpp-" +#~ "etara handitzen, eta gero berrabiarazi KolourPaint.


            Guztiz " +#~ "onartzen ez den zeharrargitasuna ere badu. Zeharrargitasunaren datuak bit " +#~ "bakarreko gardentasun-maskarekin ordeztuko dira.

            Irudi hau " +#~ "gordetzen baduzu, zeharrargitasunaren galera betirako izango da.

            " + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Itsasteko irudiak uneko pantailako moduak baino kolore gehiago " +#~ "izan ditzake. Bistaratzean, kolore batzuk gal daitezke.

            Irudi " +#~ "hau gordetzen baduzu, edozein kolore galera betirako izango da.

            Arazo hau saihesteko, saiatu pantailaren sakonera gutxienez %1bpp-" +#~ "etara handitzen, eta gero berrabiarazi KolourPaint.

            " + +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Itsateko irudiak guztiz onartzen ez den zeharrargitasuna ere badu. " +#~ "Zeharrargitasunaren datuak bit bakarreko gardentasun-maskarekin ordeztuko " +#~ "dira.

            Irudi hau gordetzen baduzu, zeharrargitasunaren galera " +#~ "betirako izango da.

            " + +#~ msgid "

            There is nothing in the clipboard to paste.

            " +#~ msgstr "

            Ezdago ezer arbelean itsasteko.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            \"%1\" irudiak uneko pantailako moduak baina kolore gehiago izan " +#~ "ditzake. Bistaratzean, kolore batzuk gal daitezke.

            Irudi hau " +#~ "gordetzen baduzu, edozein kolore galera betirako galduko da.

            Arazo hau saihesteko , saiatu pantailaren sakonera gutxienez %2bpp-" +#~ "etara handitzen, eta ondoren berrabiarazi KolourPaint.


            Guztiz " +#~ "onartzen ez den zeharrargitasuna ere badu. Zeharrargitasun datuak bit " +#~ "bakarreko gardentasun-maskarekin ordezkatuko dira.

            Irudi hau " +#~ "gordetzen baduzu, zeharrargitasunaren galera betirako izango da.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            \"%1\" irudiak uneko pantailako moduak baina kolore gehiago izan " +#~ "ditzake. Bistaratzean, kolore batzuk gal daitezke.

            Irudi hau " +#~ "gordetzen baduzu, edozein kolore galera betirako galduko da.

            Arazo hau saihesteko , saiatu pantailaren sakonera gutxienez %2bpp-" +#~ "etara handitzen, eta ondoren berrabiarazi KolourPaint.

            " + +#~ msgid "" +#~ "

            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            \"%1\" irudiak guztiz onartzen ez den zeharrargitasuna ere badu. " +#~ "Zeharrargitasun datuak bit bakarreko gardentasun-maskarekin ordezkatuko " +#~ "dira.

            Irudi hau gordetzen baduzu, zeharrargitasunaren galera " +#~ "betirako izango da.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Ezin izan da \"%1\" ireki - memoria grafikorik gabe." + +#~ msgid "Scanning Support" +#~ msgstr "Eskanerraren euskarria" diff --git a/po/fa/kolourpaint.po b/po/fa/kolourpaint.po new file mode 100644 index 0000000..3b3ea16 --- /dev/null +++ b/po/fa/kolourpaint.po @@ -0,0 +1,2987 @@ +# translation of kolourpaint.po to Persian +# Elnaz Pazhouhi , 2006. +# Nasim Daniarzadeh , 2006, 2007. +# Mahdi Foladgar , 2006. +# Nazanin Kazemi , 2006, 2007. +# MaryamSadat Razavi , 2006. +# Tahereh Dadkhahfar , 2006. +# Mohammad Reza Mirdamadi , 2012. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2012-01-12 17:21+0330\n" +"Last-Translator: Mohammad Reza Mirdamadi \n" +"Language-Team: Farsi (Persian) <>\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "محمدرضا میردامادی , الناز پژوهی , نسیم دانیارزاده" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "mohi@ubuntu.ir , seventhsky_2006@yahoo.com , daniarzadeh@itland.ir" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "توازن" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "نرم کردن" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "تیز کردن" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "پاک کردن" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "گزینش: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "برجسته کردن" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "مسطح کردن" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "کاهش دادن به مقیاس خاکستری" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "رنگ، اشباع، مقدار" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "وارونه کردن رنگها" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "وارونه کردن" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "کاهش دادن به تک‌رنگ )مات(" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "کاهش دادن به تک‌رنگ" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "کاهش دادن به رنگ ۲۵۶ )مات(" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "کاهش دادن به رنگ ۲۵۶" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "قرینه‌سازی" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "قرینه‌سازی افقی و عمودی" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "قرینه‌سازی افقی" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "قرینه‌سازی عمودی" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "متن: تغییر اندازه جعبه" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "گزینش: مقیاس" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "گزینش: مقیاس هموار" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "تغییر اندازه" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "مقیاس" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "مقیاس هموار" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "چرخش" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "اریب" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&واگرد: %1‌" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&واگرد‌" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&از نو: %1‌" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&ازنو‌" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "واگرد: %1‌" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "واگرد" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "از نو: %1‌" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "ازنو" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 فقره بیشتر" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "برگزیننده رنگ" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "پر کردن کامل" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, fuzzy, kde-format +#| msgid "More Image Effects (Selection)" +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "جلوه‌های بیشتر تصویر )گزینش(" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "More Image Effects" +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "جلوه‌های بیشتر تصویر" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&اثر:‌" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "کاهش دادن رنگها" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "نرم کردن و تیز کردن" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, fuzzy, kde-format +#| msgid "Document Properties" +msgctxt "@title:window" +msgid "Document Properties" +msgstr "ویژگیهای سند" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "نقطه &در اینچ )DPI(‌" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "نامشخص" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, fuzzy, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "۱(x)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "افقی‌:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "عمودی‌:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&انحراف‌" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "حوزه‌های &متن‌" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&افزودن سطر‌" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&حذف سطر‌" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&بازنشانی‌" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "کلید" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "مقدار" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "مقدار متن »%1« در خط %2 به کلید نیاز دارد." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, fuzzy, kde-format +#| msgid "" +#| "All text keys must be unique. The text key \"%1\" on lines %1 and %2 are " +#| "identical." +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"همه کلیدهای متن باید یکتا باشند. کلید متن »%1« در خطهای %1 و %2 مثل هم " +"هستند." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, fuzzy, kde-format +#| msgid "Invalid Text Fields" +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "حوزه‌های متن نامعتبر" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "ابعاد" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "اصلی:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, fuzzy, kde-format +msgid "%1 x %2" +msgstr "۱(x)" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "پیش‌نمایش" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&به‌روزرسانی‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "Resize / Scale" +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "تغییر اندازه/مقیاس" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&کنش:‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "تصویر کامل" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "گزینش" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "جعبه متن" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "عمل" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • تغییر اندازه: اندازه عکس با ایجاد نواحی جدید در راست و/یا " +"پایین )که با رنگ زمینه پر می‌شود( افزایش می‌یابد یا با برش آن در راست و/یا " +"پایین، کاهش می‌یابد.
            • مقیاس: عکس با تکرار تصویردانه‌ها بسط " +"می‌یابد، یا با افت تصویردانه‌ها به هم می‌چسبد.
            • مقیاس هموار:" +"نظیرمقیاساست، به جز این که برای تولید یک عکس هموارتر با تصویردانه‌های " +"مجاور ترکیب می‌شود.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&تغییر اندازه‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&مقیاس‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "مقیاس &هموار‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "عرض:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "ارتفاع:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, fuzzy, kde-format +msgid "x" +msgstr "۱(x)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&جدید:‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&درصد‌:‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "٪" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "نگهداری &ضریب نسبت‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            ممکن است تغییر اندازه جعبه متن تا %1x%2 مقدار قابل توجهی از حافظه را " +"اشغال کند. این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به " +"مسائل متنهای کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید اندازه جعبه متن " +"را تغییر دهید؟

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, fuzzy, kde-format +#| msgid "Resize Text Box?" +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "اندازه جعبه متن تغییر کند؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "&تغییر اندازه جعبه متن‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            ممکن است تغییر اندازه تصویر تا %1x%2 مقدار قابل توجهی از حافظه را " +"اشغال کند. این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به " +"مسائل متنهای کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید اندازه تصویر را " +"تغییر دهید؟

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +#| msgid "Resize Image?" +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "اندازه تصویر تغییر کند؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&تغییر اندازه تصویر‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            ممکن است مقیاس‌بندی تصویر تا %1x%2 مقدار قابل توجهی از حافظه را اشغال " +"کند. این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به مسائل " +"متنهای کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید تصویر را مقیاس‌بندی " +"کنید؟

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +#| msgid "Scale Image?" +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "تصویر مقیاس‌بندی شود؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&مقیاس‌بندی تصویر‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            ممکن است مقیاس‌بندی گزینش تا %1x%2 مقدار قابل توجهی از حافظه را اشغال " +"کند. این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به مسائل " +"متنهای کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید گزینش را مقیاس‌بندی " +"کنید؟

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Scale Selection?" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "گزینش مقیاس‌بندی شود؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&مقیاس‌بندی گزینش‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            ممکن است مقیاس‌بندی هموار تصویر تا %1x%2 مقدار قابل توجهی از حافظه را " +"اشغال کند. این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به " +"مسائل متنهای کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید تصویر را " +"مقیاس‌بندی هموار کنید؟

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, fuzzy, kde-format +#| msgid "Smooth Scale Image?" +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "تصویر مقیاس‌بندی هموار شود؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "&مقیاس‌بندی هموار‌ تصویر‌" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            ممکن است مقیاس‌بندی هموار گزینش تا %1x%2 مقدار قابل توجهی از حافظه را " +"اشغال کند. این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به " +"مسائل متنهای کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید گزینش را " +"مقیاس‌بندی هموار کنید؟

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, fuzzy, kde-format +#| msgid "Smooth Scale Selection?" +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "گزینش مقیاس‌بندی هموار شود؟" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "&مقیاس‌بندی هموار گزینش‌" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "چرخش گزینش" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "چرخش تصویر" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, fuzzy, kde-format +msgid "After rotate:" +msgstr "بعد از چرخش:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "جهت" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&پادساعت‌ گرد‌" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&ساعت‌ گرد‌" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "زاویه" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "۹۰ &درجه‌" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "۱۸۰ &درجه‌" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "۲۷۰ &درجه‌" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&سفارشی‌:‌" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "درجه" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the selection?

            " +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            ممکن است چرخش گزینش تا %1x%2 مقدار قابل توجهی از حافظه را اشغال کند. " +"این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به مسائل متنهای " +"کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید گزینش بچرخد؟

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +#| msgid "Rotate Selection?" +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "گزینش بچرخد؟" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "&چرخش گزینش‌" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the image?

            " +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            ممکن است چرخش تصویر تا %1x%2 مقدار قابل توجهی از حافظه را اشغال کند. " +"این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به مسائل متنهای " +"کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید تصویر بچرخد؟

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +#| msgid "Rotate Image?" +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "تصویر بچرخد؟" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "&چرخش تصویر‌" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Skew Selection" +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "اریب کردن گزینش" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Skew Image" +msgctxt "@title:window" +msgid "Skew Image" +msgstr "اریب کردن تصویر" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, fuzzy, kde-format +msgid "After skew:" +msgstr "بعد از اریب:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&افقی‌:‌" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&عمودی‌:‌" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the selection?

            " +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            ممکن است اریب کردن گزینش تا %1x%2 مقدار قابل توجهی از حافظه را اشغال " +"کند. این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به مسائل " +"متنهای کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید گزینش را اریب کنید؟" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +#| msgid "Skew Selection?" +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "گزینش اریب شود؟" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&اریب کردن گزینش‌" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the image?

            " +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            ممکن است اریب کردن تصویر تا %1x%2 مقدار قابل توجهی از حافظه را اشغال " +"کند. این مسئله می‌تواند حساسیت متقابل سیستم را کاهش داده و منجر به مسائل " +"متنهای کاربردی دیگر شود.

            مطمئن هستید که می‌‌خواهید تصویر را اریب کنید؟" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +#| msgid "Skew Image?" +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "تصویر اریب شود؟" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&اریب کردن تصویر‌" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, fuzzy, kde-format +#| msgid "Color Similarity" +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "شباهت رنگ" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "فاصله مکعب رنگ &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "تطبیق دقیق" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "تشابه رنگ چیست؟" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, fuzzy, kde-format +#| msgid "Save Preview" +msgctxt "@title:window" +msgid "Save Preview" +msgstr "ذخیره پیش‌‌‌نمایش" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 بایت )تقریباً %2٪(" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "نتوانست »%1« را باز کند." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"نتوانست »%1« را باز کند - قالب تصویر پشتیبانی نشده است.\n" +"ممکن است پرونده خراب باشد." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "نتوانست تصویر را ذخیره کند - اطلاعات ناکافی." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"نشانی وب: %1\n" +"نوع مایم: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, fuzzy, kde-format +#| msgid "Internal Error" +msgctxt "@title:window" +msgid "Internal Error" +msgstr "خطای درونی" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            ممکن است قالب %1 قادر به نگهداری تمام اطلاعات رنگ تصویر نباشد." +"

            مطمئن هستید می‌خواهید این قالب را ذخیره کنید؟

            " + +#: document/kpDocument_Save.cpp:131 +#, fuzzy, kde-format +#| msgid "Lossy File Format" +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "قالب پرونده Lossy" + +#: document/kpDocument_Save.cpp:140 +#, fuzzy, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            ذخیره تصویر در عمق رنگ کم %1 بیتی ممکن است منجر به فقدان اطلاعات رنگ " +"شود. هر نیمه‌‌‌شفافی هم حذف می‌شود.

            مطمئن هستید که می‌خواهید در این عمق " +"ذخیره کنید؟

            " + +#: document/kpDocument_Save.cpp:150 +#, fuzzy, kde-format +#| msgid "Low Color Depth" +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "عمق رنگ کم" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "نتوانست تصویر را ذخیره کند- قادر به ایجاد یک پرونده موقت نیست." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "نتوانست به عنوان »%1« ذخیره کند." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "نتوانست تصویر را ذخیره کند - خرابی در بارگذاری." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "حذف &لبه درونی‌" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "حذف لبه درونی" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "&برش خودکار‌" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "برش خودکار" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "KolourPaint نمی‌تواند لبه درونی گزینش را حذف کند، چون محل‌‌‌‌یابی نمی‌شود." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, fuzzy, kde-format +#| msgid "Cannot Remove Internal Border" +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "لبه درونی را نمی‌توان حذف کرد" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint نمی‌تواند به طور خودکار تصویر را برش دهد، چون لبه‌‌‌اش را نمی‌توان " +"محل‌یابی کرد." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, fuzzy, kde-format +#| msgid "Cannot Autocrop" +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "نمی‌توان به طور خودکار برش داد" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "تنظیم به عنوان تصویر" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "گزینش: ایجاد" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "برنامه نقاشی برای KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "بنیان‌گذار پروژه" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "مأمور ارشد بررسی" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "شمایلها" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "پشتیبانی InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "جلوه‌های تصویر" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "انتقال به KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "انتقال به KDE 4" + +#: kolourpaint.cpp:85 +#, fuzzy, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "با تشکر از افراد زیادی که در ایجاد این برنامه کمک کردند." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr " پرونده تصویر برای باز کردن" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&نما‌" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&تصویر‌" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&رنگها‌" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "میله ابزار اصلی" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "میله ابزار متن" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "گزینش گزینگان ابزار RMB" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&ویرایش‌" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +#| msgid "Thumbnail" +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "ریزنقش" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "برای تغییر اندازه تصویر، دسته را به چپ بکشید." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "تغییر اندازه تصویر: تمام دکمه‌های موشی را رها کنید." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "تغییر اندازه تصویر: فشار راست برای لغو." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "متن" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "نتوانست پالت رنگ »%1« را باز کند." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"نتوانست پالت رنگ »%1« را باز کند - قالب پشتیبانی‌نشده\n" +"ممکن است پرونده خراب باشد." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, fuzzy, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "نتوانست پالت رنگ »%1« را باز کند." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "نتوانست پالت رنگ را به عنوان »%1« ذخیره کند." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "بدون عنوان" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "استفاده از پیش‌فرضهای KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, fuzzy, kde-format +#| msgid "Use KDE's" +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "استفاده از KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&باز کردن...‌" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, fuzzy, kde-format +#| msgid "Reloa&d" +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "&بارگذاری مجدد‌" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&ذخیره‌" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "ذخیره &به عنوان...‌" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, fuzzy, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "&افزودن سطر‌" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, fuzzy, kde-format +#| msgid "Delete Last Row" +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "حذف سطر آخر" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "جعبه رنگ" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"پالت رنگ »%1« تغییر کرده است.\n" +"می‌خواهید آن را ذخیره کنید؟" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, fuzzy, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"پالت رنگ »%1« تغییر کرده است.\n" +"می‌خواهید آن را در پرونده‌ای ذخیره کنید؟" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, fuzzy, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"پالت رنگ »%1« تغییر کرده است.\n" +"می‌خواهید آن را در پرونده‌ای ذخیره کنید؟" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, fuzzy, kde-format +#| msgid "Open Color Palette" +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "باز کردن پالت رنگ" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"پالت رنگ »%1« تغییر کرده است.\n" +"بارگذاری مجدد باعث از دست رفتن تمام تغییراتی می‌شود که آخرین بار‌ ذخیره " +"کرده‌اید.\n" +"مطمئن هستید؟" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&بارگذاری مجدد‌" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, fuzzy, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"پالت رنگ تغییر کرده است.\n" +"بارگذاری مجدد باعث از دست رفتن تمام تغییرات می‌شود.\n" +"مطمئن هستید؟" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, fuzzy, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"پالت رنگ تغییر کرده است.\n" +"بارگذاری مجدد باعث از دست رفتن تمام تغییرات می‌شود.\n" +"مطمئن هستید؟" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "ذخیره پالت رنگ به عنوان" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "چسباندن در پنجره &جدید‌" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&حذف گزینش‌" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "&رونوشت در پرونده...‌" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "چسباندن &به واسطه پرونده...‌" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "متن: ایجاد جعبه" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "متن: چسباندن" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "نمی‌توان چسباند" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "متن: حذف جعبه" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "گزینش: حذف" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "متن: پایان" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "گزینش: از گزینش خارج کردن" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, fuzzy, kde-format +#| msgid "Copy to File" +msgctxt "@title:window" +msgid "Copy to File" +msgstr "رونوشت در پرونده" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, fuzzy, kde-format +#| msgid "Paste From File" +msgctxt "@title:window" +msgid "Paste From File" +msgstr "چسباندن به واسطه پرونده" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&صادرات‌...‌" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "پوییدن..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, fuzzy, kde-format +#| msgid "Acquiring Screenshots" +msgid "Acquire Screenshot" +msgstr "به دست آوردن تصاویر پرده" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "ویژگیها" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&بارگذاری مجدد‌" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +#| msgid "Open Image" +msgctxt "@title:window" +msgid "Open Image" +msgstr "باز کردن تصویر" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, fuzzy, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "%1 ثانیه" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, fuzzy, kde-format +#| msgid "Paste in &New Window" +msgid "Hide Main Window" +msgstr "چسباندن در پنجره &جدید‌" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "ویژگیهای سند" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "ذخیره تصویر به عنوان" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, fuzzy, kde-format +#| msgid "Export" +msgctxt "@title:window" +msgid "Export" +msgstr "&صادرات...‌" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"سند »%1« تغییر کرده است.\n" +"بارگذاری مجدد باعث از دست رفتن تمام تغییراتی می‌شود که آخرین بار‌ ذخیره " +"کرده‌اید.\n" +"مطمئن هستید؟" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"سند »%1« تغییر کرده است.\n" +"بارگذاری مجدد باعث از دست رفتن تمام تغییرات می‌شود.\n" +"مطمئن هستید؟" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "تصویر کامل" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"باید قبل از ارسال این تصویر آن را ذخیره کنید.\n" +"می‌خواهید آن را ذخیره کنید؟" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"سند »%1« تغییر کرده است.\n" +"می‌خواهید آن را ذخیره کنید؟" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&تغییر اندازه/مقیاس...‌" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "&تنظیم به عنوان تصویر )خط برش(‌" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, fuzzy, kde-format +#| msgid "&Vertical (upside-down)" +msgid "&Flip (upside down)" +msgstr "&عمودی )سر و ته(‌" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, fuzzy, kde-format +#| msgid "Flip horizontally" +msgid "Mirror (horizontally)" +msgstr "قرینه‌سازی افقی" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&چرخش...‌" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "چرخش &چپ‌" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "چرخش &راست‌" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&اریب...‌" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "کاهش دادن به &تک‌رنگ )مات(‌" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "کاهش دادن به &مقیاس خاکستری‌" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&وارونه کردن رنگها‌" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&پاک کردن‌" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "جلوه‌های &بیشتر...‌" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&تصویر‌" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "&گزینش‌" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "نمایش &مسیر‌" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1،%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1،%2 - %3،%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, fuzzy, kde-format +msgid "%1x%2" +msgstr "۱(x)" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 بیت در تصویردانه" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1٪" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "خانواده قلم" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "اندازه قلم" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "تو‌پر" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "کج" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "خط زیر" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "ضربه زدن از طریق" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "گزینه ابزار قبلی )گروه #۱(" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "گزینه ابزار بعدی )گروه #۲(" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "گزینه ابزار قبلی )گروه #۲(" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "گزینه ابزار بعدی )گروه #۲(" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&ترسیم غیر شفاف‌" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "ترسیم با شباهت رنگ..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "جعبه ابزار" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "نمایش &توری‌" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "نمایش &ریزنقش‌" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "حالت &بزرگ‌نمایی‌شده ریزنقش‌" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "فعال‌سازی &مستطیل ریزنقش‌" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&بزرگ‌نمایی‌" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "تصویر کامل" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "قلم‌مو" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "ترسیم با استفاده از قلم‌موهای دارای شکلها و اندازه‌های متفاوت" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "فشار دهید تا نقطه‌ها ترسیم شوند، یا بکشید تا خطوط ترسیم شوند." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "رنگ پاک‌کن" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "تصویردانه‌ها، رنگ پیش‌زمینه را جایگزین رنگ زمینه می‌کنند" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr " برای حذف تصویردانه‌های رنگ پیش‌‌‌‌زمینه، فشار دهید یا بکشید." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "پاک‌کن" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "اجازه می‌دهد اشتباهها را پاک کنید" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "فشار دهید یا بکشید تا حذف شود." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "رها کردن تمام دکمه‌های موشی." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "قلم" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "نقطه‌ها و خطوط بدون ابزار را ترسیم می‌کند" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "قوطیِ اسپری" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "عکس روی دیوار را می‌افشاند" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "فشار یا کشیدن برای پاشیدن عکس روی دیوار." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "فشار راست برای لغو." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "فشار چپ برای لغو." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "" + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "اجازه می‌دهد از تصویر، یک رنگ برگزینید" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "برای برگزیدن یک رنگ فشار دهید." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr " مناطق را در تصویر پر می‌کند" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "فشار دهید تا یک منطقه پر شود." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "بزرگ‌نمایی" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "بزرگ‌نمایی و کوچک‌نمایی تصویر" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"فشار برای بزرگ‌نمایی/کوچک‌نمایی یا کشیدن چپ برای بزرگ‌نمایی به ناحیه مشخص‌شده." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "منحنی" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "منحنیها را ترسیم می‌کند" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "بیرون کشیدن نقطه‌های آغاز و پایان." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"برای تنظیم اولین نقطه کنترل، به چپ بکشید، یا فشار راست کنید تا پایان یابد." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"برای تنظیم اولین نقطه کنترل، به راست بکشید، یا فشار چپ کنید تا پایان یابد." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"برای تنظیم آخرین نقطه کنترل، به چپ بکشید، یا فشار راست کنید تا پایان یابد." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"برای تنظیم آخرین نقطه کنترل، به راست بکشید، یا فشار چپ کنید تا پایان یابد." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "خط" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "خطوط را می‌کشد" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "بکشید تا ترسیم شود." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "چند ضلعی" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "چند ضلعیها را ترسیم می‌کند" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "بکشید تا اولین خط ترسیم شود." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "خط دیگر را به چپ بکشید، یا فشار راست کنید تا پایان یابد." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "خط دیگر را به راست بکشید، یا فشار راست کنید تا پایان یابد." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "خطوط متصل" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "خطوط متصل را ترسیم می‌کند" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "بیضی" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "بیضیها و دایره‌ها را ترسیم می‌کند" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "مستطیل" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr " مستطیلها و مربعها را ترسیم می‌کند" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "مستطیل گرد‌شده" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "مستطیلها و مربعهایی با گوشه‌های گرد‌شده ترسیم می‌کند" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "برای ایجاد گزینش، به چپ بکشید." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "برای حرکت گزینش، به چپ بکشید." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "برای مقیاس‌بندی گزینش، به چپ بکشید." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "گزینش: غیرشفاف" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "گزینش: شفاف" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "گزینش: شفافیت رنگ" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "گزینش: شباهت شفافیت رنگ" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "گزینش )بیضی شکل(" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr " یک گزینش مدور یا بیضی شکل می‌سازد" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "گزینش )شکل آزاد(" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "یک گزینش شکل آزاد می‌سازد" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "گزینش ) مستطیل شکل(" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "گزینشی مستطیلی می‌سازد" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "گزینش: حرکت" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: لکه" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "متن را می‌نویسد" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "متن: پس‌بر" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "متن: حذف" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "متن: خط جدید" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "متن: نوشتن" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "برای ایجاد جعبه متن، به چپ بکشید." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "برای حرکت جعبه متن، به چپ بکشید." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "متن: حرکت جعبه" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "برای تغییر اندازه جعبه متن، به چپ بکشید." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "برای تغییر موقعیت مکان‌نما، فشار چپ کنید." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "متن: زمینه غیر شفاف" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "متن: زمینه شفاف" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "متن: مبادله رنگها" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "متن: رنگ پیش‌زمینه" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "متن: رنگ زمینه" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "متن: قلم" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "متن: اندازه قلم" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "متن: توپر" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "متن: کج" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "متن: خط زیر" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "متن: ضربه زدن از طریق" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "حالت بزرگ‌نمایی‌نشده - ریزنقش‌" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1٪ - ریزنقش" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "

            شباهت رنگ: %1٪

            فشار برای پیکربندی.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "

            شباهت رنگ:تطبیق دقیق

            فشار برای پیکربندی

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&روشنی‌‌:‌" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&بازنشانی‌" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "&سایه روشن:‌" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&گاما:‌" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&بازنشانی‌" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&مجراها:‌" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "همه" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "قرمز" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "سبز" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "آبی" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "بازنشانی &همه مقادیر‌" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "تنظیمات" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&مقدار:‌" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&فعال‌سازی‌" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "رنگها" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&رنگ‌:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&اشباع‌:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, fuzzy, kde-format +#| msgid "&Value:" +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "مقدار" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&قرمز‌" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&سبز‌" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&آبی‌" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&همه‌" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "مجراها" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&تک‌رنگ‌" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "&تک‌رنگ )مات‌(‌" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "&رنگ‌ ۲۵۶‌" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "&رنگ ۲۵۶ )مات(‌" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "رنگ ۲۴ &بیتی‌" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "کاهش به" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&دانه‌دانه‌:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "تبدیل کردن &به:‌" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&کیفیت‌:‌" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&پیش‌نمایش‌" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "تک‌رنگ" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "تک‌رنگ )مات(" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "رنگ ۲۵۶" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "رنگ ۲۵۶ )مات(" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "رنگ ۲۴ بیتی" + +#: widgets/kpPrintDialogPage.cpp:58 +#, fuzzy, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "موقعیت &تصویر‌" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&مرکز صفحه‌" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&چپ بالای صفحه‌" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "شفاف" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, fuzzy, kde-format +msgid "KolourPaint Defaults" +msgstr "استفاده از پیش‌فرضهای KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "رنگها: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "۱×۱" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "دایره" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "مربع" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "ممیز" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "ممیز وارونه" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, fuzzy, kde-format +msgid "%1x%2 %3" +msgstr "۱(x)" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "پر نشود" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "پر کردن با رنگ زمینه" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "پر کردن با رنگ پیش‌زمینه" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "غیر شفاف" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "سندی که »%1« خوانده می‌شود، از قبل وجو دارد.\n" +#~ "می‌خواهید آن را جای‌نوشت کنید؟" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "پالت رنگی که »%1« خوانده می‌شود، از قبل وجود دارد.\n" +#~ "می‌خواهید آن را جای‌نوشت کنید؟" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "تنظیم سطح بزرگ‌نمایی به مقداری که مضرب نتایج ۱۰۰٪ در ویرایش نادرست و " +#~ "دریافت مجدد ضربتها نیست.\n" +#~ "واقعاً می‌خواهید سطح بزرگ‌نمایی را تا %1٪ تنظیم کنید؟" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "تنظیم سطح بزرگ‌نمایی به %1٪" + +#~ msgid "None" +#~ msgstr "هیچ‌کدام" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            تغییر اندازه تصویر به %1x%2 ممکن است مقدار قابل توجهی از حافظه را " +#~ "اشغال کند. این کار می‌تواند واکنش سیستم را کاهش داده، و باعث بروز مسئله در " +#~ "منابع کاربرد دیگر شود.

            مطمئن هستید که می‌خواهید اندازه تصویر را " +#~ "تغییر دهید؟

            " + +#~ msgid "Overwrite" +#~ msgstr "جای‌نوشت" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "نتوانست »%1« را باز کند - نوع مایم ناشناخته." + +#~ msgid "Save Preview" +#~ msgstr "ذخیره پیش‌‌‌نمایش" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "برای پشتیبانی، لطفاً، وب‌گاه را مشاهده نمایید." + +#~ msgid "No Scanning Support" +#~ msgstr "عدم پشتیبانی پویش" + +#~ msgid "Scanning support is not installed." +#~ msgstr "پشتیبانی پویش نصب نمی‌شود." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            KolourPaint نمی‌‌‌تواند محتویات تخته یادداشت را، زمانی که داده به طور " +#~ "غیرمنتظره‌ای ناپدید می‌شود، بچسباند.

            اگر کاربردی که مسئول محتویات " +#~ "تخته یادداشت بود بسته شده باشد، معمولاً این مسئله رخ می‌دهد.

            " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "به دست آوردن &تصاویر پرده‌" + +#, fuzzy +#~| msgid "" +#~| "

            To acquire a screenshot, press %1. The screenshot will be " +#~| "placed into the clipboard and you will be able to paste it in " +#~| "KolourPaint.

            You may configure the Desktop Screenshot " +#~| "shortcut in the KDE Control Center module Keyboard Shortcuts.

            Alternatively, you may try the " +#~| "application KSnapshot.

            " +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            برای به دست آوردن یک تصویر پرده، %1 را فشار دهید. تصویر پرده در " +#~ "تخته یادداشت جای می‌گیرد، و قادر به چسباندن آن در KolourPaint می‌باشید.ممکن است میان‌بر تصویر پرده رومیزی را در میان‌برهای صفحه کلید " +#~ "پیمانه مرکز کنترل KDE میان‌برهای صفحه " +#~ "کلید پیکربندی کنید. وگرنه، ممکن است کاربرد KSnapshot را امتحان نمایید.

            " + +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            به نظر نمی‌رسد که در حال اجرای KDE باشید.

            یک‌ بار KDE را بار " +#~ "کرده‌‌‌اید:

            برای به دست آوردن یک تصویر پرده، %1 را " +#~ "فشار دهید. تصویر پرده در تخته یادداشت جای می‌گیرد، و قادر به چسباندن آن در " +#~ "KolourPaint می‌باشید.

            متناوباً، ممکن است کاربرد KSnapshot را امتحان کنید.

            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "&تنظیم به عنوان کاغذ دیواری )مرکزی‌‌‌شده(‌" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "تنظیم به عنوان کاغذ دیواری )&کاشی‌شده(‌" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "قبل از این ‌که بتوان این تصویر را به عنوان کاغذ دیواری تنظیم کرد، باید آن " +#~ "را به عنوان یک پوشه محلی ذخیره کنید.\n" +#~ "می‌خواهید آن را ذخیره کنید؟" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "قبل از این‌ که بتوان این تصویر را به عنوان کاغذ دیواری تنظیم کرد، باید آن " +#~ "را ذخیره کنید.\n" +#~ "می‌خواهید آن را ذخیره کنید؟" + +#~ msgid "Could not change wallpaper." +#~ msgstr "نتوانست کاغذدیواری را تغییر دهد." + +#~ msgid "Flip Selection" +#~ msgstr "قرینه‌سازی گزینش" + +#~ msgid "Flip Image" +#~ msgstr "قرینه‌سازی تصویر" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&عمودی )سر و ته(‌" + +#~ msgid "&Horizontal" +#~ msgstr "&افقی‌" + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "نتوانست بپوید - خارج از حافظه نگاره‌سازی." + +#~ msgid "Cannot Scan" +#~ msgstr "نمی‌توان مرور کرد" + +#~ msgid "&Flip..." +#~ msgstr "&قرینه‌سازی...‌" + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            تصویری که چسبیده می‌شود، ممکن است نسبت به حالت پرده جاری رنگ بیشتری " +#~ "داشته باشد که می‌تواند پشتیبانی کند. برای نمایش آن، ممکن است برخی اطلاعات " +#~ "رنگ حذف شوند.

            اگر این تصویر را ذخیره کنید، هر فقدان رنگ دائمی " +#~ "می‌شود.

            برای جلوگیری از این نتیجه، عمق پرده خود را حداقل تا %1 " +#~ "بیت در تصویردانه افزایش دهید و سپس KolourPaint را بازآغازی کنید.


            همچنین، حاوی نیمه‌‌‌‌شفافی است که کاملاً پشتیبانی نمی‌شود. داده نیمه‌شفاف با " +#~ "ماسک نیمه‌‌‌شفاف ۱ بیتی تخمین زده می‌‌شود.

            اگر این تصویر را ذخیره " +#~ "کنید، این فقدان شفافیت دائمی می‌شود.

            " + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            تصویری که چسبیده می‌شود، ممکن است نسبت به حالت پرده جاری رنگ بیشتری " +#~ "داشته باشد که می‌تواند پشتیبانی شود. برای نمایش آن، ممکن است برخی اطلاعات " +#~ "رنگ حذف شوند.

            اگر این تصویر را ذخیره کنید، هر فقدان رنگ دائمی " +#~ "می‌شود.

            برای جلوگیری از این نتیجه، عمق پرده خود را حداقل تا %1 " +#~ "بیت در تصویردانه افزایش دهید و سپس KolourPaint را بازآغازی کنید.

            " + +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            تصویری که چسبیده می‌شود، حاوی نیمه‌شفافی است که کاملاً پشتیبانی " +#~ "نمی‌‌شود. داده نیمه‌شفاف با یک ماسک نیمه‌شفاف ۱ بیتی تخمین زده می‌‌شود.

            اگر این تصویر را ذخیره کنید، هر فقدان نیمه‌شفافی دائمی خواهد شد.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            تصویر »%1« ممکن است نسبت به حالت پرده جاری رنگهای بیشتری داشته " +#~ "باشد که می‌تواند پشتیبانی کند. برای نمایش آن، ممکن است برخی اطلاعات رنگ " +#~ "حذف شوند.

            اگر این تصویر را ذخیره کنید، هر فقدان رنگ دائمی خواهد " +#~ "بود.

            برای جلوگیری از این نتیجه، عمق پرده‌تان را حداقل تا %2 بیت " +#~ "در تصویردانه افزایش دهید و سپس KolourPaint را بازآغازی کنید.


            همچنین، حاوی نیمه‌شفافی می‌باشد که کاملاً پشتیبانی نمی‌‌شود. داده نیمه‌شفاف " +#~ "با نقاب نیمه‌‌شفاف ۱ بیتی تخمین زده می‌‌‌شود.

            اگر این تصویر را ذخیره " +#~ "کنید، هر فقدان نیمه‌شفافی دائمی خواهد شد.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            ممکن است تصویر»%1« نسبت به حالت پرده جاری رنگهای بیشتری داشته ‌باشد " +#~ "که می‌تواند پشتیبانی کند. برای نمایش آن، ممکن است برخی اطلاعات رنگ حذف " +#~ "شوند.

            اگر این تصویر را ذخیره کنید، هر فقدان رنگ، دائمی می‌شود.

            برای جلوگیری از این نتیجه، عمق پرده خود را حداقل تا %2 بیت در " +#~ "تصویردانه افزایش دهید و سپس KolourPaint را بازآغازی کنید.

            " + +#~ msgid "" +#~ "

            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            تصویر»%1« حاوی نیمه‌شفافی است که کاملاً پشتیبانی نمی‌شود. داده " +#~ "نیمه‌شفاف با ماسک نیمه‌شفاف ۱ بیتی تخمین زده می‌شود.

            اگر این تصویر " +#~ "را ذخیره کنید، این فقدان نیمه‌شفافی دائمی می‌شود.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "نتوانست »%1 « را باز کند - خارج از حافظه نگاره‌سازی." + +#~ msgid "Scanning Support" +#~ msgstr "پشتیانی پویش" + +#~ msgid "After Skew:" +#~ msgstr "بعد از اریب:" + +#~ msgid "After Rotate:" +#~ msgstr "بعد از چرخش:" + +#, fuzzy +#~| msgid "Document Properties" +#~ msgid "Properties..." +#~ msgstr "ویژگیهای سند" + +#~ msgid "Selection: Transparency" +#~ msgstr "گزینش: شفافیت" + +#~ msgid "You have to restart KolourPaint for these changes to take effect." +#~ msgstr "برای اثر بخش بودن این تغییرها، باید KolourPaint را بازآغازی کنید." + +#~ msgid "Toolbar Settings Changed" +#~ msgstr "تنظیمات میله ابزار تغییر کرد" + +#~ msgid "Hide &Path" +#~ msgstr "مخفی کردن &مسیر‌" + +#~ msgid "Hide &Grid" +#~ msgstr "مخفی کردن &توری‌" + +#~ msgid "Hide T&humbnail" +#~ msgstr "مخفی کردن &ریزنقش‌" + +#, fuzzy +#~| msgid "Reduce Colors" +#~ msgid "Reload Colors" +#~ msgstr "کاهش دادن رنگها" + +#~ msgid "Append Row" +#~ msgstr "پیوست سطر" diff --git a/po/fi/kolourpaint.po b/po/fi/kolourpaint.po new file mode 100644 index 0000000..89ed82f --- /dev/null +++ b/po/fi/kolourpaint.po @@ -0,0 +1,2974 @@ +# Translation of kolourpaint.po to Finnish +# KDE Finnish translation sprint participants: +# Author: Artnay +# Author: Karvjorm +# Author: Lliehu +# Kim Enkovaara , 2004, 2006. +# Ilpo Kantonen , 2004. +# Mikko Piippo , 2007. +# Lasse Liehu , 2010, 2011, 2012, 2013, 2014, 2015. +# Tommi Nieminen , 2011, 2016, 2018, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-08-22 20:58+0300\n" +"Last-Translator: Tommi Nieminen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-POT-Import-Date: 2012-12-01 22:24:11+0000\n" +"X-Generator: Lokalize 20.04.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" +"Kim Enkovaara, Ilpo Kantonen, Lasse Liehu, Tommi Nieminen, Mikko Piippo" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"kim.enkovaara@iki.fi, ilpo@iki.fi, lasse.liehu@gmail.com, " +"translator@legisign.org, mikko.piippo@helsinki.fi" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balanssi" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Pehmennä" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Tarkenna" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Tyhjennä" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Valinta: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Kohokuvio" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Litistä" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Pelkistä harmaasävyksi" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Sävy, kylläisyys, arvo" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Käänteiset värit" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertoi" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Pelkistä yksiväriseksi (epätarkka)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Pelkistä yksiväriseksi" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Pelkistä 256-väriseksi (epätarkka)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Pelkistä 256-väriseksi" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogrammi " + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Käännä" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Käännä vaaka- ja pystysuunnassa" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Käännä vaakasuunnassa" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Käännä pystysuunnassa" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Teksti: Aseta laatikon koko" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Valinta: Skaalaus" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Valinta: Pehmennetty skaalaus" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Muuta kokoa" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skaalaa" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Skaalaa pehmennetysti" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Kierrä" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Vääristä" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Kumoa: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Kumoa" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Tee uudelleen: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Tee uudelleen" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Kumoa: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Kumoa" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Tee uudelleen: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Tee uudelleen" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 lisätietue" +msgstr[1] "%1 lisätietuetta" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Värivalitsin" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Täyttö" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Lisää kuvatehosteita (valinta)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Lisää kuvatehosteita" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Tehoste:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Vähennä värejä" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Pehmennä ja tarkenna" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Tiedoston ominaisuudet" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Pistettä tuumalla (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Ei määritetty" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " × " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Vaaka:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Pysty:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Pistettä tuumalla (DPI) määrittää sen määrän kuvan " +"kuvapisteitä, joka tulisi tulostaa yhdelle tuumalle (2,54 cm).

            Mitä " +"korkeampi on kuvan DPI, sitä pienempi on tulostettu kuva. Huomaa, ettei " +"tulostimesi enää paranna kuvan laatua, jos nostat arvon yli 300:aan tai 600:" +"aan DPI:hin (tulostimesta riippuen).

            Jos haluat tulostaa kuvan saman " +"kokoisena kuin se on näytöllä, aseta kuvan DPI-arvot samaksi kuin näytön.

            Samoin jos kumpikaan DPI-arvo on Ei määritetty, kuva tulostetaan " +"saman kokoisena kuin näytöllä.

            Kaikki kuvamuodot eivät tue DPI-arvoja. " +"Ellei valitsemasi tallennusmuoto tue niitä, niitä ei tallenneta kuvaan.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Siirtymä" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Siirtymä on kuvan haluttu sijainti suhteessa muihin kuviin.

            Kaikki kuvamuodot eivät tue Siirtymä-ominaisuutta. Ellei " +"tallennusmuotosi tue sitä, tässä määritettyjä arvoja ei tallenneta kuvaan." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Tekstikentät" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Lisää rivi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Poista rivi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Palauta arvot" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Tekstikentät tarjoavat lisätietoa kuvasta. Tämä on " +"todennäköisimmin huomautusalue, johon voit vapaasti kirjoittaa tekstiä.

            Ominaisuus on kuitenkin kuvamuotoriippuvainen, joten kentissä saattaa " +"myös olla tietokoneen tulkittavaksi tarkoitettua dataa – jota sinun ei " +"tulisi muuttaa – mutta tämä on epätodennäköistä.

            Kaikki kuvamuodot " +"eivät tue tekstikenttiä. Ellei tallennusmuotosi tue niitä, niitä ei " +"tallenneta kuvaan.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Avain" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Arvo" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Tekstin arvo ”%1” rivillä %2 vaatii avaimen." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Kaikkien tekstiavainten on oltava ainutkertaisia. Tekstiavain ”%1” riveillä " +"%2 ja %3 ovat yhtäläiset." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Virheellinen tekstikenttä" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Mitat" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Alkuperäinen:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 × %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Esikatselu" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Päivitä" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Muuta kokoa / skaalaa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Käsi&ttele:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "&Koko kuva" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Valinta" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Tekstilaatikko" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Tapahtuma" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Muuta kokoa:Kuvan kokoa kasvatetaan luomalla oikealla ja/" +"tai alhaalla uusia kuva-alueita, jotka täytetään taustavärillä ja " +"pienennetään leikkaamalla kuvaa oikealta ja/tai alhaalta.
            • " +"
            • Skaalaus: Kuvaa kasvatetaan monistamalla pikseleitä tai " +"poistamalla pikseleitä.
            • Pehmennetty skaalaus: Tämä on sama " +"kuin skaalaus, paitsi että vierekkäiset pikselit sekoitetaan keskenään, " +"jotta saadaan aikaan pehmeämpi kuva.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Muuta kokoa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skaalaa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Peh&mennetty skaalaus" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Leveys:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Korkeus:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "×" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Uusi:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Prosenttia:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr " %" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Säilytä kuv&asuhde" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Tekstilaatikon koon muuttaminen kokoon %1x%2 voi kuluttaa runsaasti " +"muistia. Tämä voi vaikuttaa järjestelmän käyttömukavuuteen ja aiheuttaa " +"muita ongelmia.

            Haluatko varmasti muuttaa tekstilaatikon kokoa?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Muuta tekstilaatikon kokoa? " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Muuta tekstilaatikon kokoa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Kuvan koon muuttaminen kokoon %1x%2 voi kuluttaa runsaasti muistia. " +"Tämä voi vaikuttaa järjestelmän käyttömukavuuteen ja aiheuttaa muita " +"ongelmia.

            Haluatko varmasti muuttaa kuvan kokoa?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Muuta kuvan kokoa?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&Muuta kuvan kokoa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Kuvan skaalaus kokoon %1x%2 voi kuluttaa runsaasti muistia. Tämä voi " +"vaikuttaa järjestelmän käyttömukavuuteen ja aiheuttaa muita ongelmia.

            Haluatko varmasti skaalata kuvan uuteen kokoon?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Skaalataanko kuvaa?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Sk&aalaa kuva" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Valinnan skaalaus kokoon %1x%2 voi kuluttaa runsaasti muistia. Tämä " +"voi vaikuttaa järjestelmän käyttömukavuuteen ja aiheuttaa muita ongelmia.

            Haluatko varmasti skaalata valinnan uuteen kokoon?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Skaalataanko valinta?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Skaalaa valinta" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Kuvan pehmennetty skaalaus kokoon %1x%2 voi kuluttaa runsaasti " +"muistia. Tämä voi vaikuttaa järjestelmän käyttömukavuuteen ja aiheuttaa " +"muita ongelmia.

            Haluatko varmasti skaalata kuvan uuteen kokoon?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Skaalataanko kuvaa pehmennetysti?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Skaalaa kuvaa pehmennetysti" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Valinnan pehmennetty skaalaus kokoon %1x%2 voi kuluttaa runsaasti " +"muistia. Tämä voi vaikuttaa järjestelmän käyttömukavuuteen ja aiheuttaa " +"muita ongelmia.

            Haluatko varmasti skaalata valinnan uuteen kokoon?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Skaalataanko valintaa pehmennetysti?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Skaalaa valintaa &pehmennetysti" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Kierrä valintaa" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Kierrä kuva" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Kierron jälkeen:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Suunta" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Vastapäivää&n" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "M&yötäpäivään" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Kulma" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90°" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180°" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270°" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "M&ukautettu:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "°" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Valinnan kiertäminen kokoon %1 × %2 voi viedä paljon muistia, mikä " +"voi hidastaa järjestelmän toimintaa ja aiheuttaa muita sovellusresurssien " +"ongelmia.

            Haluatko varmasti kiertää valintaa?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Kierretäänkö valintaa?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Kierrä valintaa" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Kuvan kiertäminen kokoon %1 × %2 voi viedä paljon muistia, mikä voi " +"hidastaa järjestelmän toimintaa ja aiheuttaa muita sovellusresurssien " +"ongelmia.

            Haluatko varmasti kiertää kuvaa?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Kierretäänkö kuvaa?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Ki&errä kuvaa" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Väännä valintaa" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Väännä kuvaa" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Väännön jälkeen:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Vaaka:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Pysty:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Kuvan vääntäminen kokoon %1 × %2 voi viedä paljon muistia, mikä voi " +"hidastaa järjestelmän toimintaa ja aiheuttaa muita sovellusresurssien " +"ongelmia.

            Haluatko varmasti vääntää valintaa?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Väännetäänkö valintaa?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Väännä valintaa" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Kuvan vääntäminen kokoon %1 × %2 voi viedä paljon muistia, mikä voi " +"hidastaa järjestelmän toimintaa ja aiheuttaa muita sovellusresurssien " +"ongelmia.

            Haluatko varmasti vääntää kuvaa?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Väännetäänkö kuvaa?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Väännä kuvaa" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Värien samankaltaisuus" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "R&GB -värikuutioetäisyys" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Täsmälleen sama" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Mitä värien samankaltaisuus on?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Tallenna esikatselu" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 tavu (noin %2 %)" +msgstr[1] "%1 tavua (noin %2 %)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Ei voi avata: ”%1”." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Ei voitu avata: ”%1” - tukematon kuvamuoto.\n" +"Tiedosto voi olla vioittunut." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Kuvaa ei voitu tallentaa – ei riittävästi tietoa." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Verkko-osoite: %1\n" +"MIME-tyyppi: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Sisäinen virhe" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Tiedostomuoto %1 ei pysty säilyttämään kaikkea kuvan " +"väritietoa.

            Haluatko varmasti tallentaa kuvan tähän muotoon?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Häviöllinen tiedostomuoto" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Kuvan tallentaminen vähäiseen värisyvyyteen (%1 bittiä) saattaa " +"johtaa väritiedon hävikkiin. Mahdollinen läpinäkyvyys menetetään myös.

            Haluatko varmasti tallentaa tähän värisyvyyteen?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Alhainen värisyvyys" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Kuvaa ei voitu tallentaa – väliaikaistiedostoa ei voitu luoda." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Ei voitu tallentaa nimelle ”%1”: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Virhe tallennettaessa kuvaa" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Kuvaa ei voitu tallentaa – tallennus epäonnistui." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "P&oista sisäkehys" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Poista sisäkehys" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Automaattirajaus" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automaattirajaus" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint ei voi poistaa valinnan sisäkehystä, sillä sitä ei voitu " +"paikallistaa." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Ei voi poistaa sisäkehystä" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint ei voi rajata automaattisesti kuvaa, koska sen kehystä ei voi " +"sijoitttaa." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Ei voi rajata automaattisesti" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Aseta kuvana" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Valinta: Luo" + +# pmap: =/gen=KolourPaintin/ +# pmap: =/elat=KolourPaintista/ +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "KDE:n piirto-ohjelma" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projektin perustaja" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Päätutkija" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Skannaustuki, alfa-kanavan tuki, nykyinen ylläpitäjä" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof BorreyKristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Kuvakkeet" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "InputMethod -tuki" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen " + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Kuvatehosteet" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE4 -siirros" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF 5 -siirros" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Kiitämme monia muitakin, jotka ovat tehneet tästä ohjelmasta totta!" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Valinnaisesti avattavat kuvatiedostot" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Luettele kaikki luettavissa olevat kuva-MIME-tyypit" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Näytä" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Kuva" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Värit" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Työkalurivi" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Tekstirivi" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Valintatyökalun valikko" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Muokkaa" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Esikatselukuva" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Vedä kahvasta asettaaksesi kuvan koon." + +# Kaksoispisteen jälkeinen osuus ei minun, ja epäilen sen osuvuutta, mutten osaa kääntää paremminkaan +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Kuvan koon muutos: Aseta kuvan koko hiirellä." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Kuvan koon muutos: keskeytä painamalla hiiren oikeaa painiketta." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Teksti" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Ei voitu avata väripalettia ”%1”." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Ei voitu avata väripalettia ”%1” - muotoa ei tueta.\n" +"Tiedosto voi olla vioittunut." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Ei voitu avata KDE-väripalettia ”%1”." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Ei voitu tallentaa väripalettia nimelle ”%1”." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Nimetön" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Käytä KolourPaint-ohjelman oletuksia" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Käytä KDE:n" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Avaa…" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Lataa &uudelleen" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Tallenna" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Tallenna &nimellä…" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Lisää rivi" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Poista viimeinen rivi" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Väri-ikkuna" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Väripaletti ”%1” on muuttunut.\n" +"Haluatko tallentaa muutokset?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE:n väripaletti ”%1” on muuttunut.\n" +"Haluatko tallentaa muutokset?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Oletusväripaletti on muuttunut.\n" +"Haluatko tallentaa sen tiedostoon?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Avaa väripaletti" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Väripalettia ”%1” on muutettu.\n" +"Uudelleen lataaminen tuhoaa kaikki tallennuksen jälkeiset muutokset.\n" +"Oletko varma?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Lataa &uudelleen" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE:n väripalettia ”%1” on muutettu.\n" +"Uudelleen lataaminen tuhoaa kaikki tallennuksen jälkeiset muutokset.\n" +"Oletko varma?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Oletusväripalettia on muutettu.\n" +"Uudelleen lataaminen tuhoaa kaikki tallennuksen jälkeiset muutokset.\n" +"Oletko varma?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Tallenna väripaletti nimellä" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Liitä &uuteen ikkunaan" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Poista valitut" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opioi tiedostoon…" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Liitä &tiedostosta…" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Teksti: Luo laatikko" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Teksti: Liitä" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint ei voi liittää leikepöydän sisältöä, koska sen muoto on " +"tuntematon." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Ei voi liittää" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Teksti: Poista laatikko" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Valinta: Poista" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Teksti: Lopeta" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Valinta: Poista valinta" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopioi tiedostoon" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Liitä tiedostosta" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Vie…" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skannaa…." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Ota kuvankaappaus" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Ominaisuudet" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Lataa &uudelleen" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Kaikki tuetut tiedostot (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Avaa kuva" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Skannausikkunan avaaminen epäonnistui" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Skannaus epäonnistui" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Kuvankaappauksen viive" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekunti" +msgstr[1] " sekuntia" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Ei viivettä" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Piilota pääikkuna" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Tiedoston ominaisuudet" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Tallenna kuva nimellä" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Vie" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Tiedostoa ”%1” on muutettu.\n" +"Sen lataaminen uudestaan kadottaa kaikki viime tallennuksen jälkeen tehdyt " +"muutokset.\n" +"Oletko varma?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Tiedostoa ”%1” on muutettu.\n" +"Sen lataaminen uudestaan kadottaa kaikki muutokset.\n" +"Oletko varma?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Tulosta kuva" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Kuva on tallennettava ennen sen lähettämistä.\n" +"Haluatko tallentaa sen?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Tiedostoa ”%1” on muutettu.\n" +"Haluatko tallentaa muutokset?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Säädä k&oko / Skaalaa" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Aseta kuvaksi (crop)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Käännä (&ylösalaisin)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Peilaa (vaakasuunnassa)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Kierrä…" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Kierrä kuvaa &vasemmalle" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Kierrä kuvaa &oikealle" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Väännä…" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Pelki&stä yksiväriseksi (epätarkka)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Pelkistä &harmaasävyiksi" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Käänteiset värit" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Tyhjennä" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Merkitse luottamukselliseksi" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Lisää tehosteita…" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Kuva" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Val&inta" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Näytä polku" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Piirrä antialiasoituna" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Fonttiperhe" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Fonttikoko" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Lihavoitu" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursivoitu" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Alleviivattu" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Yliviivattu" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Edellinen työkalun optio (ryhmä #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Uusi työkalun optio (ryhmä #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Edellinen työkalun optio (ryhmä #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Seuraava työkalun optio (ryhmä #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Piirrä läpinäkymättömänä" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Samankaltaisilla väreillä piirtäminen…" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Työkalulaatikko" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Näytä &ruudukko" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Näytä es&ikatselukuva" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Zoomattu esikatselu" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Käytä esikatselulaatikkoa" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Lue kuva" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Valitun skannerin avaaminen epäonnistui." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pensseli" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Piirrä käyttäen erimuotoisia pensseleitä ja eri kokoja" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" +"Napsauta piirtääksesi pisteitä tai paina ja liikuta hiirtä piirtääksesi " +"piirtoja." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Värinpoistaja" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Korvaa edustan värin taustan värin kanssa pikseleittäin" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" +"Napsauta tai paina ja liikuta hiirtä poistaaksesi piirrettyjä pikseleitä. " + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Kumi" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Poista virheet kumilla" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Napsauta tai paina ja liikuta hiirtä poistaaksesi. " + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Vapauta hiiripainikeet" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Kynä" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Piirrä pisteitä ja vapaalla kädellä siveltimenvetoja" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Spray-pullo" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Spreijaa graffitia" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Napsauta tai vedä maalataksesi spray graffitia." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Hiiren oikea nappi keskeyttää." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Hiiren vasen nappi keskeyttää." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Valitse väri kuvasta" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Valitse väri napsauttamalla." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Täyttää kuvan alueita" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Täytä kuvan alue napsauttamalla." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Suurennus" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Loitonna ja lähennä kuvaa" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "Lähennä/loitonna napsauttamalla tai lähennä tietty alue vetämällä." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kaari" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Piirrä kaaria" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Vedä alku- ja loppupisteet." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Vedä vasemmalla hiiren painikkeella asettaaksesi ensimmäisen " +"kontrollipisteen, oikea painike lopettaa. " + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Vedä oikealla hiiren painikkeella asettaaksesi ensimmäisen kontrollipisteen, " +"vasen painike lopettaa. " + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Vedä vasemmalla painikkeella asettaaksesi viimeisen kontrollipisteen, oikea " +"painike lopettaa." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Vedä oikealla painikkeella asettaaksesi viimeisen kontrollipisteen, vasen " +"painike lopettaa." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Viiva" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Piirrä viivoja" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Vedä piirtääksesi." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Monikulmio" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Piirrä monikulmioita" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Vedä piirtääksesi ensimmäinen viiva." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Paina vasenta hiiren painiketta vetääksesi viivan, lopeta oikealla " +"painikkeella." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Vedä toinen viiva hiiren oikealla painikkeella, lopeta vasemmalla " +"painikkeella." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Yhdistetyt viivat" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Piirrä yhdistettyjä viivoja" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipsi" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Piirrä ellipsejä ja ympyröitä" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Suorakaide" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Piirrä suorakaiteita ja neliöitä" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Pyöristetty suorakaide" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Piirtää suorakulmiota ja neliöitä, joiden kulmat on pyöristetty " + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Hiiren vasen painike luo valinnan. " + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Hiiren vasen painike siirtää valintaa. " + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Vedä vasemmalla painikkeella skaalataksesi valintaa. " + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Valinta: Peitetty" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Valinta: Läpinäkyvä" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Valinta: Läpinäkyvä väri" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Valinta: Läpinäkyvän värin samankaltaisuus" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Valinta (elliptinen)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Valitsee elliptillisesti tai ympyränä" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Valinta (vapaamuotoinen)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Tekee vapaamuotoisen valinnan" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Valinta (suorakaiteen muotoinen)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Tee suorakaidevalinta" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Valinta: Siirto" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Voidemainen" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Kirjoittaa tekstiä" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Teksti: Askelpalautin" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Teksti: Poisto" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Teksti: Uusi rivi" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Teksti: Kirjoitus" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Hiiren vasen painike luo tekstilaatikon." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Hiiren vasen painike siirtää tekstilaatikkoa." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Teksti: Siirrä laatikkoa" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Vedä vasemmalla painikkeella muuttaaksesi tekstilaatikon kokoa." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Hiiren vasen painike muuttaa kohdistimen sijaintia." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Teksti: Sumea tausta" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Teksti: Läpinäkyvä tausta" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Teksti: Vaihda värejä" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Teksti: Edustaväri" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Teksti: Taustaväri" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Teksti: Fontti" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Teksti: Fonttikoko" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Teksti: Lihavoitu" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Teksti: Kursivoitu" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Teksti: Alleviivattu" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Teksti: Yliviivattu" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Todellinen koko–Esikatselukuva" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1%–Esikatselukuva" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Värien samankaltaisuus tarkoittaa, kuinka samankaltaisia eri pikseleiden värien täytyy olla, jotta toiminnot katsovat niiden " +"olevat samanvärisiä.

            Jos asetat sen johonkin muuhun arvoon kuin " +"Täsmälleen sama, työskentely epätarkkojen kuvien parissa on helpompaa " +"samaan tapaan kuin käytettäessä muiden piirto-ohjelmien ”Taikasauva”-" +"työkalua.

            Tämä ominaisuus on käytössä seuraavissa:

            • Valinnat: Läpinäkyvässä tilassa kaikki valinnan " +"värit, jotka ovat samankaltaisia kuin taustaväri, muutetaan " +"läpinäkyväksi.
            • Täyttö: Alueissa, joissa on samankaltaisen – mutta ei täsmälleen saman – värisiä pikseleitä, korkeampi asetus " +"täyttää todennäköisemmin enemmän pikseleitä.
            • Värinpoistaja: " +"Kaikki pikselit, joiden väri on samankaltainen kuin edustaväri, " +"muutetaan taustan värisiksi.
            • Automaattirajaus ja Poista " +"sisäkehys: Kehykset, joissa on samankaltaisen – mutta ei " +"täsmälleen saman – värisiä pikseleitä, korkeampi asetus rajaa " +"todennäköisemmin koko kehyksen.

            Korkeammat asetukset saavat " +"toiminnot pitämään suurempaa värien eroavaisuutta tarpeeksi " +"samankaltaisena ollakseen sama väri. Siksi asetusta tulisi nostaa, " +"jos yllä mainitut toiminnot eivät vaikuta pikseleihin, joiden värit ovat " +"mielestäsi tarpeeksi samankaltaisia.

            Jos kuitenkin vaikutus on liian " +"suuri ja ne muuttavat pikseleitä, joiden värejä et koe samankaltaisiksi " +"(esim. jos Täyttö muuttaa liian monia pikseleitä), tätä asetusta " +"tulisi pienentää.

            Muuta napsauttamalla kuutiota.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Värien samankaltaisuus tarkoittaa, kuinka samankaltaisia eri pikseleiden värien täytyy olla, jotta toiminnot katsovat niiden " +"olevat samanvärisiä.

            Jos asetat sen johonkin muuhun arvoon " +"kuinTäsmälleen sama, työskentely epätarkkojen kuvien parissa on " +"helpompaa samaan tapaan kuin käytettäessä muiden piirto-ohjelmien " +"”Taikasauva”-työkalua.

            Tämä ominaisuus on käytössä seuraavissa:

            • Valinnat: Läpinäkyvässä tilassa kaikki valinnan " +"värit, jotka ovat samankaltaisia kuin taustaväri, muutetaan " +"läpinäkyväksi.
            • Täyttö: Alueissa, joissa on samankaltaisen – mutta ei täsmälleen saman – värisiä pikseleitä, korkeampi asetus " +"täyttää todennäköisemmin enemmän pikseleitä.
            • Värinpoistaja: " +"Kaikki pikselit, joiden väri on samankaltainen kuin edustaväri, " +"muutetaan taustan värisiksi.
            • Automaattirajaus ja Poista " +"sisäkehys: Kehykset, joissa on samankaltaisen – mutta ei " +"täsmälleen saman – värisiä pikseleitä, korkeampi asetus rajaa " +"todennäköisemmin koko kehyksen.

            Korkeammat asetukset saavat " +"toiminnot pitämään suurempaa värien eroavaisuutta " +"tarpeeksisamankaltaisena ollakseen sama väri. Siksi asetusta tulisi " +"nostaa, jos yllä mainitut toiminnot eivät vaikuta pikseleihin, joiden värit " +"ovat mielestäsi tarpeeksi samankaltaisia.

            Jos kuitenkin vaikutus on " +"liian suuri ja ne muuttavat pikseleitä, joiden värejä et koe " +"samankaltaisiksi (esim. jos Täyttö muuttaa liian monia pikseleitä), " +"tätä asetusta tulisi pienentää.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Värien samankaltaisuus: %1 %

            Napsauta " +"muuttaaksesi

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Värien samankaltaisuus: Täsmälleen sama

            Muuta " +"napsauttamalla.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Kirkkaus:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Palauta" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrasti" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&Nollaa" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanavia:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Kaikki" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Punainen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Vihreä" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Sininen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "P&alauta kaikki arvot" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Asetukset" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Määrä:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Käytä" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Värit" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Sävy:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Kylläisyys:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Arvo:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Punainen" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Vihreä" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Sininen" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Kaikki" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanavat" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Yksivärinen" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Y&ksivärinen (epätarkka)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 vä&riä" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 vär&iä (epätarkka)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bittinen väri" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Vähennä…" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Rakeisuus:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Valitaksesi työkalujen piirtoon käyttämän edustavärin napsauta hiiren " +"vasemmalla painikkeella värisolua. Valitaksesi taustavärin käytä hiiren " +"oikeaa painiketta.

            Vaihtaaksesi värisolun itsensä värin " +"kaksoisnapsauta sitä.

            Voit myös vaihtaa kahden solun värit keskenään " +"vetämällä ja pudottamalla. Jos painat vetäessäsi Ctrl-näppäintä, " +"kohdesolun väri korvataan, sen sijaan että se vaihdettaisiin lähdesolun " +"värin kanssa.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Muunna &muotoon:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Laa&tu:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Esikatselu" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Yksivärinen" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Yksivärinen (epätarkka)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256-väriä" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256-väriä (epätarkka)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bittinen väri" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Kuvan s&ijainti" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Sivun &keskellä" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Ylhäällä vasemmalla" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Läpinäkyvä" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint-oletukset" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Värit: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Värit: %1 [muutettu]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1 × 1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Ympyrä" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Neliö" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Vinoviiva" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Kenoviiva" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1 × %2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Ei täytettä" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Täytä taustavärillä" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Täytä edustavärillä" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Sumea" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Tiedosto nimeltä ”%1” on jo olemassa.\n" +#~ "Haluatko korvata sen?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Väripaletti %1 on jo olemassa.\n" +#~ "Korvataanko se?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Jos käytät zoomauksessa arvoa, joka ei ole 100 %:n kerrannainen, ei kuvan " +#~ "käsittely ole täysin tarkkaa. \n" +#~ "Haluatko varmasti käyttää arvoa %1 %?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Aseta zoomaus arvoksi %1 %." + +#~ msgid "None" +#~ msgstr "Ei mikään" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Kuvan koon muuttaminen kokoon %1×%2 voi kuluttaa runsaasti " +#~ "muistia. Tämä voi vaikuttaa järjestelmän käyttömukavuuteen ja aiheuttaa " +#~ "muita ongelmia.

            Haluatko varmasti muuttaa kuvan kokoa?

            " + +#~ msgid "Overwrite" +#~ msgstr "Korvaa" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Ei voi avata: ”%1” - tuntematon MIME-tyyppi." + +#~ msgid "Save Preview" +#~ msgstr "Tallenna esikatselu" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Tukea löydät ohjelman verkkosivulta." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Skannausikkunaa tarjoavaa liitännäistä ei löydy.\n" +#~ "Yleensä tämä merkitsee sitä, että ksanepluginin tarjoavaa pakettia ei ole " +#~ "asennettu." + +#~ msgid "No Scanning Support" +#~ msgstr "Ei tukea skannaukselle" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Tukea kuvan skannaukselle ei ole asennettu." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            KolourPaint ei voi liittää leikepöydän sisältöä, sillä se katosi " +#~ "odottamatta.

            Tämän syynä on useimmiten leikepöydän sisällöstä " +#~ "vastanneen sovelluksen sulkeminen.

            " + +#~ msgid "Flip Selection" +#~ msgstr "Käännä valinta" + +#~ msgid "Flip Image" +#~ msgstr "Käännä kuva" + +#~ msgid "&Horizontal" +#~ msgstr "&Vaaka" + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Kuvassa ”%1” saattaa olla enemmän värejä kuin nykyinen näyttötila " +#~ "tukee. Jotta se voitaisiin näyttää, väritietoa saatetaan poistaa.

            Jos tallennat tämän kuvan, värien hävikki jää pysyväksi

            Välttääksesi tämän nosta värisyvyys vähintään %2 bpp:hen ja " +#~ "käynnistä KolourPaint uudelleen.


            Kuva sisältää myös " +#~ "läpinäkyvyyttä, mitä ei täysin tueta. Läpinäkyvyystieto approksimoidaan 1-" +#~ "bittisellä läpinäkyvyyspeitteellä.

            Jos tallennat tämän kuvan, " +#~ "läpinäkyvyyden menetys jää pysyväksi.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Ei voinut avata: ”%1” - grafiikkamuisti lopussa." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Scanning Support" +#~ msgstr "Kuvanlukijatuki" + +#, fuzzy +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            KolourPaint


            on

            " + +#, fuzzy +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "

            KolourPaint

            " + +#, fuzzy +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "

            on

            " + +#, fuzzy +#~ msgid "

            There is nothing in the clipboard to paste.

            " +#~ msgstr "

            on

            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Aseta taustakuvaksi (&keskitetty)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Aseta taustakuvaksi (&Tiled)" + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Ei voitu skannatta - grafiikkamuisti käytetty loppuun." + +#~ msgid "Cannot Scan" +#~ msgstr "Ei voi skannata" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Ennen kuvan asettamista taustakuvaksi on se tallennettava paikalliseksi " +#~ "tiedostoksi.\n" +#~ "Haluatko tallentaa sen?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Ennen kuvan asettamista taustakuvaksi on se tallennettava.\n" +#~ "Haluatko tallentaa sen?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Ei voi vaihtaa taustakuvaa." + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "&Kuvankaappausten tekeminen" + +#, fuzzy +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            Paina %1 tehdäksesi kuvankaappauksen. Kuva siirretään " +#~ "leikepöydälle ja voit liittää sen KolourPaint-ohjelmassa.

            Voit " +#~ "muokata kuvankaappauksen asetuksia KDE:n Ohjauskeskuksen modulissa Näppäimistön pikavalinnat.

            " +#~ "

            Vaihtoehtoisesti voit kokeilla sovellusta KSnapshot.

            " + +#, fuzzy +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            Et käytä KDE-työpöytää

            Ladattuasi KDE:n voit:" +#~ "

            Ottaa kuvankaappauksen painamalla %1. " +#~ "Kuvankaappaus asetetaan leikepöydälle ja voit liittää sen kuvaan " +#~ "KolourPaint-ohjelmalla.

            Vaihtoehtoisesti voit käyttää " +#~ "erillistä KSnapshot-ohjelmaa.

            " + +#~ msgid "&Flip..." +#~ msgstr "&Käännä..." + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Menetetään väritietoja ja tietoja läpinäkyvyydestä" + +#~ msgid "Loss of Color Information" +#~ msgstr "Menetetään väritietoja" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Menetetään tietoja läpinäkyvyydestä" + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Näyttötilaa ei tueta" + +#, fuzzy +#~ msgid "" +#~ "

            This effect does not support the current screen depth of %1bpp.

            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

            " +#~ msgstr "

            KolourPaint

            " diff --git a/po/fr/docs/kolourpaint/index.docbook b/po/fr/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..5dab85a --- /dev/null +++ b/po/fr/docs/kolourpaint/index.docbook @@ -0,0 +1,1766 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +Manuel de &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +&traducteurOlivierRenaud; + + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +23-03-2018 +Applications 18.04 + + +&kolourpaint; est un logiciel de dessin libre et simple d'utilisation pour &kde;. + + + +kolourpaint +kdegraphics + + + + + +Introduction +&kolourpaint; est un logiciel de dessin libre et simple d'utilisation pour &kde;. Il est parfait pour effectuer des tâches courantes telles que : + + + +La peinture - dessiner des diagrammes et faire de la peinture aux doigts + + +la manipulation de captures d'écran - acquisition et modification des captures + + +La manipulation d'images - éditer des photos et des images capturées ; appliquer des effets + + +L'édition d'icônes - dessiner des cliparts et des logos avec de la transparence + + + + + + + + + + + + + +Utilisation de &kolourpaint; + +Cliquez sur les liens suivants pour explorer les possibilités de &kolourpaint; : + + + +Outils + + +Manipuler la Couleur + + +Options des Vues + + +Effets Graphiques + + + + + +Outils + +Une option additionnelle dans le menu Configuration vous permet de définir su les outils effectuent des dessins avec anticrénelage (par défaut) ou non. + + +Effectuer des captures d'échan + +Une capture d'écran est un instantané de ce qu'il y a sur votre écran d'ordinateur. Elle peut être utile pour expliquer les actions qui doivent être faites pour obtenir un certain résultat, ou pour illustrer les problèmes que vous avez rencontrés. +Pour faire une capture l'écran prête à être modifiée dans &kolourpaint;, vous pouvez utiliser FichierPrendre une capture d'écran depuis le menu principal de &kolourpaint;. + + + + + + + +En utilisant la boîte de dialogue ouverte, vous pouvez modifier le Délai avant capture (en secondes), et choisir de Cacher la fenêtre principale pendant la capture. Lorsque vous êtes prêts à prendre la capture, cliquez simplement sur le bouton Ok. La capture prise sera placée directement dans la zone de modification de &kolourpaint;. + + + +Référence sur les Outils + +Une façon rapide de sélectionner un outil dans &kolourpaint; est d'utiliser la touche de raccourci qui lui est associée, raccourcis documentés ci-dessous et dans les bulles d'aide de la Boîte à Outils. Vous pouvez aussi maintenir &Alt;&Maj; pendant l'appui de cette touche, ce qui est nécessaire lorsque vous êtes en train d'écrire du texte (la touche de raccourci est alors inactive). Par exemple, pour sélectionner la brosse, appuyez sur &Alt;&Maj;B ou simplement sur B (lorsque vous n'écrivez pas de texte). + + + Brosse (B) + + Gomme de Couleur (O) + + Pipette (C) + + Lignes Connectées (N) + + Courbe (V) + + Ellipse (E) + + Gomme (A) + + Pot de Peinture (F) + + Ligne (L) + + Crayon (P) + + Polygone (G) + + Rectangle (R) + + Rectangle Arrondi (U) + + Sélection (Elliptique) (I) + + Sélection (Forme Libre) (M) + + Sélection (Rectangulaire) (S) + + Aérographe (Y) + + Texte (T) + + + + + +Brosse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Cliquez ou cliquez-glissez avec la brosse pour dessiner. + + + + + + + + + + + + + + +Cliquez sur une des formes pour sélectionner la forme de la brosse. Vous pouvez utiliser une forme circulaire, carrée, oblique ou contre-oblique. + + + + + + +Le &BGS; dessine avec la couleur de premier plan. Le &BDS; dessine avec la couleur d'arrière-plan. + + + +Pipette <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Pour choisir la couleur du premier plan, faites un clic gauche sur un pixel. Pour choisir la couleur d'arrière-plan, faites un clic droit sur un pixel. &kolourpaint; retournera alors à l'outil précédemment sélectionné. + + + + +Lignes Connectées et Polygones <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez-glissez pour dessiner des lignes connectées. L'outil Polygone s'utilise de la même manière, cependant, les points de départ et d'arrivée sont connectés automatiquement pour former un polygone. + +Le &BGS; dessine avec la couleur de premier plan. Le &BDS; dessine avec la couleur d'arrière-plan, et inverse aussi la couleur de remplissage pour les polygones. + +Vous pouvez choisier l'épaisseur de la ligne. Pour les polygones, vous pouvez aussi choisir le mode de remplissage. + + + + +Courbe <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez-glissez pour dessiner une ligne - ceci déterminera les points de départ et d'arrivée. Vous pouvez définir jusqu'à deux points de contrôle en cliquant-glissant. Pour terminer la courbe sans utiliser les deux points de contrôle, cliquez sur l'autre bouton de la souris. L'outil Courbe dessine une Courbe de Bézier. + +Le &BGS; dessine avec la couleur de premier plan. Le &BDS; dessine avec la couleur d'arrière-plan. + +Vous pouvez aussi choisir l'épaisseur de ligne. + + + + +Ellipse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez-glissez pour dessiner une ellipse. + +Le &BGS; dessine avec la couleur de premier plan. Le &BDS; dessine avec la couleur d'arrière-plan, et inverse aussi la couleur de remplissage. + +Vous pouvez aussi choisir l'épaisseur de ligne et le mode de remplissage. + +Pour des fonctionnalités supplémentaires, utilisez les touches modificatrices : + + + +Maintenez &Maj; et glissez pour dessiner un cercle. + + +Pour dessiner une ellipse à partir du point central de votre choix, maintenez &Ctrl;. Cliquez que le point central, et glissez jusqu'à ce que l'ellipse ait la taille et la forme souhaitée. + + +Pour dessiner un cercle à partir du point central de votre choix, maintenez &Ctrl; et &Maj;. Cliquez que le point central, et glissez jusqu'à ce que le cercle ait la taille souhaitée. + + + + + + +Gommes + + +Gomme <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez et glissez avec la gomme pour effacer les erreurs + + +Contrairement aux autres outils, les gommes dessinent avec la couleur d'arrière-plan. Pour dessiner avec la couleur de premier plan, utilisez le &BDS;. + + +La gomme ne possède que des formes carrées. Pour dessiner avec d'autres formes telles que le cercle, utilisez la Brosse et le &BDS;. + + +Double-cliquez sur l'icône de la Gomme pour effacer entièrement l'image. Cela revient à utiliser l'option Effacer du menu Image. + + + + + +Gomme de Couleur <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez-glissez pour remplacer les pixels de la couleur de premier plan par la couleur d'arrière-plan. Pour remplacer tous les pixels similaires (mais pas nécessairement égaux) à la couleur de premier plan, comment dans une image floue ou une photo, utilisez une configuration pour la Similitude des Couleurs autre que Exacte. + + +Contrairement aux autres outils, les gommes dessinent avec la couleur d'arrière-plan. Pour remplacer des pixels de couleur d'arrière-plan par la couleur de premier plan, utilisez le &BDS;. + + +Vous pouvez configurer la taille de la gomme. + + +Double-cliquez sur l'icône de la Gomme de Couleur pour l'appliquer à l'image entière. + + + + + + +Pot de Peinture <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez pour remplir une région. Pour remplir une région floue, utilisez une configuration pour la Similitude des Couleurs autre que Exacte. + +Le &BGS; remplit avec la couleur de premier plan. Le &BDS; remplit avec la couleur d'arrière-plan. + + + +Ligne <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez et glissez pour dessiner une ligne + +Le &BGS; dessine avec la couleur de premier plan. Le &BDS; dessine avec la couleur d'arrière-plan. + +Vous pouvez aussi choisir l'épaisseur de ligne. + + + + + + + + + + + + + + + + + + + + + +Maintenez &Ctrl; pour dessiner des lignes avec un angle arrondi au multiple de 30 degrés le plus proche - ce sont les lignes du diagramme rouge. + + +Maintenez &Maj; pour dessiner des lignes avec un angle arrondi au multiple de 45 degrés le plus proche - ce sont les lignes du diagramme bleu. + + +Maintenez &Ctrl; et &Maj; pour dessiner des lignes avec un angle arrondi au multiple de 30 ou 45 degrés le plus proche - ce sont les lignes du diagramme vert. + + + + + + +Crayon <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez pour dessiner un point, ou cliquez-glissez pour dessiner une ligne à main levée. + +Le &BGS; dessine avec la couleur de premier plan. Le &BDS; dessine avec la couleur d'arrière-plan. + + + + +Rectangles <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez et glissez pour dessiner un rectangle. Le Rectangle Arrondi est un Rectangle avec des coins arrondis. + +Le &BGS; dessine avec la couleur de premier plan. Le &BDS; dessine avec la couleur d'arrière-plan, et inverse aussi la couleur de remplissage. + +Vous pouvez aussi choisir l'épaisseur de ligne et le mode de remplissage. + +Pour des fonctionnalités supplémentaires, utilisez les touches modificatrices : + + + +Maintenez &Maj; et glissez pour dessiner un carré. + + +Pour dessiner un rectangle à partir d'un point central de votre choix, maintenez &Ctrl;, cliquez sur le point central, et glissez jusqu'à ce que le rectangle ait une taille et une forme correctes. + + +Pour dessiner un carré à partir d'un point central de votre choix, maintenez &Ctrl;, et &Maj; cliquez sur le point central, et glissez jusqu'à ce que le carré ait une taille et une forme correctes. + + + + + + +Sélections <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Utilisez les outils de sélection pour dessiner les limites d'une sélection. + +Pour déplacer la sélection, cliquez dessus et faites glissez la souris. La vue principale défilera suffisamment pour vous permettre de déplacer la sélection jsuqu'à une partie de l'image qui n'est pas encore visible. + +Vous pouvez Redimensionner à la main l'image entière, ou mettre à l'échelle la sélection en utilisant les poignées de contrôle correspondantes. Maintenez &Maj; pendant la mise à l'échelle afin de maintenir les proportions. Le &BDS; invoque un menu contextuel contenant des commandes d'Édition courantes et des Effets Graphiques. + + +Vous pouvez utiliser les touches fléchées pendant le dessin des limites de la sélection, ou durant son déplacement. + + +Si vous maintenez &Ctrl; avant de déplacer la sélection, vous déplacerez alors une copie de celle-ci. La sélection sera dupliquée en continu si le déplacement s'effectue avec la touche &Maj; enfoncée. + + + + + + + + + + + + + +Il y a deux modes de sélection : opaque (par défaut) et transparent. Si vous utilisez le mode de sélection Transparent, tous les pixels de la couleur d'arrière-plan seront transparents (soustraction de l'arrière-plan). Cela permet de coller une sélection sans coller l'arrière-plan. Pour effectuer une soustraction d'arrière-plan sur une image floue, utilisez une configuration pour la Similitude des Couleurs autre que Exacte. + + + + + + +Vous pouvez appliquer un Effet Graphique à une sélection - Lisez la section Effets Graphiques pour plus d'information. + +Il est possible d'enregistrer une sélection vers un fichier en utilisant l'élément Copier vers un fichier... à partir du menu contextuel de sélection ou par l'élément ModifierCopier vers un fichier... à partir du menu principal. + + + +Aérographe <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez-glissez pour utiliser l'aérographe. Maintenez le bouton de la souris pour obtenir un spray plus concentré. + + + + + + + + + + + + + +Cliquez sur l'une des formes pour sélectionner la taille de l'aérographe. Vous pouvez choisir parmi les tailles 9x9, 17x17 et 29x29. + + + + + + +Le &BGS; dessine avec la couleur de premier plan. Le &BDS; dessine avec la couleur d'arrière-plan. + + + + +Texte <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Cliquez-glissez pour délimiter la zone dans laquelle écrire le texte. Dès que la bordure est visible, vous pouvez commencer à écrire. Cliquez-glissez à partir du bord pour le déplacer. Vous pouvez redimensionner la zone de texte en vous servant des poignées de contrôle, ou en utilisant la boîte de dialogue de Redimensionnement. + + +Si vous avez désélectionné une zone de texte, vous pouvez utiliser la commande Annuler pour éditer le texte à nouveau. + + + +Utilisation de la Couleur Transparente + + + + + + + + +L'image de gauche est l'image originale. L'image de droite montre l'addition d'un texte avec un premier plan et un arrière-plan opaque. + + + + + + + + + +L'image de gauche montre l'addition d'un texte avec un premier plan opaque et un arrière-plan transparent. L'image de droite montre l'addition d'un texte avec un premier plan transparent et un arrière-plan opaque. + + + + +Options communes des Outils + + + + + + + + + + + + + +Cliquez sur l'un des carrés pour sélectionner la taille de la gomme. Vous pouvez choisir parmi des carrés de côté 2, 3, 5, 9, 17 et 29 pixels. + +La configuration de la taille de la gomme affecte toutes les Gommes. + + + + + + + + + + + +Cliquez sur l'une des lignes pour sélectionner l'épaisseur de la ligne. Vous pouvez choisir parmi les épaisseurs de 1, 2, 3, 5 et 8 pixels. + +La configuration de l'épaisseur des lignes affecte les outils de Lignes Connectées, Courbes, Ellipse, Ligne, Polygone, Rectangle et Rectangle Arrondi. + + + + + + + + + + + +Cliquez sur un des rectangles pour sélectionner le style de remplissage. Vous pouvez choisir parmi Pas de remplissage, Remplissage avec la couleur d'arrière-plan, Remplissage avec la couleur de premier plan. La configuration du style de remplissage affecte les outils d'Ellipse, Polygone, Rectangle et Rectangle Arrondi. + + + + + + + + + + +Manipuler la Couleur + + +La Boîte de Couleur + + + + + + + +Boîte de Couleur + + + + +La boîte de couleur est constituée de trois sections : la Tablette de Couleur, la Palette de Couleur, et le Sélecteur de Similitude de Couleurs. + +La Tablette de Couleur affiche la couleur de premier plan courante dans un carré, au-dessus d'un autre carré représentant la couleur d'arrière-plan courante. Lorsque vous dessinez avec le &BGS;, la couleur de premier plan est utilisée, et lorsque vous dessinez avec le &BDS;, la couleur d'arrière-plan est utilisée (à l'exception des Gommes). Vous pouvez cliquer sur la flèche pour intervertir la couleur de premier plan et la couleur d'arrière-plan. + +La Palette de Couleur affiche une sélection de couleur vous permettant de faire votre choix. La pyramide translucide représente la couleur transparente. Faites un clic gauche sur une couleur pour l'utiliser comme couleur de premier plan, et faites un clic droit sur une couleur pour l'utiliser comme couleur d'arrière-plan. Vous pouvez aussi cliquer-déposer n'importe quelle couleur opaque dans les carrés de la Tablette de Couleur. Pour éditer une couleur dans la Tablette de Couleur ou la Palette, double-cliquez dessus. L'outil Pipette vous permet de sélectionner une couleur depuis l'image. + +La Similitude de Couleurs vous permet de travailler plus efficacement avec des images floues et des photos, de la même manière que pour la fonctionnalité Baguette Magique d'autres programmes de dessin. Il s'applique aux sélections transparentes, ainsi qu'aux outils de Pot de Peinture, Gomme de Couleur et Rognure Automatique. Double-cliquez sur le Sélecteur de Similitude de Couleur pour choisir à quel point des couleurs doivent être similaires pour être considérées comme identiques. Lors de l'utilisation de sélections en mode Transparent, toutes les couleurs dans cette sélection qui sont similaires à la couleur de l'arrière-plan seront aussi considérés comme transparents. + + + + + + + + + +L'image de gauche est l'image originale. L'image de droite montre l'utilisation de l'outil Pot de Peinture, avec une Similitude de Couleurs fixée à 5 %, 15 % et 30 %. Dans cet exemple, avec une Similitude de Couleurs fixée à Exact, l'utilisation de l'outil Pot de Peinture à la position (80, 100) n'aurait rempli qu'un seul pixel, puisque les pixels avoisinants sont similaires mais ne sont pas identiques. En augmentant la Similitude de Couleurs, on augmente le nombre de pixels similaires qui seront considérés comme identiques, ce qui étend d'autant plus le remplissage. + + + + + +Options des Vues + + +Réference sur les Options des Vues + +Zoom et Grille +Aperçu + + + + +Zoom et Grille +Augmentez le niveau de zoom pour éditer les images avec plus de précision, ou réduisez-le pour voir l'image dans son ensemble. + + +Pour des niveaux de zoom qui ne sont pas multiples de 100 %, des parties de l'image peuvent sembler se mouvoir lorsque l'utilisateur interagit avec elles. D'autres anomalies mineures peuvent survenir à de tels niveaux de zoom. + + +Pour des niveaux de zoom supérieurs ou égaux à 400 %, qui sont aussi multiples de 100 %, vous pouvez Afficher la Grille pour une édition plus précise au niveau des pixels. + + + + + + + + + + + + + + + +La première image montre l'icône de l'outil Texte, tandis que la seconde montre cette même image zoomée à 600 %, avec la grille activée. + + +Une autre façon de zoomer lorsque l'on ne dessine pas, est d'utiliser la molette de défilement de la souris en maintenant appuyé &Ctrl;. + + + + + +Vignette + + + + + + + +Si le Mode zoom de vignette est sélectionné, l'image entière est affichée, redimensionnée de façon à s'adapter à la fenêtre d'aperçu (image en haut à droite). +Dans le cas contraire, la vignette s'affiche aussi grande que possible, en partant du coin haut-gauche de la vue principale (image en bas à droite). + + + + + +Effets Graphiques + + +Réference des Effets Graphiques +Rogner Automatiquement +Balance des Couleurs +Effacer +Relief +Aplatir +Retourner (de haut en bas) +Inverser +Réduire les Couleurs +Convertir en Niveaux de Gris +Convertir en Monochrome (avec tramage) +Miroir (horizontal) +Redimensionner / Ajuster l'Échelle +Rotation +Définir comme Image (Rogner) +Cisaillement +Adoucir / Augmenter la netteté +Plus d'Effets +Notes + + + +Rogner Automatiquement + +Cet effet retire automatiquement les bordures d'une image ou d'une sélection. Utilisez la Rognure Automatique si vous avez une figure qui ne remplit pas entièrement l'image ou la sélection, et que vous souhaitez retirer les blancs superflus. Pour utiliser cette fonctionnalité avec une bordure d'image floue, vous aurez également besoin d'utiliser les Similitudes de Couleurs. + + + + +Balance des Couleurs + +Cette fonctionnalité est accessible depuis la boîte de dialogue Plus d'Effets. + + + + + + + + +Cela vous permet d'ajuster la luminosité, le contraste, et le gamma d'une image ou d'une sélection. + + +La mesure la plus courante de gamma (une valeur décimales de 0,10 à 10,00) est située entre le sélecteur de valeur Gamma et le bouton Réinitialiser. + + + + +Effacer + +Remplit l'image ou la sélection entièrement avec la couleur d'arrière-plan. + + +Double-cliquez sur l'icône de la Gomme pour effacer entièrement l'image. + + + + + +Relief + +Cette fonctionnalité est accessible depuis la boîte de dialogue Plus d'Effets. + + + + + + + + +Cochez la case Activer pour appliquer l'effet Relief. Cet effet met en valeur les bords, et donne à l'image ou à la sélection une apparence de gravure. + + + +Aplatir + +Cette fonctionnalité est accessible depuis la boîte de dialogue Plus d'Effets. + + + + + + + + +Cet effet permet de recolorer l'image, en utilisant des nuances des deux couleurs sélectionnées. + + + +Retourner (de haut en bas) + +Retourne verticalement l'image entière ou la sélection. + + + + +Inverser + +Cette fonctionnalité est accessible depuis la boîte de dialogue Plus d'Effets. + + + + + + + + +L'inversion vous permet d'inverser un ou plusieurs canaux RVB dans l'image ou dans une sélection. Sélectionnez Tous pour convertir une photo en son négatif, et vice versa. + + +Pour inverser rapidement les canaux, vous n'avez pas besoin d'utiliser cette boîte de dialogue. Vous pouvez utiliser à la place l'élément Inverser les Couleurs dans le menu Image ou Sélection. L'élément Sélection n'est visible dans la barre de menus que si vous utilisez un des outils de sélection. Vous pouvez également atteindre cette action depuis le ment contextuel qui s'affiche lors d'un clic du &BDS; dans la zone de l'image. + + + + + +Miroir (horizontal) + +Retourne horizontalement l'image entière ou la sélection. + + + + +Réduire les couleurs + +Cette fonctionnalité est accessible depuis la boîte de dialogue Plus d'Effets. + + + + + + + + +Réduit le nombre de couleurs utilisées par l'image ou la sélection, avec ou sans tramage. + +Le tramage donne généralement une meilleure qualité de résultat, cependant vous pouvez choisir de le désactiver pour un effet artistique ; &pex;, utiliser Monochrome au lieu de Monochrome (tramée) donne un effet de silhouette. + +Une autre différence importante est que Monochrome (tramée) réduira toujours les couleurs de l'image ou de la sélection vers le noir et blanc, tandis que Monochrome ne le fera que si l'image ou la sélection contient plus de deux couleurs. + + +Pour appliquer une réduction monochrome tramée rapidement, utilisez l'élément Convertir en Monochrome (avec tramage) du menu Image ou Sélection. L'élément Sélection n'est visible dans la barre de menus que si vous utilisez un des outils de sélection. Vous pouvez également atteindre cette action depuis le ment contextuel qui s'affiche lors d'un clic du &BDS; dans la zone de l'image. + + + +Changer le nombre de couleurs de cette façon n'a pas d'effet sur la profondeur de couleur du format d'image. Si vous souhaitez changer la profondeur de couleur, vous devrez faire cette sélection dans la boîte de dialogue de sauvegarde de fichier. Notez que le fait de modifier la profondeur de couleur a pour effet de modifier aussi le nombre de couleurs dans l'image. + + + + +Convertir en Niveaux de Gris + +Réduit l'image ou la sélection entière en niveaux de gris. + + + + +Convertir en Monochrome (tramée) + +Réduit l'image ou la sélection entière en noir et blanc. + + +Si vous ne voulez pas que l'image ou la sélection soit tramée, utilisez la boîte de dialogue Réduire les Couleurs. + + + + +Redimensionner / Ajuster l'Échelle + + + + + + + + + +Redimensionner l'image change les dimensions de l'image sans appliquer de transformation au contenu existant. Ajuster l'échelle étirera le contenu existant au nouvelles dimensions. Ajuster l'Échelle avec Lissage donne géneralement une meilleur qualité de résultat que l'ajustement d'échelle simple, en mélangeant les couleurs voisines. + +Vous pouvez définir les nouvelles dimensions en pixels, ou en valeur de pourcentage par rapport à la taille d'origine. Si vous sélectionnez Conserver les Proportions, la largeur et la hauteur seront ajustés avec le même pourcentage. + + +Vous pouvez Redimensionner l'image entière, ou Ajuster l'Échelle avec Lissage pour une sélection, en utilisant les poignées de contrôle correspondantes. + + + +Seul l'ajustement de l'échelle est pris en charge pour les sélections, et seul le redimensionnement est pris en charge pour les champs de texte. Consultez les Notes pour des détails supplémentaires sur la façon d'appliquer ces effets. + + + + +Rotation + + + + + + + + + +Effectuer une rotation de l'image. Vous pouvez spécifier un angle et une direction pour la rotation. + + +Vous pouvez inverser la direction de la rotation en spécifiant une valeur négative de votre choix. + + + +Consultez les Notes pour plus de détails concernant l'application de cet effet à une sélection. + + + + +Définir comme Image (Rogner) + +Cette action définira la sélection comme étant l'image courante. + + +Ceci n'est applicable que lorsque vous avez une sélection active. + + + + +Cisaillement + + + + + + + + + +Cisailler l'image ou la sélection entière, horizontalement et/ou verticalement. + + +Consultez les Notes pour plus de détails concernant l'application de cet effet à une sélection. + + + + +Adoucir / Augmenter la Netteté + +Cette fonctionnalité est accessible depuis la boîte de dialogue Plus d'Effets. + + + + + + + + +Utilisez cet effet pour adoucir ou augmenter la netteté de l'image. + + + + +Plus d'Effets + +Cette boîte de dialogue contient les fonctionnalités Balance des Couleurs, Relief, Aplatir, Inverser, Réduire les couleurs et Adoucir / Augmenter la Netteté. + + + +Notes + +Redimensionner / Ajuster l'Échelle, Rotation et Cisaillement peuvent modifier les dimensions de l'image. Vous pouvez voir les nouvelles dimensions dans la boîte de dialogue. + +Si vous appliquez ces effets à une image, l'image sera redimensionnée si nécessaire. Cependant, si vous appliquez ces effets à une sélection, l'image ne sera pas redimensionnée, même si la sélection transformée dépasse de l'image. + + + + + + + + + +L'image de gauche a subi une rotation de 30 degrés dans le sens horaire, pour devenir l'image de droite. &kolourpaint; a élargi automatiquement l'image pour accueillir le contenu plus large. + + + + + + + + + +La sélection de gauche a subi une rotation de 30 degrés dans le sens horaire, pour devenir l'image de droite. La taille de l'image est restée la même, même si les parties de la sélection ne seront pas visibles sans Redimensionner l'image. + + + + + +Remerciements et licence + +Carl Tucker +Cela peut ne pas être une documentation concise. Cela peut ne pas être une documentation complète ; mais c'est une documentation honnête. + + +&kolourpaint; +Copyright pour le programme © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Icônes spécifiques à &kolourpaint; Copyright © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Créations artistiques pour la documentation et la documentation additionelle Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Parties reproduites avec la permission de . + +Traduction française par &OlivierRenaud;. &underFDL; Ce programme est soumis aux licences suivantes : + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; + + + diff --git a/po/fr/kolourpaint.po b/po/fr/kolourpaint.po new file mode 100644 index 0000000..1c2b73a --- /dev/null +++ b/po/fr/kolourpaint.po @@ -0,0 +1,3094 @@ +# translation of kolourpaint.po to Français +# traduction de kolourpaint.po en Français +# traduction de kolourpaint.po en Français +# Cedric Pasteur , 2004. +# Matthieu Robin , 2004, 2005. +# Nicolas Ternisien , 2004, 2005, 2008, 2009, 2010. +# Matthieu Robin , 2005. +# Thomas Boeglin , 2008. +# Guillaume Pujol , 2008. +# Sébastien Renard , 2008. +# Mickael Sibelle , 2008, 2012. +# xavier , 2013. +# Sebastien Renard , 2015. +# Yoann Laissus , 2018. +# Simon Depiets , 2019. +# Xavier Besnard , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-04 08:47+0200\n" +"Last-Translator: Xavier Besnard \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 21.04.2\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" +"Xavier Besnard, Matthieu Robin, Cédric Pasteur, Nicolas Ternisien, Sébastien " +"Renard" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"xavier.besnard@neuf.fr, kde@macolu.org, cedric.pasteur@free.fr, nicolas." +"ternisien@gmail.com, renard@kde.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balance des couleurs" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Adoucir" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Renforcer" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Effacer" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Sélection : %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Mettre en relief" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Aplatir" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Convertir en niveaux de gris" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Teinte, saturation, valeur" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inverser les couleurs" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverser" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Convertir en monochrome (avec tramage)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Convertir en monochrome" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Convertir en 256 couleurs (avec tramage)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Convertir en 256 couleurs" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Égaliseur d'histogramme" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Retourner" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Retourner horizontalement et verticalement" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Retourner horizontalement" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Retourner verticalement" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Texte : re-dimensionner une zone" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Sélection : mise à l'échelle" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Sélection : mise à l'échelle avec lissage" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Re-dimensionner" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Mettre à l'échelle" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Mettre à l'échelle avec lissage" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rotation" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Cisailler" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "Ann&uler : %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "Ann&uler" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Refaire : %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Refaire" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Ann&uler : %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Annuler" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Refaire : %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Refaire" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1 : %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 élément en plus" +msgstr[1] "%1 éléments en plus" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Pipette de couleur" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Pot de peinture" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Plus d'effets d'image (sélection)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Plus d'effets d'image" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effet :" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Réduire les couleurs" + +# unreviewed-context +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Adoucir / Renforcer" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Propriétés du document" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Points par pouce (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Non spécifié" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontal :" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical :" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Points par pouce (DPI) spécifie le nombre de pixels de l'image " +"devant être imprimé dans un pouce (2,54cm).

            Plus ce nombre est grand, " +"plus l'image imprimée est petite. Veuillez noter que votre imprimante ne " +"produira certainement pas d'impression de haute qualité si vous augmentez ce " +"nombre au-dessus de 300 ou 600 DPI, selon votre imprimante.

            Si vous " +"voulez imprimez l'image telle qu'elle est affichée à l'écran, indiquez pour " +"la valeur DPI de l'image la même valeur que pour votre écran.

            Si l'une " +"des valeurs DPI n'est pas indiquée, l'image sera aussi imprimée avec " +"les mêmes dimensions qu'à l'écran.

            Tous les formats d'image ne " +"prennent pas en charge les valeurs de DPI. Si le format dans lequel vous " +"enregistrez l'image ne les prend pas en charge, elles ne seront pas " +"enregistrées.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Décalage" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Le décalage est la position relative de l'image, par rapport " +"aux autres images.

            Tous les formats d'image ne prennent pas en charge " +"la fonctionnalité Décalage. Si le format dans lequel vous enregistrez " +"ne le prend pas en charge, les valeurs spécifiées ici ne seront pas " +"enregistrées.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Champs de &texte" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Ajouter une ligne" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Supprimer une ligne" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Ré-initialiser" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Les champs de texte fournissent des informations " +"complémentaires sur l'image. Il s'agit souvent d'un champ de commentaire où " +"vous pouvez écrire n'importe quel texte.

            Toutefois, ce champ est " +"spécifique à chaque format et peut donc, en théorie, contenir des données " +"interprétées que vous ne devriez pas modifier, mais c'est peu probable.

            Tous les formats d'image ne prennent pas en charge les champs de " +"texte. Si le format dans lequel vous enregistrez ne les prend pas en " +"charge, il ne seront pas enregistrés.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Clé" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valeur" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "La valeur de texte « %1 » sur la ligne %2 nécessite une clé." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Toutes les clés de texte doivent être uniques. La clé de texte « %1 » des " +"lignes %2 et %3 sont identiques." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Champs de texte non valables" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensions" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Originales :" + +# unreviewed-context +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Aperçu" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Mise à jo&ur" + +# unreviewed-context +# unreviewed-context +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Re-dimensionner / Mettre à l'échelle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "A&gir sur :" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Image entière" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Sélection" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Zone de texte" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Opération" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Re-dimensionner : la taille de l'image sera augmentée " +"par la création de nouvelles zones à droite et / ou en bas (remplies avec la " +"couleur de fond) ou réduite en coupant l'image à droite et / ou en bas.
            • Mettre à l'échelle : l'image sera agrandie en dupliquant des " +"pixels ou réduite en supprimant des pixels.
            • Mettre à l'échelle " +"avec lissage : cette option est identique à Mettre à l'échelle, " +"sauf que les pixels voisins sont mélangés pour produire une image plus lisse." +"
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Re-dimensionner" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Mettre à l'échelle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "&Mettre à l'échelle avec lissage" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Largeur :" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Hauteur :" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nouveau :" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Pourcentage :" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "&Conserver les proportions" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Le re-dimensionnement de la zone de texte à %1 x %2 peut consommer " +"beaucoup de mémoire. Ceci peut réduire la réactivité du système et provoquer " +"des problèmes de ressources pour d'autres applications.

            Voulez-vous " +"redimensionner la zone de texte ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Re-dimensionner la zone de texte ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "R&e-dimensionner la zone de texte" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Le re-dimensionnement de l'image à %1 x %2 peut consommer beaucoup " +"de mémoire. Ceci peut réduire la réactivité du système et provoquer des " +"problèmes de ressources pour d'autres applications.

            Voulez-vous " +"vraiment re-dimensionner l'image ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Re-dimensionner l'image ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&e-dimensionner l'image" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            La mise à l'échelle de l'image à %1 x %2 peut consommer beaucoup de " +"mémoire. Ceci peut réduire la réactivité du système et provoquer des " +"problèmes de ressources pour d'autres applications.

            Voulez-vous " +"vraiment mettre l'image à l'échelle ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Mettre l'image à l'échelle ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Mettr&e l'image à l'échelle " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            La mise à l'échelle de la sélection à %1 x %2 peut consommer " +"beaucoup de mémoire. Ceci peut réduire la réactivité du système et provoquer " +"des problèmes de ressources pour d'autres applications.

            Voulez-vous " +"vraiment mettre la sélection à l'échelle ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Mettre la sélection à l'échelle ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Mettr&e la sélection à l'échelle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            La mise à l'échelle de l'image avec lissage à %1 x %2 peut consommer " +"beaucoup de mémoire. Ceci peut réduire la réactivité du système et provoquer " +"des problèmes de ressources pour d'autres applications.

            Voulez-vous " +"mettre l'image à l'échelle avec lissage ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Mettre à l'échelle l'image avec lissage ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Mettre à l'éch&elle l'image avec lissage" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            La mise à l'échelle de la sélection avec lissage à %1 x %2 peut " +"consommer beaucoup de mémoire. Ceci peut réduire la réactivité du système et " +"provoquer des problèmes de ressources pour d'autres applications.

            Voulez-vous mettre à l'échelle la sélection avec lissage ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Mettre à l'échelle la sélection avec lissage ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "M&ettre à l'échelle la sélection avec lissage" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rotation de la sélection" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rotation de l'image" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Après rotation :" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direction" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Sens a&nti horaire" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Sens &horaire" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Angle" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 °rés" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 d&egrés" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 de&grés" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Per&sonnalisé :" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "degrés" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            La rotation de la sélection à %1 x %2 peut consommer beaucoup de " +"mémoire. Ceci peut réduire la réactivité du système et provoquer des " +"problèmes de ressources pour d'autres applications.

            Voulez-vous " +"vraiment effectuer une rotation de la sélection ?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rotation de la sélection ?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rotation de la sél&ection" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            La rotation de l'image à %1 x %2 peut consommer beaucoup de mémoire. " +"Ceci peut réduire la réactivité du système et provoquer des problèmes de " +"ressources pour d'autres applications.

            Voulez-vous vraiment effectuer " +"une rotation de l'image ?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rotation de l'image ?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rotation d&e l'image" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Cisaillement de la sélection" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Cisaillement de l'image" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Après cisaillement :" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontal :" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical :" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Le cisaillement de la sélection à %1 x %2 peut consommer beaucoup de " +"mémoire. Ceci peut réduire la réactivité du système et provoquer des " +"problèmes de ressources pour d'autres applications.

            Voulez-vous " +"vraiment effectuer un cisaillement de la sélection ?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Cisaillement de la sélection ?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Cisaill&ement de la sélection" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Le cisaillement de l'image à %1 x %2 peut consommer beaucoup de " +"mémoire. Ceci peut réduire la réactivité du système et provoquer des " +"problèmes de ressources pour d'autres applications.

            Voulez-vous " +"vraiment effectuer un cisaillement de l'image ?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Cisaillement de l'image ?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Cisaill&ement de l'image" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Similitude de couleurs" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Distance dans le cube des couleurs &RVB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Correspondance exacte" + +# unreviewed-context +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Qu'est-ce que la similitude de " +"couleurs ?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Enregistrer l'aperçu" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 octet (environ %2 %)" +msgstr[1] "%1 octets (environ %2 %)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Impossible d'ouvrir « %1 »." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Impossible d'ouvrir « %1 ». Format d'image non pris en charge.\n" +"Le fichier est peut-être corrompu." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Impossible d'enregistrer l'image. Informations insuffisantes." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL : %1\n" +"Type MIME : %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Erreur interne" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Le format %1 pourrait être incapable de préserver toutes les " +"informations sur les couleurs de l'image.

            Voulez-vous continuer " +"l'enregistrement dans ce format ?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Format de fichier avec pertes" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            L'enregistrement de l'image dans une profondeur basse de couleurs de " +"%1 bits provoquera des pertes d'informations sur les couleurs. La " +"transparence sera également supprimée.

            Voulez-vous continuer " +"l'enregistrement dans cette profondeur de couleurs ?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Profondeur basse de couleurs" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Impossible d'enregistrer l'image. Impossible de créer un fichier temporaire." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Impossible d'enregistrer sous « %1 » : %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Erreur durant l'enregistrement de l'image" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Impossible d'enregistrer l'image. Échec de l'envoi." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Supprimer une b&ordure interne" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Supprimer une bordure interne" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "R&ogner automatiquement" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Rogner automatiquement" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint ne peut pas supprimer la bordure interne de la sélection car " +"elle n'a pas pu être située." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Impossible de supprimer une bordure interne" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint ne peut pas rogner automatiquement l'image car il ne peut pas " +"situer ses bordures." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Rognage automatique impossible" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Définir comme une image" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Sélection : créer" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programme de dessin, par KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Créateur du projet" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Enquêteur en chef" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" +"Prise en charge de la numérisation et de la couche alpha. Mainteneur actuel" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Icônes" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Prise en charge de la méthode d'entrée" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Effets d'image" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Portage vers KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Portage vers KDE 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Remerciement à tous ceux ayant contribué à rendre ce programme possible." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Fichiers d'image à ouvrir, optionnel" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Établir la liste de tous les types « MIME » lisibles d'images" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vue" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Image" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Couleurs" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barre principale d'outils" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barre de texte" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menu contextuel pour l'outil de sélection" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Édition" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Vignette" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Faites glisser la poignée vers la gauche pour re-dimensionner l'image." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Re-dimensionner une image : relâcher tous les boutons de souris." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Redimensionner une image : faites un clic droit pour annuler." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Texte" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Impossible d'ouvrir la palette de couleurs « %1 »." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Impossible d'ouvrir la palette de couleurs « %1 ». Format d'image non pris " +"en charge.\n" +"Le fichier est peut-être corrompu." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Impossible d'ouvrir la palette de couleurs KDE « %1 »." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Impossible d'enregistrer la palette de couleurs sous « %1 »." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sans titre" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Utiliser les réglages par défaut de KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Utiliser celles de KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Ouvrir..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Rechar&ger" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "Enregi&strer" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "&Enregistrer sous..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Ajouter une ligne" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Supprimer la dernière ligne" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Palette de couleurs" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"La palette de couleurs « %1 » a été modifiée.\n" +"Voulez-vous l'enregistrer ?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"La palette de couleurs de KDE « %1 » a été modifiée.\n" +"Voulez-vous l'enregistrer ?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"La palette de couleurs par défaut a été modifiée.\n" +"Voulez-vous l'enregistrer ?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Ouvrir la palette de couleurs" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"La palette de couleurs « %1 » a été modifiée.\n" +"Son rechargement effacera toutes les modifications effectuées depuis le " +"dernier enregistrement.\n" +"Voulez-vous vraiment continuer ?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Recharger" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"La palette de couleurs de KDE « %1 » a été modifiée.\n" +"Son rechargement effacera toutes les modifications.\n" +"Voulez-vous vraiment continuer ?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"La palette de couleurs par défaut a été modifiée.\n" +"Son rechargement effacera toutes les modifications.\n" +"Voulez-vous vraiment continuer ?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Enregistrer la palette de couleurs sous" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Coller dans une &nouvelle fenêtre" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Supprimer la sélection" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opier dans un fichier..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Coller à partir d'un &fichier..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Texte : créer une zone" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Texte : coller" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"Il est impossible pour KolourPaint de coller le contenu du presse-papier " +"car son format est inconnu." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Impossible de coller" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Texte : supprimer une zone" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Sélection : supprimer" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Texte : terminer" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Sélection : dé-sélectionner" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copier dans un fichier" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Coller à partir d'un fichier" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xporter..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Numériser..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Faire une capture d'écran" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Propriétés" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Rechar&ger" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Tous les fichiers pris en charge (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Ouvrir une image" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Impossible d'ouvrir la boîte de dialogue de numérisation." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Échec de numérisation" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Délai avant capture" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " seconde" +msgstr[1] " secondes" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Aucun délai" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Cacher la fenêtre principale" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Propriétés du document" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Enregistrer l'image sous" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exporter" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Le document « %1 » a été modifié.\n" +"Son rechargement effacera toutes les modifications effectuées depuis le " +"dernier enregistrement.\n" +"Voulez-vous vraiment continuer ?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Le document « %1 » a été modifié.\n" +"Son rechargement effacera toutes les modifications.\n" +"Voulez-vous vraiment continuer ?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Imprimer une image" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Vous devez enregistrer cette image avant de l'envoyer.\n" +"Voulez-vous l'enregistrer ?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Le document « %1 » a été modifié.\n" +"Voulez-vous l'enregistrer ?" + +# unreviewed-context +# unreviewed-context +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&e-dimensionner / Mettre à l'échelle..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "&Définir comme image (Rogner)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Retourner (de haut en bas)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Miroir (horizontal)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "Fai&re pivoter..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Fai&re pivoter à gauche" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Faire pivo&ter à droite" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Cisailler..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Convertir en mo&nochrome (avec tramage)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Convertir en niveaux de &gris" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inverser les couleurs" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "E&ffacer" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Rendre confidentiel" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Plus d'effets..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Image" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Sélect&ion" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Afficher l'em&placement" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Dessiner avec anticrénelage" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1, %2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1, %2 - %3, %4" + +# unreviewed-context +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1 x %2" + +# unreviewed-context +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 bpp" + +# unreviewed-context +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1 %" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Famille de polices" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Taille de la police" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Gras" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Italique" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Souligné" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Barré" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Option précédente d'outil (groupe n°1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Option suivante d'outil (groupe n°1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Option précédente d'outil (groupe n°2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Option suivante d'outil (groupe n°2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Dessiner de façon opaque" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Dessiner avec une similitude de couleurs" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Boîte à outils" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Afficher le &quadrillage" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Affic&her une vignette" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Mode « Vignette avec zoo&m »" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Activer le &rectangle de vignette" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Acquisition d'image" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Échec de l'ouverture du scanner sélectionné." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Brosse" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Dessiner à l'aide de brosses de différentes formes et tailles" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" +"Cliquez pour dessiner des points ou faire glisser en maintenant appuyé pour " +"dessiner des traits." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Effaceur de couleurs" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" +"Remplace tous les pixels de la couleur de premier plan par celle d'arrière-" +"plan" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" +"Cliquez ou faites glisser en maintenant appuyé pour effacer les pixels de la " +"couleur de premier plan." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Gomme" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Vous permet de corriger vos erreurs" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Cliquez ou faites glisser en maintenant appuyé pour effacer." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Relâcher tous les boutons de la souris." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Crayon" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Dessine des points et des traits à main levée" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Aérographe" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Dessine des graffitis" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Cliquez ou faites glisser pour dessiner des graffitis." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Faites un clic droit pour annuler." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Faites un clic gauche pour annuler." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1 : " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Vous permet de sélectionner une couleur à partir de l'image" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Cliquez pour sélectionner une couleur." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Remplit les zones de l'image" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Cliquez pour remplir une zone." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Effectue un zoom avant et arrière de l'image" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Cliquez pour effectuer un zoom avant et arrière ou faites glisser avec le " +"bouton gauche pour zoomer dans une zone spécifique." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Courbe" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Dessine des courbes" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Faites glisser en maintenant appuyé les points de départ et de fin." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Faites un glisser avec le bouton gauche pour définir le premier point de " +"contrôle ou faites un clic droit pour arrêter." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Faites un glisser avec le bouton droit pour définir le premier point de " +"contrôle ou faites un clic gauche pour arrêter." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Faites un glisser avec le bouton gauche pour définir le dernier point de " +"contrôle ou faites un clic droit pour arrêter." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Faites un glisser avec le bouton droit pour définir le dernier point de " +"contrôle ou faites un clic gauche pour arrêter." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Ligne" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Dessine des lignes" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Faites un glisser en maintenant appuyé pour dessiner." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polygone" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Dessine des polygones" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" +"Faites un glisser en maintenant appuyé pour dessiner la première ligne." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Faites un glisser avec le bouton gauche pour une autre ligne de contrôle ou " +"faites un clic droit pour arrêter." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Faites un glisser avec le bouton droit pour une autre ligne de contrôle ou " +"faites un clic gauche pour arrêter." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Lignes connectées" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Dessine des lignes connectées" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Dessine des ellipses et des cercles" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rectangle" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Dessine des rectangles et des carrés" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rectangles à coins arrondis" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Dessine des rectangles et des carrés à coins arrondis" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Faites un glisser avec le bouton gauche pour effectuer une sélection." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Faites un glisser avec le bouton gauche pour déplacer une sélection." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" +"Faites un glisser avec le bouton gauche pour mettre à l'échelle la sélection." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Sélection : opaque" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Sélection : transparente" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Sélection : couleur de transparence" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Sélection : couleur similaire à la couleur de transparence" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Sélection (elliptique)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Crée une sélection elliptique ou circulaire" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Sélection (forme libre)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Crée une sélection ayant une forme libre" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Sélection (rectangulaire)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Crée une sélection rectangulaire" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Sélection : déplacer" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1 : maculer" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Écrit du texte" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Texte : retour arrière" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Texte : supprimer" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Texte : nouvelle ligne" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Texte : saisie" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Faites un glisser avec le bouton gauche pour créer une zone de texte." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" +"Faites un glisser avec le bouton gauche pour déplacer une zone de texte." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Texte : déplacer une zone" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" +"Faites un glisser avec le bouton gauche pour re-dimensionner une zone de " +"texte." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" +"Faites un glisser avec le bouton gauche pour modifier la position du curseur." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Texte : fond opaque" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Texte : fond transparent" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Texte : échanger les couleurs" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Texte : couleur de premier plan" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Texte : couleur d'arrière-plan" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Texte : police" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Texte : taille de la police" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Texte : gras" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Texte : italique" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Texte : souligné" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Texte : barré" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Mode « Taille originale » - Vignette" + +# unreviewed-context +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1 % - Vignette" + +# unreviewed-context +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            La similitude de couleurs indique sous quelles conditions les " +"opérations doivent considérer les couleurs de deux pixels " +"commesimilaires.

            Si vous indiquez une valeur autre que " +"Correspondance exacte, vous pouvez travailler plus efficacement avec " +"les images et photos avec tramage, d'une manière comparable à l'outil " +"« Baguette Magique » d'autres programmes de dessin.

            Cette " +"fonctionnalité s'applique à :

            • Sélections : en mode " +"Transparent, toute couleur de la sélection étant similaire à la " +"couleur de fond sera rendue transparente.
            • Remplissage : pour " +"les régions avec une couleur similaire mais pas identique, un réglage " +"plus élevé aura tendance à remplir plus de pixels.
            • Rognage " +"automatique et Retirer les bordures internes : pour les bordures " +"avec des pixels similaires mais pas identiques, un réglage élevé sera " +"plus susceptible de rogner toute la bordure.

            Un réglage plus " +"élevé signifie que les opérations vont considérer une plus large gamme de " +"couleurs comme étant suffisamment similaires pour être les mêmes. De " +"ce fait, vous devriez augmenter cette valeur si l'opération n'affecte pas " +"certains pixels dont vous considérez la couleur comme suffisamment similaire." +"

            Toutefois, s'ils ont un effet trop important et changent des pixels " +"dont vous considérez la couleur comme n'étant pas similaire (par ex. si " +"Remplissage> change trop de pixels), vous devriez réduire cette " +"valeur.

            Pour la configurer, cliquez sur le cube.

            " + +# unreviewed-context +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            La similitude de couleurs indique sous quelles conditions les " +"opérations doivent considérer les couleurs de deux pixels " +"commesimilaires.

            Si vous indiquez une valeur autre que " +"Correspondance exacte, vous pouvez travailler plus efficacement avec " +"les images et photos tramées, d'une manière comparable à l'outil « Baguette " +"Magique » d'autres programmes de dessin.

            Cette fonctionnalité " +"s'applique à :

            • Sélections : en mode Transparent, " +"toute couleur de la sélection étant similaire à la couleur de fond sera " +"rendue transparente.
            • Remplissage : pour les régions avec des " +"pixels de couleur similaire mais pas identique, un réglage plus élevé " +"aura tendance à remplir plus de pixels.
            • Effaceur de couleurs : tout pixel ayant une couleur de premier plan similaire sera " +"remplacé par la couleur d'arrière-plan.
            • Rognage automatique " +"et Retirer les bordures internes : pour les bordures avec des pixels " +"de couleur similaire mais pas identique, un réglage élevé sera plus " +"susceptible de rogner toute la bordure.

            Un réglage plus élevé " +"signifie que les opérations vont considérer une plus large gamme de couleurs " +"comme étant suffisamment similaires pour être les mêmes. De ce fait, " +"vous devriez augmenter cette valeur si l'opération n'affecte pas certains " +"pixels dont vous considérez la couleur comme suffisamment similaire.

            Toutefois, s'ils ont un effet trop important et changent des pixels " +"dont vous considérez la couleur comme n'étant pas similaire (par ex. si " +"Remplissage> change trop de pixels), vous devriez réduire cette " +"valeur.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Similitude de couleurs : %1 %

            Cliquez pour " +"configurer

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Similitude de couleurs : correspondance exacte

            Cliquez pour configurer

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Luminosité : " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Réinitiali&ser" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntraste : " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma : " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Réini&tialiser" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "C&anaux : " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Tous" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rouge" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Vert" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Bleu" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Réinitialiser toutes les v&aleurs" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Configuration" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "Qu&antité :" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Activer" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Couleurs" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Teinte : " + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturation : " + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valeur : " + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rouge" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Vert" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Bleu" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Tous" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canaux" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monochrome" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nochrome (avec tramage)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 cou&leurs" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 couleu&rs (avec tramage)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Couleurs sur 24 &bits" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Convertir en" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularité : " + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Pour sélectionner la couleur d'avant-plan utilisée par les outils " +"pour dessiner, faites un clic gauche dans une cellule de couleur pleine. " +"Pour sélectionner une couleur de fond, faites un clic droit.

            Pour " +"modifier la couleur d'une cellule de couleur, faites un double-clic dessus.

            Vous pouvez aussi échanger les couleurs de deux cellules en faisant un " +"glisser-déposer. En maintenant la touche « Ctrl » enfoncée, la " +"couleur de la cellule de destination va être écrasée, au lieu d'être " +"échangée avec la couleur de la cellule source.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Conver&tir en : " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Quali&té : " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "A&perçu" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monochrome" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monochrome (avec tramage)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 couleurs" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 couleurs (avec tramage)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Couleur sur 24 bits" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Position de l'i&mage" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centre de la page" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "En haut et à gauche de &la page" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparent" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Réglages par défaut de KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Couleurs : %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Couleurs : %1 [Modifié]" + +# unreviewed-context +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1 x 1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cercle" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Carré" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barre oblique" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barre oblique inverse" + +# unreviewed-context +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1 x %2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Aucun remplissage" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Remplir avec la couleur d'arrière-plan" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Remplir avec la couleur de premier plan" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaque" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Un document appelé « %1 » existe déjà.\n" +#~ "Voulez-vous l'écraser ?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Une palette de couleurs appelée « %1 » existe déjà.\n" +#~ "Voulez-vous l'écraser ?" + +# unreviewed-context +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Le réglage du niveau de zoom sur une valeur non multiple de 100 % a pour " +#~ "conséquence une édition imprécise et des problèmes d'affichage.\n" +#~ "Voulez-vous vraiment régler le niveau de zoom à %1 % ?" + +# unreviewed-context +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Définir le niveau de zoom à %1 %" + +#~ msgid "None" +#~ msgstr "Aucun" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Le re-dimensionnement de l'image à %1 x %2 peut consommer " +#~ "beaucoup de mémoire. Ceci peut réduire la réactivité du système et " +#~ "provoquer des problèmes de ressources pour d'autres applications.

            Voulez-vous re-dimensionner l'image ?

            " + +#~ msgid "Overwrite" +#~ msgstr "Écraser" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Impossible d'ouvrir « %1 ». Type MIME inconnu." + +#~ msgid "Save Preview" +#~ msgstr "Enregistrer l'aperçu" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Pour obtenir de l'aide, veuillez visiter le site Web." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Aucun module externe n'a été trouvé fournissant une interface avec le " +#~ "périphérique de numérisation. Ceci signifie en général que le paquet " +#~ "fournissant « ksaneplugin » n'a pas été installé." + +#~ msgid "No Scanning Support" +#~ msgstr "Aucune prise en charge de la numérisation" + +#~ msgid "Scanning support is not installed." +#~ msgstr "" +#~ "La prise en charge de la numérisation (scanners) n'est pas installée." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            KolourPaint ne peut pas coller le contenu du presse-papiers car " +#~ "les données ont disparues.

            Ceci se passe habituellement si " +#~ "l'application qui était responsable du contenu du presse-papiers a été " +#~ "fermé.

            " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Prendre des &captures d'écran" + +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            Pour prendre une capture d'écran, appuyez sur %1. La capture " +#~ "d'écran sera placée dans le presse-papiers et vous pourrez alors la " +#~ "coller dans KolourPaint.

            Vous pouvez configurer le raccourci de " +#~ "capture d'écran du bureau dans la configuration du système, " +#~ "rubrique Raccourcis clavier.

            Vous pouvez également essayer l'application KSnapshot.

            " + +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            Vous ne semblez pas utiliser KDE.

            Une fois que vous aurez chargé " +#~ "KDE :

            Pour prendre une capture d'écran, appuyez sur %1. La capture d'écran sera placée dans le presse-papiers et vous pourrez " +#~ "alors la coller dans KolourPaint.

            Vous pouvez " +#~ "également essayer l'application KSnapshot." + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Définir comme &fond d'écran (Centré)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Définir comme &fond d'écran (Mosaïque)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Avant de pouvoir définir cette image comme fond d'écran, vous devez " +#~ "l'enregistrer dans un fichier local.\n" +#~ "Voulez-vous l'enregistrer ?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Avant de pouvoir définir cette image comme fond d'écran, vous devez " +#~ "l'enregistrer.\n" +#~ "Voulez-vous l'enregistrer ?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Impossible de changer le fond d'écran." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Retournement de la sélection" + +#~ msgid "Flip Image" +#~ msgstr "Retournement de l'image" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Vertical (de haut en bas)" + +#~ msgid "&Horizontal" +#~ msgstr "&Horizontal" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Perte d'informations de couleur et transparence" + +#~ msgid "Loss of Color Information" +#~ msgstr "Perte d'information de couleur" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Perte d'information de transparence" + +#~ msgid "" +#~ "

            KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

            To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

            " +#~ msgstr "" +#~ "

            KolourPaint ne prend pas en charge la profondeur de couleur " +#~ "actuelle de %1bpp pour l'écran. KolourPaint va essayer de démarrer mais " +#~ "pourrait fonctionner de manière aléatoire.

            Pour éviter ce problème, " +#~ "changez la profondeur de couleur de votre écran en 24bpp et redémarrez " +#~ "KolourPaint.

            " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Mode de l'écran non pris en charge" + +#~ msgid "" +#~ "

            This effect does not support the current screen depth of %1bpp.

            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Cet effet ne prend pas en charge la profondeur de couleur actuelle " +#~ "de l'écran de %1 bpp.

            Pour éviter ce problème, changez la " +#~ "profondeur de couleur de votre écran en 24 bpp et redémarrez KolourPaint." +#~ "

            " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Impossible de numériser, manque de mémoire graphique." + +#~ msgid "Cannot Scan" +#~ msgstr "Impossible de numériser" + +#~ msgid "&Flip..." +#~ msgstr "&Retourner..." + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            L'image à coller peut contenir plus de couleurs que le mode " +#~ "d'écran actuel. Afin de l'afficher, certaines couleurs doivent peut-être " +#~ "être modifiées.

            Si vous enregistrez cette image, la perte " +#~ "éventuelle de couleur sera permanente.

            Pour évitez cela, " +#~ "augmentez votre profondeur de couleur jusqu'à %1 bpp au moins et " +#~ "redémarrez KolourPaint.


            Elle contient aussi de la transparence " +#~ "qui n'est pas complètement gérée. Les données de transparence seront " +#~ "converties approximativement avec un masque de transparence de 1 bit.

            Si vous enregistrez cette image, la perte de transparence sera " +#~ "permanente

            " + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            L'image à coller peut contenir plus de couleurs que le mode " +#~ "d'écran actuel peut prendre en charge. Afin de l'afficher, certaines " +#~ "couleurs doivent peut-être être modifiées.

            Si vous enregistrez " +#~ "cette image, les éventuelles pertes de couleur seront permanentes

            Pour éviter cela, augmentez votre profondeur de couleur jusqu'à %1 " +#~ "bpp au moins et redémarrez KolourPaint.

            " + +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            L'image à coller contient de la transparence qui n'est pas " +#~ "complètement gérée. Les données de transparence seront converties " +#~ "approximativement avec un masque de transparence de 1 bit.

            Si " +#~ "vous enregistrez cette image, la perte de transparence sera permanente

            " + +#~ msgid "

            There is nothing in the clipboard to paste.

            " +#~ msgstr "

            Il n'y a rien à coller dans le presse-papier.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            L'image « %1 » peut contenir plus de couleurs que le mode d'écran " +#~ "actuel ne prend en charge. Afin de l'afficher, certaines couleurs doivent " +#~ "peut-être être modifiées.

            Si vous enregistrez cette image, les " +#~ "pertes éventuelles de couleurs seront permanentes

            Essayez " +#~ "d'augmenter votre profondeur de couleur jusqu'à %2 bpp au moins et " +#~ "redémarrez KolourPaint.


            Elle contient aussi de la " +#~ "transparence qui n'est pas complètement gérée. Les données de " +#~ "transparence seront converties approximativement avec un masque de " +#~ "transparence de 1 bit.

            Si vous enregistrez cette image, la perte " +#~ "de transparence sera permanente

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            L'image « %1 » peut contenir plus de couleurs que le mode d'écran " +#~ "actuel ne prend en charge. Afin de l'afficher, certaines couleurs doivent " +#~ "peut-être être modifiées.

            Si vous enregistrez cette image, les " +#~ "pertes de couleur éventuelles seront permanentes.

            Essayez " +#~ "d'augmenter votre profondeur de couleur jusqu'à %2 bpp au moins et " +#~ "redémarrez KolourPaint.

            " + +#~ msgid "" +#~ "

            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            L'image « %1 » contient de la transparence qui n'est pas " +#~ "complètement gérée. Les données de transparence seront converties " +#~ "approximativement avec un masque de transparence de 1 bit.

            Si " +#~ "vous enregistrez cette image, la perte de transparence sera permanente.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Impossible d'ouvrir « %1 », manque de mémoire graphique." + +#~ msgid "Scanning Support" +#~ msgstr "Prise en charge des scanners" diff --git a/po/ga/kolourpaint.po b/po/ga/kolourpaint.po new file mode 100644 index 0000000..99374e8 --- /dev/null +++ b/po/ga/kolourpaint.po @@ -0,0 +1,2958 @@ +# Irish translation of kolourpaint +# Copyright (C) 2009 This_file_is_part_of_KDE +# This file is distributed under the same license as the kolourpaint package. +# Kevin Scannell , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kdegraphics/kolourpaint.po\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2004-12-03 14:52-0500\n" +"Last-Translator: Kevin Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n < 11 ? " +"3 : 4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Séamus Ó Ciardhuáin,Kevin Scannell" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "seoc@iolfree.ie,kscanne@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Cothromaíocht" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Maolaigh" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Géaraigh" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Glan" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Roghnú: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Cabhraíocht" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Leacaigh" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inbhéartaigh na Dathanna" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inbhéartaigh" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Smeach" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Smeach go cothrománach" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Smeach go hingearach" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Athraigh an mhéid" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Scála" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rothlaigh" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Sceabha" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Cealaigh: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Cealaigh" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Athdhéan: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Athdhéan" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Cealaigh: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Cealaigh" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Athdhéan: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Athdhéan" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 mhír eile" +msgstr[1] "%1 mhír eile" +msgstr[2] "%1 mhír eile" +msgstr[3] "%1 mír eile" +msgstr[4] "%1 mír eile" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Roghnóir na nDathanna" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Tuilleadh Maisíochtaí Íomhá (Roghnúchán)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Tuilleadh Maisíochtaí Íomhá" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Maisíocht:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Airíonna na Cáipéise" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Poncanna San Orlach (PSO)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Gan sonrú" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " × " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Cothrománach:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Ingearach:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Fritháireamh" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Réimsí &Téacs" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Cuir Ró Leis" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Scrios Ró" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "Athshoc&raigh" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Eochair" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Luach" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Réimsí Neamhbhailí Téacs" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Toisí" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Bunúsach:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 × %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Réamhamharc" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "N&uashonraigh" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Athraigh Méid / Scálaigh" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "An Íomhá Ar Fad" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Roghnú" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Bosca Téacs" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Oibríocht" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Athraigh an mhéid" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Scála" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Leithead:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Airde:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nua:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Céatadán:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Caomh&naigh an cóimheas treoíochta" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Athraigh Méid an Bhosca Téacs?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Athraigh &Méid an Bhosca Téacs" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Athraigh Méid na hÍomhá?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Athraigh &Méid na hÍomhá" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Scálaigh an Íomhá?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "S&cálaigh an Íomhá" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Scálaigh an Roghnúchán?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Scálaigh an &Roghnúchán" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Mínscálaigh an Íomhá?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "&Mínscálaigh an Íomhá" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Mínscálaigh an Roghnúchán?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "&Mínscálaigh an Roghnúchán" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rothlaigh an Roghnúchán" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rothlaigh Íomhá" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Treo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Go &Tuathalach" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "D&eisealach" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Uillinn" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &céim" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 cé&im" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 céi&m" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Saincheaptha:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "céim" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rothlaigh an Roghnúchán?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rothlaigh an &Roghnúchán" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rothlaigh an Íomhá?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rothl&aigh an Íomhá" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Cuir an roghnúchán ar sceabha" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Cuir an íomhá ar sceabha" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Tar éis sceabha:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Cothrománach:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Ingearach:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Cuir an roghnúchán ar sceabha?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Cuir an &roghnúchán ar sceabha" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Cuir an íomhá ar sceabha?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Cuir a&n íomhá ar sceabha?" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Comhoiriúnú Beacht" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Sábháil Réamhamharc" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 beart (timpeall %2%)" +msgstr[1] "%1 bheart (timpeall %2%)" +msgstr[2] "%1 bheart (timpeall %2%)" +msgstr[3] "%1 mbeart (timpeall %2%)" +msgstr[4] "%1 beart (timpeall %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Ní féidir \"%1\" a oscailt." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Cineál MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Earráid Inmheánach" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Formáid Chaillteach Chomhaid" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Ní féidir an íomhá a shábháil - ní féidir comhad sealadach a chruthú." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save color palette as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Ní féidir pailéad datha \"%1\" a shábháil." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "Ríomhchlár Péinteála KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Seanfhondúir" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Deilbhíní" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Maisíochtaí Íomhá" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Leagan KDE 4" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "Christoph Eckert" +msgid "Christoph Feck" +msgstr "Christoph Eckert" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "Leagan KDE 4" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "Comhad íomhá le hoscailt" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Amharc" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Íomhá" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Dathanna" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Príomhbharra Uirlisí" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra Uirlisí Téacs" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, fuzzy, kde-format +#| msgid "Selection: Move" +msgid "Selection Tool RMB Menu" +msgstr "Roghnúchán: Bog" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Eagar" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Mionsamhail" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Téacs" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Ní féidir pailéad datha \"%1\" a oscailt." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Ní féidir pailéad datha KDE \"%1\" a oscailt." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Ní féidir pailéad datha \"%1\" a shábháil." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Gan Teideal" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Réamhshocruithe KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Úsáid dathanna KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Oscail..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Ath&luchtaigh" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Sábháil" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Sábháil M&ar..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Cuir Ró Leis" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Scrios an Ró Deiridh" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Bosca Datha" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Athraíodh an pailéad datha \"%1\".\n" +"An bhfuil fonn ort í a shábháil?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Athraíodh pailéad datha KDE \"%1\".\n" +"An bhfuil fonn ort í a shábháil i gcomhad?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Athraíodh an pailéad réamhshocraithe datha.\n" +"An bhfuil fonn ort í a shábháil i gcomhad?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Oscail Pailéad Datha" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Ath&luchtaigh" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Athraíodh an pailéad datha KDE \"%1\".\n" +"Caillfidh tú gach athrú má athluchtaíonn tú é.\n" +"An bhfuil tú cinnte?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Athraíodh an pailéad réamhshocraithe datha.\n" +"Caillfidh tú gach athrú má athluchtaíonn tú é.\n" +"An bhfuil tú cinnte?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Sábháil an Pailéad Datha Mar" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Greamaigh i bhFuinneog &Nua" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Scrios Roghnúchán" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "Cóipeáil g&o Comhad..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "&Greamaigh Ó Chomhad..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Téacs: Cruthaigh Bosca" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Téacs: Greamaigh" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Ní Féidir a Ghreamú" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Téacs: Scrios Bosca" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Roghnúchán: Scrios" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Téacs: Críochnaigh" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Roghnúchán: Díroghnaigh" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Cóipeáil go Comhad" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Greamaigh Ó Chomhad" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&aspórtáil..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Scan..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Airíonna" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Ath&luchtaigh" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Oscail Íomhá" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Gan moilliú" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Folaigh an Phríomhfhuinneog" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Airíonna na Cáipéise" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Sábháil an Íomhá Mar" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Easpórtáil" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Priontáil an Íomhá" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Ní mór duit an íomhá seo a shábháil sular féidir leat í a sheoladh.\n" +"An bhfuil fonn ort í a shábháil?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Athraíodh an cháipéis \"%1\".\n" +"An bhfuil fonn ort í a shábháil?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&Athraigh méid / Scálaigh..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Smeach (bunoscionn)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Scáthánaigh (go cothrománach)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rothlaigh..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Roth&laigh go Tuathalach" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Ro&thlaigh go Deisealach" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "S&ceabha..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inbhéartaigh na Dathanna" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "G&lan" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Níos &Mó Maisíochtaí..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "Í&omhá" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "R&oghnú" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Taisp&eáin Conair" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1×%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1gsp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Fine Cló" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Clómhéid" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Trom" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Cló Iodálach" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Líne Faoi" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Rogha Uirlise Roimhe Seo (Grúpa #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "An Chéad Rogha Uirlise Eile (Grúpa #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Rogha Uirlise Roimhe Seo (Grúpa #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "An Chéad Rogha Uirlise Eile (Grúpa #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Bosca Uirlisí" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Taisp&eáin Greille" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Taispeáin Mionsam&hail" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Súmáil" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "An Íomhá Ar Fad" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Scuab" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Léirscriosán" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Cliceáil nó tarraing chun glanadh." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Peann" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Spraechanna" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Cliceáil chun dath a roghnú." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "" + +# #-#-#-#-# kdelibs4.po (kdelibs4) #-#-#-#-# +# hopefully this will become view zoom, not just text zoom +# #-#-#-#-# kdvi.po (kdegraphics/kdvi.po) #-#-#-#-# +# #-#-#-#-# kdelibs4.po (kdelibs4) #-#-#-#-# +# hopefully this will become view zoom, not just text zoom +# #-#-#-#-# kxsconfig.po (kxsconfig) #-#-#-#-# +# hopefully this will become view zoom, not just text zoom +# #-#-#-#-# kxsconfig.po (kxsconfig) #-#-#-#-# +# hopefully this will become view zoom, not just text zoom +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Súmáil" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Cuar" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Líne" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polagán" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Éilips" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Dronuilleog" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Dronuilleog Cruinn" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Roghnúchán: Teimhneach" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Roghnúchán: Tréshoilseach" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Roghnú (Éilipseach)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Roghnú (Dronuilleogach)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Roghnúchán: Bog" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Smear" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Téacs: Cúlspás" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Téacs: Scrios" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Téacs: Líne Nua" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Téacs: Scríobh" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Téacs: Bog Bosca" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Téacs: Cúlra Teimhneach" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Téacs: Cúlra Trédhearcach" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Téacs: Babhtáil Dathanna" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Téacs: Dath an Tulra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Téacs: Dath an Chúlra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Téacs: Cló" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Téacs: Clómhéid" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Téacs: Trom" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Téacs: Cló Iodálach" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Téacs: Líne Faoi" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Mód Gan Súmáil - Mionsamhail" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Mionsamhail" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Comhchosúlacht Dathanna: %1%

            Cliceáil chun cumrú." + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Comhchosúlacht Dathanna: Comhoiriúnú Beacht

            Cliceáil chun cumrú.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Gile:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "At&hshocraigh" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&darsnacht:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gáma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Aths&hocraigh" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "C&ainéil:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Uile" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Dearg" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Uaine" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Gorm" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Athshocraigh Gach Luach" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Socruithe" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Méid:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "C&umasaigh" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Dathanna" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Sáithiú:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Luach:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Dearg" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Uaine" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Gorm" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "G&ach Rud" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Cainéil" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monacrómach" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nacrómach (díodánaithe)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &dath" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 da&th (díodánaithe)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Dath 24-&giotán" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "&Tiontaigh go:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Cáilíocht:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Réamhamharc" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monacrómach" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monacrómach (Díodánaithe)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Dath" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Dath (Díodánaithe)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Dath 24-giotán" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Io&nad na hÍomhá" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Lár an leathanaigh" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Trédhearcach" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Réamhshocruithe KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Dathanna: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Dathanna: %1 [athraithe]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1×1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Ciorcal" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Cearnóg" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Slais" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Cúlslais" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1×%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Gan Líonadh" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Líon le Dath an Chúlra" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Líon le Dath an Tulra" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Teimhneach" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Tá comhad ann cheana agus an t-ainm \"%1\" air.\n" +#~ "An bhfuil fonn ort scríobh air?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Tá pailéad datha ann cheana agus an t-ainm \"%1\" air.\n" +#~ "An bhfuil fonn ort scríobh air?" + +#~ msgid "None" +#~ msgstr "Neamhní" + +#~ msgid "Overwrite" +#~ msgstr "Forscríobh" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Ní féidir \"%1\" a oscailt - cineál anaithnid MIME." + +#~ msgid "Save Preview" +#~ msgstr "Sábháil Réamhamharc" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Chun tacaíocht a fháil, déan cuairt ar an suíomh Gréasáin." + +#~ msgid "No Scanning Support" +#~ msgstr "Ní Thacaítear Le Scanadh" + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Socraigh Mar Chú&lbhrat (Láraithe)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Socraigh Mar Pháipéar Balla (&Tílithe)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Ní mór duit an íomhá seo a shábháil mar chomhad logánta sular féidir leat " +#~ "í a shocrú mar chúlbhrat.\n" +#~ "An bhfuil fonn ort í a shábháil?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Ní mór duit an íomhá seo a shábháil sular féidir leat í a shocrú mar " +#~ "chúlbhrat.\n" +#~ "An bhfuil fonn ort í a shábháil?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Níorbh fhéidir an chúlbhrat a athrú." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Ingearach (bunoscionn)" + +#~ msgid "&Horizontal" +#~ msgstr "&Cothrománach" + +#~ msgid "&Flip..." +#~ msgstr "&Smeach..." + +#~ msgid "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" +#~ msgstr "toolToolBarHiddenMenu" + +#~ msgid "Selection: Transparency" +#~ msgstr "Roghnúchán: Tréshoilseacht" + +#~ msgid "Hide &Path" +#~ msgstr "Folai&gh Conair" + +#~ msgid "Hide &Grid" +#~ msgstr "Folai&gh Greille" + +#~ msgid "Hide T&humbnail" +#~ msgstr "Folaigh Mionsam&hail" + +#~ msgid "Reload Colors" +#~ msgstr "Athluchtaigh Dathanna" + +#~ msgid "Append Row" +#~ msgstr "Iarcheangail Ró" + +#~ msgid "Use File..." +#~ msgstr "Úsáid Comhad..." + +#~ msgid "Rashid N. Achilov" +#~ msgstr "Rashid N. Achilov" + +#~ msgid "Toyohiro Asukai" +#~ msgstr "Toyohiro Asukai" + +#~ msgid "Bela-Andreas Bargel" +#~ msgstr "Bela-Andreas Bargel" + +#~ msgid "Waldo Bastian" +#~ msgstr "Waldo Bastian" + +#~ msgid "Ismail Belhachmi" +#~ msgstr "Ismail Belhachmi" + +#~ msgid "Sashmit Bhaduri" +#~ msgstr "Sashmit Bhaduri" + +#~ msgid "Antonio Bianco" +#~ msgstr "Antonio Bianco" + +#~ msgid "Stephan Binner" +#~ msgstr "Stephan Binner" + +#~ msgid "Markus Brueffer" +#~ msgstr "Markus Brueffer" + +#~ msgid "Rob Buis" +#~ msgstr "Rob Buis" + +#~ msgid "Lucijan Busch" +#~ msgstr "Lucijan Busch" + +#~ msgid "Mikhail Capone" +#~ msgstr "Mikhail Capone" + +#~ msgid "Enrico Ceppi" +#~ msgstr "Enrico Ceppi" + +#~ msgid "Albert Astals Cid" +#~ msgstr "Albert Astals Cid" + +#~ msgid "Jennifer Dang" +#~ msgstr "Jennifer Dang" + +#~ msgid "Lawrence Dang" +#~ msgstr "Lawrence Dang" + +#~ msgid "David Faure" +#~ msgstr "David Faure" + +#~ msgid "P. Fisher" +#~ msgstr "P. Fisher" + +#~ msgid "Nicolas Goutte" +#~ msgstr "Nicolas Goutte" + +#~ msgid "Herbert Graeber" +#~ msgstr "Herbert Graeber" + +#~ msgid "Brad Grant" +#~ msgstr "Brad Grant" + +#~ msgid "David Greenaway" +#~ msgstr "David Greenaway" + +#~ msgid "Wilco Greven" +#~ msgstr "Wilco Greven" + +#~ msgid "Hubert Grininger" +#~ msgstr "Hubert Grininger" + +#~ msgid "Adriaan de Groot" +#~ msgstr "Adriaan de Groot" + +#~ msgid "Esben Mose Hansen" +#~ msgstr "Esben Mose Hansen" + +#~ msgid "Nadeem Hasan" +#~ msgstr "Nadeem Hasan" + +#~ msgid "Simon Hausmann" +#~ msgstr "Simon Hausmann" + +#~ msgid "Michael Hoehne" +#~ msgstr "Michael Hoehne" + +#~ msgid "Andrew J" +#~ msgstr "Andrew J" + +#~ msgid "Werner Joss" +#~ msgstr "Werner Joss" + +#~ msgid "Derek Kite" +#~ msgstr "Derek Kite" + +#~ msgid "Tobias Koenig" +#~ msgstr "Tobias Koenig" + +#~ msgid "Dmitry Kolesnikov" +#~ msgstr "Dmitry Kolesnikov" + +#~ msgid "Stephan Kulow" +#~ msgstr "Stephan Kulow" + +#~ msgid "Eric Laffoon" +#~ msgstr "Eric Laffoon" + +#~ msgid "Michael Lake" +#~ msgstr "Michael Lake" + +#~ msgid "Sebastien Laout" +#~ msgstr "Sebastien Laout" + +#~ msgid "David Ling" +#~ msgstr "David Ling" + +#~ msgid "Volker Lochte" +#~ msgstr "Volker Lochte" + +#~ msgid "Anders Lund" +#~ msgstr "Anders Lund" + +#~ msgid "Thiago Macieira" +#~ msgstr "Thiago Macieira" + +#~ msgid "Jacek Masiulaniec" +#~ msgstr "Jacek Masiulaniec" + +#~ msgid "Benjamin Meyer" +#~ msgstr "Benjamin Meyer" + +#~ msgid "Amir Michail" +#~ msgstr "Amir Michail" + +#~ msgid "Robert Moszczynski" +#~ msgstr "Robert Moszczynski" + +#~ msgid "Dirk Mueller" +#~ msgstr "Dirk Mueller" + +#~ msgid "Ruivaldo Neto" +#~ msgstr "Ruivaldo Neto" + +#~ msgid "Ralf Nolden" +#~ msgstr "Ralf Nolden" + +#~ msgid "Maks Orlovich" +#~ msgstr "Maks Orlovich" + +#~ msgid "Steven Pasternak" +#~ msgstr "Steven Pasternak" + +#~ msgid "Cédric Pasteur" +#~ msgstr "Cédric Pasteur" + +#~ msgid "Erik K. Pedersen" +#~ msgstr "Erik K. Pedersen" + +#~ msgid "Dennis Pennekamp" +#~ msgstr "Dennis Pennekamp" + +#~ msgid "Jos Poortvliet" +#~ msgstr "Jos Poortvliet" + +#~ msgid "Boudewijn Rempt" +#~ msgstr "Boudewijn Rempt" + +#~ msgid "Marcos Rodriguez" +#~ msgstr "Marcos Rodriguez" + +#~ msgid "Matt Rogers" +#~ msgstr "Matt Rogers" + +#~ msgid "Francisco Jose Canizares Santofimia" +#~ msgstr "Francisco Jose Canizares Santofimia" + +#~ msgid "Bram Schoenmakers" +#~ msgstr "Bram Schoenmakers" + +#~ msgid "Dirk Schönberger" +#~ msgstr "Dirk Schönberger" + +#~ msgid "Lutz Schweizer" +#~ msgstr "Lutz Schweizer" + +#~ msgid "Emmeran Seehuber" +#~ msgstr "Emmeran Seehuber" + +#~ msgid "Peter Simonsson" +#~ msgstr "Peter Simonsson" + +#~ msgid "Andrew Simpson" +#~ msgstr "Andrew Simpson" + +#~ msgid "A T Somers" +#~ msgstr "A T Somers" + +#~ msgid "Igor Stepin" +#~ msgstr "Igor Stepin" + +#~ msgid "Stephen Sweeney" +#~ msgstr "Stephen Sweeney" + +#~ msgid "Bart Symons" +#~ msgstr "Bart Symons" + +#~ msgid "Stefan Taferner" +#~ msgstr "Stefan Taferner" + +#~ msgid "Hogne Titlestad" +#~ msgstr "Hogne Titlestad" + +#~ msgid "Brandon Mark Turner" +#~ msgstr "Brandon Mark Turner" + +#~ msgid "Jonathan Turner" +#~ msgstr "Jonathan Turner" + +#~ msgid "Stephan Unknown" +#~ msgstr "Stephan Unknown" + +#~ msgid "Dries Verachtert" +#~ msgstr "Dries Verachtert" + +#~ msgid "Simon Vermeersch" +#~ msgstr "Simon Vermeersch" + +#~ msgid "Lauri Watts" +#~ msgstr "Lauri Watts" + +#~ msgid "Mark Wege" +#~ msgstr "Mark Wege" + +#~ msgid "Christoph Wiesen" +#~ msgstr "Christoph Wiesen" + +#~ msgid "Andre Wobbeking" +#~ msgstr "Andre Wobbeking" + +#~ msgid "Luke-Jr" +#~ msgstr "Luke-Jr" + +#~ msgid "Maxim_86ualb2" +#~ msgstr "Maxim_86ualb2" + +#~ msgid "Michele" +#~ msgstr "Michele" + +#~ msgid "%1 bytes" +#~ msgstr "%1 beart" + +#~ msgid "%1 B" +#~ msgstr "%1 B" + +#~ msgid "%1 B (%2%)" +#~ msgstr "%1 B (%2%)" + +#~ msgid "%1B" +#~ msgstr "%1B" + +#~ msgid "%1B (%2%)" +#~ msgstr "%1B (%2%)" + +#~ msgid "Custom Pen or Brush" +#~ msgstr "Peann nó Scuab Shaincheaptha" diff --git a/po/gl/docs/kolourpaint/index.docbook b/po/gl/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..7c77cbe --- /dev/null +++ b/po/gl/docs/kolourpaint/index.docbook @@ -0,0 +1,1749 @@ + + + ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + + +]> + + + + +Manual do &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +XoséCalvo
            Tradutor do proxecto Trasno
            +
            + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2010-07-21 +&kde; 4.5 + + +O &kolourpaint; é un programa de pintura para o &kde; libre e doado de utilizar. + + + +kolourpaint +kdegraphics + + +
            + + +Introdución +O &kolourpaint; é un programa de pintura para o &kde; libre e doado de utilizar. É perfecto para tarefas cotiás como: + + + +Pintar - debuxar diagramas e pintar cos dedos + + +Image Manipulation - editing screenshots and photos; applying effects + + +Modificar iconas - debuxar clipart e logos con transparencia + + + + + + + + + + + + + +Uso do &kolourpaint; + +Preme as ligazóns seguintes para explorar as posibilidades do &kolourpaint;: + + + +Tools + + +Working with Color + + +View Options + + +Image Effects + + + + + +Ferramentas + + +Referencia das ferramentas + +Unha maneira rápida de seleccionar unha ferramenta no &kolourpaint; é premer o atallo dunha tecla que se asocia con ela, o que se explica máis abaixo nas suxestións da Caixa de ferramentas. Tamén se pode premer &Alt;&Shift; ao tempo que se prema a tecla, o que é necesario cando se escribe texto (dado que os atallos de teclado sinxelos se desactivan). Por exemplo, para seleccionar a brocha hai que premer &Alt;&Shift;B ou simplemente B (cando non se está a escribir texto). + + + Brocha (B) + + Borrador de cor (O) + + Selector de cores (C) + + Liñas conectadas (N) + + Curva (V) + + Elipse (E) + + Borrador (A) + + Encher de cor (F) + + Liñe (L) + + Lapis (P) + + Polígono (G) + + Rectángulo (R) + + Rectángulo arredondado (U) + + Selección (Elíptica) (I) + + Selección (forma libre) (M) + + Selección (Rectangular) (S) + + Esprai (Y) + + Texto (T) + + + + + +Brocha <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Preme ou preme e arrastra coa brocha para debuxar. + + + + + + + + + + + + + + +Preme unha das formas para seleccionar a forma da brocha. Pódese empregar unha forma de brocha circular, cadrada, como barra normal ou invertida. + + + + + + +O &LMB; debuxa na cor do primeiro plano. O &RMB; debuxa na cor do fondo. + + + +Selector de cores <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Para escoller a cor do primeiro plano preme un píxel co botón esquerdo do rato. Para escoller a cor de fondo, preme un píxel co botón dereito do rato. O &kolourpaint; volve á ferramenta que estaba seleccionada antes. + + + + +Liñas conectadas de polígonos <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra para debuxar liñas conectadas. A ferramenta de polígonos emprégase igual; porén, os puntos inicial e final conéctanse automaticamente para crear un polígono. + +O &LMB; debuxa na cor do primeiro plano. O &RMB; debuxa na cor do fondo e tamén inverte a cor de enchido dos polígonos. + +Pódese definir a anchura da liña. Nos polígonos tamén se pode definir a cor de enchido. + + + + +Curva <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra para debuxar unha liña - isto marca os puntos inicial e final. Pódense crear até dous puntos de control para arrastrar. Para rematar a curva sen empregar os dous puntos de control, ou ningún, preme o outro botón do rato. A ferramenta de curvas debuxa unha Bézier cúbica. + +O &LMB; debuxa na cor do primeiro plano. O &RMB; debuxa na cor do fondo. + +Tamén se pode definir a anchura da liña. + + + + +Elipse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra para debuxar unha elipse. + +O &LMB; debuxa na cor do primeiro plano. O &RMB; debuxa na cor do fondo e inverte a cor de enchido. + +Tamén se poden definir a anchura da liña e a cor de enchido. + +Para outras posibilidades adicionais emprega as teclas modificadoras: + + + +Preme &Shift; e arrastra para debuxar un círculo. + + +Para debuxar unha elipse co centro que queiras, manté &Ctrl; premido, preme o punto central e arrastra até que a elipse teña o tamaño e forma correctas. + + +Para debuxar un círculo co centro que queiras, mantén &Ctrl; e &Shift; premidos, preme o punto central e arrastra até que o círculo teña o tamaño correcto. + + + + + + +Borradores + + +Borrador <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra co borrador para quitar os erros. + + +Ao contrario doutras ferramentas, os borradores debuxan na cor do fondo. Para debuxar na cor do fondo emprega o &RMB;. + + +O borrador só ten formas cadradas. Para debuxar con outras formas, como círculos, emprega a Brocha e o &RMB;. + + +Preme dúas veces a icona do Borrador para limpar toda a imaxe. Isto equivale a empregar a opción Limpar do menú Imaxe. + + + + + +Borrador de cor <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra para substituír píxeles da cor de primeiro plano coa cor de fondo. Para substituir todos os píxeles que sexan semellantes (mais non necesariamente iguais) á cor de primeiro plano, como as imaxes e fotos con manchas ("ruído"), emprega unha Semellanza de cores distinta de Exacta. + + +Ao contrario doutras ferramentas, os borradores debuxan na cor do fondo. Para substituir píxeles coa cor do fondo pola cor do primeiro plano emprega o &RMB;. + + +Pódese configurar o tamaño do borrador. + + +Preme dúas veces a icona Borrador de cor para aplicalo á imaxe enteira. + + + + + + +Encher de cor <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme para encher unha área. Para encher unha área con ruído, emprega unha configuración de Semellanza de cores distinta de Exacta. + +O &LMB; enche coa cor do primeiro plano. O &RMB; enche coa cor do fondo. + + + +Liña <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra para debuxar unha liña. + +O &LMB; debuxa na cor do primeiro plano. O &RMB; debuxa na cor do fondo. + +Tamén se pode definir a anchura da liña. + + + + + + + + + + + + + + + + + + + + + +Mantén &Ctrl; premido para debuxar liñas que teñan ángulos múltiplos de 30 graos - estas son as liñas do diagrama vermello. + + +Mantén &Shift; premido para debuxar liñas con ángulos co múltiplo máis próximo de 45 graos - estas son as liñas do diagrama azul. + + +Mantén &Ctrl; e &Shift; premidos para debuxar liñas con ángulos que teñan os ángulos no múltiplo máis próximo de 30 ou 45 graos - estas son as liñas do diagrama verde. + + + + + + +Lapis <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme para debuxar un punto ou preme e arrastra para debuxar unha liña a man alzada. + +O &LMB; debuxa na cor do primeiro plano. O &RMB; debuxa na cor do fondo. + + + + +Rectángulos <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra para debuxar un rectángulo. O rectángulo arredondado é un rectángulo con esquinas curvas. + +O &LMB; debuxa na cor do primeiro plano. O &RMB; debuxa na cor do fondo e inverte a cor de enchido. + +Tamén se poden definir a anchura da liña e a cor de enchido. + +Para outras posibilidades adicionais emprega as teclas modificadoras: + + + +Mantén &Shift; premido e arrastra para debuxar un cadrado. + + +Para debuxar un rectángulo co centro que queiras, manté &Ctrl; premido, preme o punto central e arrastra até que rectángulo teña o tamaño e forma correctas. + + +Para debuxar un cadrado co centro que queiras, mantén &Ctrl; e &Shift; premidos, preme o punto central e arrastra até que o cadrado teña o tamaño correcto. + + + + + + +Seleccións <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Emprega as ferramentas de selección para deliñar os límites dunha selección. + +Para mover a selección, prémea e arrástraa. A vista principal desprázase como faga falta paras permitir mover a selección a uha parte da imaxe que non se vexa. + +Pódese Mudar o tamaño da imaxe enteira ou Escalar a selección empregando os selectores correspondentes. Mantén &Shift; premido mentres escalas libremente a selección para que se manteña a relación de aspecto. O &RMB; chama por un menú de contexto con comandos Editar e Efectos de imaxe frecuentes. + + +Pódense empregar as teclas do cursos mentres se deliña o límite da selección ou mentres se move. + + +Se se mantén &Ctrl; premido antes de mover a selección, o que se fai é mover unha copia. A selección apágase un pouco cando se move mentres &Shift; está premida. + + + + + + + + + + + + + +Hai dous modos de selección: Opaco (predefinido) e Transparente. Se se emprega o modo de selección Transparente, todos os píxeles da cor de fondo son transparentes (subtracción do fondo). Isto permite apegar unha selección sen o fondo. Para realizar unha subtracción do fondo sobre unha imaxe con ruído, emprega unha configuración de Semellanza de cores distinta de Exacta. + + + + + + +Pódenselle aplicar Efectos de Imaxe as unha selección - mira na sección Efectos de imaxe para máis información. + + + +Esprai <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra para debuxar como graffiti. Mantén premido o botón do rato para teres un esprai máis concentrado. + + + + + + + + + + + + + +Preme unha das formas para seleccionar o tamaño do esprai. Pódense seleccionar tamaños de esprai de 9x9, 17x17 e 29x29. + + + + + + +O &LMB; debuxa na cor do primeiro plano. O &RMB; debuxa na cor do fondo. + + + + +Texto <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Preme e arrastra unha área na que escribir texto. Preme e arrastra o borde para movelo. Pódes mudar o tamaño da caixa de texto arrastrándoa polos selectores ou empregando o diálogo Mudar o tamaño. + + +Se unha caixa de texto perdeu a selección, pódese empregar Desfacer para modificar de novo o texto. + + + +Uso da cor transparente + + + + + + + + +A imaxe da esquerda mostra a imaxe de exemplo. Mostra a adición de texto con primeiro plano opaco e cores de fondo. + + + + + + + + + +A imaxe da esquerda mostra a adición de texto con cores de primeiro plano opacas e cor de fondo transparente. A imaxe da dereita mostra a adición de texto con cor de primeiro plano transparente e cor de fondo opaca. + + + + +Opcións comúns das ferramentas + + + + + + + + + + + + + +Preme un dos cadrados para seleccionar o tamaño do borrador. Pódense seleccionar cadrados de 2, 3, 5, 9, 17 e 29 píxeles de lonxitude de lado. + +A opción do tamaño do borrador afecta os Borradores. + + + + + + + + + + + +Preme unha das liñas para seleccionar a anchura da liña. Pódense seleccionar anchuras de liña de 1, 2, 3, 5 e 8 píxel(es). + +A opción da anchura da liña afecta as ferramentas Liñas conectadas, Curva, Elipse, Liña, Polígono, Rectángulo e Rectángulo arredondado. + + + + + + + + + + + +Preme un dos rectángulos para seleccionar a cor de enchido. Pódese seleccionar Non preencher, Preencher coa cor do fondo e Preencher coa cor do primeiro plano. O estilo de enchido afecta as ferramentas Elipse, Polígono, Rectángulo e Rectángulo arredondado. + + + + + + + + + + +Traballar con cores + + +A caixa de cores + + + + + + + +Caixa de cores + + + + +A caixa de cores ten tres seccións principais: a tableta de cores, a paleta de cores e o selector de semellanza das cores. + +A Tableta de Cores mostra a cor de primeiro plano actual como un cadrado por riba doutro cadrado que representa a cor de fondo actual. Cando se debuxa co &LMB; emprégase a cor de primeiro plano e cando se debuxa co &RMB; emprégase a cor de fondo (excepto os Borradores). Pódese premer na frecha con dúas puntas para trocar as cores de primeiro plano e de fondo. + +A Paleta de Cores mostra unha selección de cores das que escoller. A pirámide traslúcida representa a cor transparente. Preme unha cor co botón esquerdo para definir a cor de fondo e preme co botón dereito para definir a cor de fondo .Tamén se pode arrastrar e soltar calquera cor opaca nos cadrados da Tableta de Cores. Para modificar unha cor da Tableta ou Paleta de Cores, prémea dúas veces. A ferramenta Selector de cores permite seleccionar unha cor da imaxe. + +A Semellanza de Cores permite traballar máis eficazmente coas imaxes e fotos con ruído, de maneira comparábel á Vara máxica doutros programas de pintura. Aplícase ás seleccións transparentes, así como ás ferramentas Encher de cor, Borrador de cor e Recorte automático. Preme dúas veces o Selector de Semellanza de Cores para escoller como de parecidas han de ser para seren consideradas iguais. Ao empregar seleccións no modo Transparente, calquera cor da selección que sexa semellante á cor de fondo tamén se fará transparente. + + + + + + + + + +A imaxe da esquerda mostra a imaxe de exemplo. Demostra o uso do enchido de cor con configuración de semellanza de cores de 5%, 15% e 30%. Neste exemplo, cunha configuración de semellanza de cores de Exacta, un enchido de (80, 100) só enche un píxel, dado que os píxeles que o arrodean son semellantes, mais non idénticos. Segundo aumenta a semellanza de cores, hai máis píxeles semellantes que se consideran idénticos, polo que se extende o enchido. + + + + + +Opcións da vista + + +Referencia das opcións da vista + +Zoom incorporating the Grid +Thumbnail + + + + +Ampliación incorporando a grella +Aumenta o nivel de ampliación para modificar as imaxes con maior precisión ou redúceo para ver máis da imaxe. + + +En niveis de ampliación que non sexan múltiplos do 100% pode parecer que se movan algunhas partes da imaxe cando se interacciona con elas. Tamén se poden producir outros defectos visuais menores neses niveis de ampliación. + + +En niveis de ampliación de 600% ou máis que tamén sexan múltimplos de 100% pódese Mostrar a grella para modificar con máis precisión os píxeles individuais. + + + + + + + + + + + + + + + +A primeira imaxe mostra a icona da ferramenta Texto, mentres que a seguinte mostra unha ampliación ao 600% coa grella activada. + + +Outra maneira de ampliar cando non se está a debuxar é desprazar a roda do rato tendo &Ctrl; premido. + + + + + +Miniatura + + + + + + + +Se está seleccionado o Modo de miniatura ampliada, móstrase a imaxe completa cun tamaño que permita que se axuste á xanela da miniatura (imaxe superior dereita). +Se non, a miniatura mostra todo o que poida da imaxe, comezando na parte superior esquerda da xanela principal (imaxe de abaixo á dereita). + + + + + +Efectos de imaxe + + +Referencia dos efectos de imaxe +Autocrop / Remove Internal Border +Balance +Clear +Emboss +Flatten +Flip +Invert +Reduce Colors +Reduce to Grayscale +Reduce to Monochrome (Dithered) +Resize / Scale +Rotate +Set as Image (Crop) +Skew +Soften & Sharpen +More Effects +Notes + + + +Recorte automático / Borrar o contorno interno + +Isto elimina automaticamente o borde dunha imaxe ou selección. Emprega o recorte automático se tes unha imaxe que non encha de todo a imaxe ou selección e queres eliminar o exceso de espazo en branco. Para empregares esta función cunha imaxe con "dithering", tamén terás que empregar a Semellanza de cores. + + + + +Balance + +Esta función está disponíbel no diálogo Máis efectos + + + + + + + + +Permite axustar o brillo, contraste e gamma da imaxe ou selección. + + +A medida máis común de gamma (un decimal de 0.10 to 10.00) está situado entre o selector de Gamma e o botón Reiniciar. + + + + +Limpar + +Isto enche toda a imaxe ou selección coa cor de fondo. + + +Preme dúas veces a icona do Borrador para limpares a imaxe completa. + + + + + +Elevar + +Esta función está disponíbel no diálogo Máis efectos + + + + + + + + +Selecciona Activar para aplicar o efecto Elevar. Isto enfatiza os bordos e dalel á imaxe ou selección unha "aparencia de gravura". + + + +Achaiar + +Esta función está disponíbel no diálogo Máis efectos + + + + + + + + +Isto volve a colorear a iamxe con matices diferentes das dúas cores seleccionadas. + + + +Flip + + + + + + + + + +This flips the entire image or selection horizontally or vertically. + + + + +Inverter + +Esta función está disponíbel no diálogo Máis efectos + + + + + + + + +Isto permite inverter un ou máis canais RGB da imaxe ou selección. Selecciona Todo para trocar unha foto nun negativo e viceversa. Isto crea efectos divertidos. + + +To quickly invert all channels, you do not need to use this dialog. You can instead access the Invert Colors item in the Image or Selection menu. The Selection item is only displayed in the menubar if you use one of the selection tools. Additionally you can reach this action from the context menu opened with a &RMB; click in the image area. + + + + + +Reducir as cores + +Esta función está disponíbel no diálogo Máis efectos + + + + + + + + +Isto reduce o número de cores que se empregan na imaxe ou selección, con ou sen dithering. + +Dithering generally provides better quality results, however, you may wish to disable it for artistic effects; ⪚ using Monochrome instead of Monochrome (Dithered) gives a silhouette effect. + +Outra distinción importante é que, mentres que Monocromo (dithered) reduce sempre a imaxe completa ou selección a branco e negro, Monocromo só o fai se a imaxe ou selección contén máis de dúas cores. + + +For a quick, dithered monochrome image or selection, use the Reduce to Monochrome (Dithered) item of the Image or Selection menu. The Selection item is only displayed in the menubar if you use one of the selection tools. Additionally you can reach this action from the context menu opened with a &RMB; click in the image area. + + + +Mudar aquí o número de cores non ten ningún efecto sobre a profundidade de cores do formato de ficheiro. Se se quere alterar profundidade de cores hai que seleccionala nos diálogos ao gardar os ficheiros. Ten en conta que, e isto resulta confuso, mudar a profundidade de cores tamén altera o número de cores. + + + + +Reducir a escala de grises + +Isto reduce a imaxe completa ou a selección a unha escala de grises. + + + + +Reducir a monocromático (dithered) + +Isto reduce a imaxe completa ou selección a branco e negro. + + +Se non se quere que se aplique o efecto de "dithering" á imaxe ou selección, hai que empregar o diálogo Reducir as cores. + + + + +Mudar o tamaño / Escalar + + + + + + + + + +Mudar o tamaño da imaxe altera as dimensións da imaxe sen aplicar ningunha transformación ao contido existente. Escalar a imaxe estira o contido existente ás novas dimensións. Escala suave normalmente produce resultados de mellor calidade que Escalar, ao fusionar as cores viciñas. + +Pódense expresar as novas dimensións en píxeles ou como porcentaxe do tamaño orixinal. se se selecciona Manter as proporcións, a largura e a altura escálanse na mesma percentaxe. + + +Pódese Mudar o tamaño da imaxe completa ou a Escala suave da selección, libremente, empregando os selectores correspondentes. + + + +Só se poden escalar as seleccións e só se pode mudar o tamaño das caixas de texto. Consulta as notas para detalles adicionais acerca da aplicación destes efectos. + + + + +Xirar + + + + + + + + + +Isto rota a imaxe. Pódese especificar o ángulo e dirección do xiro. + + +Pódese invertir a dirección do xiro especificando un ángulo negativo. + + + +Consulta as notas para detalles acerca de como aplicar este efecto a unha selección. + + + + +Establecer como imaxe (recortar) + +Isto define a selección como a imaxe. + + +Isto só está disponíbel cando hai unha selección activa. + + + + +Inclinar + + + + + + + + + +Isto inclina a imaxe completa ou selección horizontalmente e/ou verticalmente. + + +Consulta as notas para detalles acerca de como aplicar este efecto a unha selección. + + + + +Suavizar e afiar + +Esta función está disponíbel no diálogo Máis efectos + + + + + + + + +Emprega este efecto para suavizar ou afiar a imaxe. + + + + +Máis efectos + +Este diálogo contén as funcións Balance, Elevar, Achaiar, Inverter, Reducir as cores e Suavizar e afiar. + + + +Notas + +Mudar o tamaño / Escalar, Xirar e Inclinar poden alterar as dimensións da imaxe. Pódense ver ass novas dimensións no diálogo. + +Se se aplican estes efectos a unha imaxe, a imaxe muda de tamaño se é preciso. Porén, se se aplican estes efectos a unha selección, a imaxe non muda de tamaño, mesmo se a selección transformada non encaixa. + + + + + + + + + +A imaxe da esquerda xirouse 30 graos no sentido horario para crear a imaxe da dereita. O &kolourpaint; aumentou automaticamente a imaxe para acomodar o contido máis grande. + + + + + + + + + +A selección da esquerda xirouse 30 graos no sentido horario para crear a selección da dereita. O tamaño da imaxe ficou o mesmo, polo que hai partes das selección que non son visíbeis sen Mudar o tamaño da imaxe. + + + + + +Créditos e licenza + +Carl Tucker +Pode que non sexa documentación concisa; pode que non sexa documentación completa; mais é documentación honesta. + + +&kolourpaint; +Copyright do programa © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Copyright das iconas específicas do &kolourpaint; © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Documentation and additional documentation artwork Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Partes reproducidas con permiso de + +Tradución da documentación: Xosé Calvo - http://trasno.net/ +&underFDL; Este programa licénciase como segue: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Todos os dereitos reservados. + + +Permítese a redistribución e o uso en formas fonte e binaria, con ou sen +modificación, sempre que se cumpran as condicións seguintes: + +1. A redistribución do código fonte debe reter o aviso de copyright anterior, +esta lista de condicións e a exención de responsabilidade seguinte. + +2. As redistribucións en forma binaria deben reproducir o aviso de copyright +anterior, esta lista de condicións e a exención de responsabilidade seguinte +na documentación e/ou materiais forencidos coa distribución. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + +Instalación + +Como obter o &kolourpaint; +&install.intro.documentation; Hai versións máis frecuentes con soporte para versións previsas do &kde; en http://kolourpaint.sourceforge.net/ + + + + +Compilación e instalación + + +Se está a ler esta axuda no &khelpcenter; o &kolourpaint; xa se instalou no sistema e non hai por que seguir estas instrucións xenéricas. + &install.compile.documentation; + + + +&documentation.index; +
            + + diff --git a/po/gl/kolourpaint.po b/po/gl/kolourpaint.po new file mode 100644 index 0000000..551428a --- /dev/null +++ b/po/gl/kolourpaint.po @@ -0,0 +1,2825 @@ +# translation of kolourpaint.po to galician +# +# Xabier García Feal , 2004. +# Xabi G. Feal , 2006. +# mvillarino , 2007, 2008, 2009. +# Marce Villarino , 2009, 2014. +# Miguel Branco , 2009. +# Xosé , 2012. +# Adrián Chaves Fernández (Gallaecio) , 2015, 2017. +# Adrián Chaves (Gallaecio) , 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2019-11-17 09:22+0100\n" +"Last-Translator: Adrián Chaves (Gallaecio) \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.03.70\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Xabier García Feal, Marce Villarino, Xosé Calvo" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "xabigf@gmx.net, mvillarino@users.sourceforge.net, xosecalvo@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balance" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Suavizar" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Focalizar" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Limpar" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selección: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Elevar" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Aplanar" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reducir para escala de grises" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Ton, Saturación, Valor" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inverter as cores" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverter" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reducir para monocromático (Dithered)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reducir para monocromático" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reducir a 256 cores (Dithered)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reducir a 256 cores" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Ecualizador do histograma" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Voltear" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Inverter en horizontal e vertical" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Voltear horizontalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Voltear verticalmente" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Texto: Cambiar o tamaño da caixa" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selección: Escala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selección: Cambiar de escala con suavidade" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Cambiar o tamaño" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Cambiar de escala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Cambiar de escala con suavidade" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rotar" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Distorsionar" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Desfacer: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Desfacer" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Refacer: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Refacer" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Desfacer: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Desfacer" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Refacer: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Refacer" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 elemento máis" +msgstr[1] "%1 elemento máis" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Selector de cores" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Inundar" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Máis efectos de imaxe (Selección)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Máis efectos de imaxe" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efecto:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reducir as cores" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Suavizar e afiar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Propiedades do documento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Puntos por polgada (PPP)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Sen especificar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Puntos por polgada (PPP) indica o número de píxeles da imaxe " +"que se imprimirán nunha polgada (2.54 cm).

            Canto maior sexan os PPP da " +"imaxe, menor será a imaxe impresa. Lembre que é pouco probábel que a " +"impresora produza impresos de alta calidade se aumentra isto ata máis de 300 " +"ou 600 PPP, en función da impresora.

            Se desexa imprimir a imaxe de " +"tal xeito que teña tamaño co que se ve na pantalla, poña a imaxe cos mesmos " +"PPP que ten a pantalla.

            Se o valor dos PPP está Non especificado, a imaxe tamén se imprimirá co mesmo tamaño que na pantalla.

            Non " +"todos os formatos de imaxe son compatíbeis cos valores de PPP. Se o formato " +"no que garda non os admite, non se gardarán.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Desprazamento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            O desprazamento é a posición relativa onde esta imaxe debe ser " +"impresa, en comparación coas outra imaxes.

            Non todos os formatos de " +"imaxe admiten o desprazamento. Se o formato no que garda non o " +"admite, o valor indicado aquí non se gardará.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Campos de &texto" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Engadir unha fila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Eliminar a fila" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Restaurar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Campos de texto fornece información adicional sobre a imaxe. " +"Esta probabelmente sexa unha área de comentario na que pode escribir " +"calquera texto.

            Porén, isto é específico do formato, polo que os " +"campos teoricamente poden ser datos interpretados polo computador -e que non " +"debe modificar- pero isto é improbábel.

            Non todos os formatos de imaxe " +"admiten Campos de texto. Se o formato no que garda non os admite, non " +"se gardarán.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Chave" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "O valor de texto «%1» na liña %2 require unha chave." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"As chaves de texto deben ser únicas. As chaves «%1» nas liñas %2 e %3 son " +"idénticas." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Os campos de texto son incorrectos" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensións" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Orixinal:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Previsualizar" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Actualizar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Cambiar o tamaño / Cambiar de escala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Ac&tuar sobre:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Toda a imaxe" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selección" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Caixa de texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operación" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Cambiar o tamaño: O tamaño da imaxe aumentarase creando " +"novas áreas á dereita ou ao fondo (cubertas coa cor de fondo) ou diminuído " +"cortándoa pola dereita e/ou polo fondo.
            • Cambiar de escala: A " +"imaxe expandirase duplicando os píxeles ou reducida eliminando píxeles.
            • Escala suavizada: Isto é o mesmo que cambiar de escala " +"excepto que mestura píxeles veciños para producir unha imaxe cun aspecto " +"máis suave.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Cambia&r o tamaño" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "Cambiar de e&scala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Es&cala suave" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Anchura:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Altura:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Novo:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Porcentaxe:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Manter as &proporcións" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Cambiar o tamaño da caixa de texto a %1x%2 pode requirir unha grande " +"cantidade de memoria. Isto pode reducir a velocidade do sistema e facer que " +"outras aplicacións queden sen recursos.

            Seguro que quere cambiar o " +"tamaño da caixa de texto?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Cambiar a caixa de texto?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Cambia&r a caixa de texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Cambiar o tamaño da imaxe a %1x%2 pode requirir gran cantidade de " +"memoria. Isto pode reducir a velocidade do sistema e facer que outras " +"aplicacións queden sen recursos.

            Seguro que quere cambiar o tamaño da " +"imaxe?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Cambiar o tamaño da imaxe?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Cambiar o tamaño da imax&e" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Cambiar de escala a imaxe a %1x%2 pode requirir unha grande cantidade " +"de memoria. Isto pode reducir a velocidade do sistema e facer que outras " +"aplicacións queden sen recursos.

            Seguro que quere cambiar de escala a " +"imaxe?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Cambiar de escala a imaxe?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&Cambiar de escala a imaxe" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Cambiar de escala a selección a %1x%2 pode requirir grande cantidade " +"de memoria. Isto pode reducir a velocidade do sistema e facer que outras " +"aplicacións queden sen recursos.

            Seguro que quere escala a selección?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Cambiar de escala a selección?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Cambiar de escala a s&elección" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Cambiar de escala con suavidade a imaxe a %1x%2 pode requirir grande " +"cantidade de memoria. Isto pode reducir a velocidade do sistema e facer que " +"outras aplicacións queden sen recursos.

            Seguro que quere cambiar de " +"escala con suavizado a selección?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Cambiar de escala con suavidade a imaxe?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Cambiar de escala con suavidade a imax&e" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Cambiar de escala con suavidade a selección a %1x%2 pode requirir " +"grande cantidade de memoria. Isto pode reducir a velocidade do sistema e " +"facer que outras aplicacións queden sen recursos.

            Seguro que quere " +"cambiar de escala con suavidade a selección?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Cambiar de escala con suavidade a selección?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Cambiar de escala con suavidade a s&elección" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rotar a selección" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rotar a imaxe" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Tras rotar:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Dirección" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Anti&horario" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Hora&rio" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Ángulo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 gra&os" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&raos" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &graos" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Personalizado:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "graos" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Rotar a imaxe para %1x%2 pode consumir moita memoria. Isto pode " +"reducir a capacidade de reacción do sistema e causarlle problemas de " +"recursos a outras aplicacións

            Seguro que quere rotar a selección?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rotar a selección?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rotar a selección" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Rotar a imaxe para %1x%2 pode requirir unha grande cantidade de " +"memoria. Isto pode afectar á velocidade do sistema e darlle problemas de " +"recursos a outras aplicacións.

            Seguro que quere rotar a imaxe?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rotar a imaxe?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rotar a imax&e" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Distorsionar a selección" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Distorsionar a imaxe" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Tras a distorsión:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Reducir a selección a %1x%2 pode requirir moita memoria. Isto pode " +"reducir a capacidade de reacción do sistema e traer problemas de recursos " +"para outras aplicacións

            Seguro que quere reducir a selección?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Distorsionar a selección?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Distorsionar a s&elección" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Distorsionar a imaxe a %1x%2 pode requirir unha grande cantidade de " +"memoria. Isto pode facer máis lento o sistema e dar problemas de recursos a " +"outras aplicacións.

            Seguro que quere distorsionar a imaxe?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Distorsionar a imaxe?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Distorsionar a imax&e" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Semellanza da cor" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Distancia no cubo de cores &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Coincidencia exacta" + +# skip-rule: normalization-ble +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Que é a semellanza de cores?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Gardar a vista previa" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (aprox.… %2%)" +msgstr[1] "%1 bytes (aprox.. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Non se puido abrir «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Non se puido abrir «%1» - non se admite este formato de imaxe.\n" +"O ficheiro podería estar corrompido." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Non se puido gardar a imaxe, porque a información dada é insuficiente." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Tipo MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Erro interno" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            O formato %1 podería non ser capaz de preservar toda a " +"información de cor da imaxe.

            Seguro que quere gardala neste formato?" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Formato de ficheiro con perdas" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Se garda a imaxe coa profundidade de cores de %1-bit pode perder " +"información de cor. Tamén se pode retirar a información de transparencia.

            Seguro que quere gardar con esta profundidade de cor?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Baixa profundidade de cor" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Non se puido gardar a imaxe porque non se pode crear o ficheiro temporal." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Non se puido gardar como «%1»." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Non se puido gardar a imaxe porque fallou o envío." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Retirar o b&ordo interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Retirar o bordo interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "&Recorte automático" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Recortar automaticamente" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint non pode retirar o bordo interno da selección xa que non se " +"puido atopar." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Non se pode retirar o bordo interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint non pode recortar automaticamente a imaxe xa que non se puido " +"atopar o seu bordo." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Non se pode recortar automaticamente" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Estabelecer como imaxe" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selección: Crear" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programa de debuxo por KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Fundador do proxecto" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Investigador xefe" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" +"Funcionalidade de dixitalización, funcionalidade de alfa, mantedor actual" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Iconas" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Compatibilidade con InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efectos de imaxe" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Porte a KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Adaptación a KF5." + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Grazas a toda a xente que axudou a facer posíbel este programa." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Ficheiros de imaxe para abrir, opcionalmente." + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vista" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imaxe" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Cores" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barra de ferramentas principal" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra de ferramentas de texto" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menú do botón dereito do rato da ferramenta de selección" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Editar" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Arrastre esquerdo da asa para cambiar o tamaño da imaxe." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Cambiar o tamaño da imaxe: Solte todos os botóns do rato." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Cambiar o tamaño da imaxe: clic dereito para cancelar." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Non se puido abrir a paleta de cores «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Non se puido abrir a paleta de cores «%1»; está nun formato non admitido.\n" +"O ficheiro podería estar corrompido." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Non se puido abrir a paleta de cores de KDE «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Non se puido gardar a paleta de cores como «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sen título" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Usar as predefinicións de KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Usar as de KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Abrir…" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Car&gar de novo" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Gardar" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Gardar &como…" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Engadir unha fila" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Eliminar a última fila" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Caixa de cores" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Modificouse a paleta de cores «%1».\n" +"Quere gardala?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Modificouse a paleta de cores de KDE «%1».\n" +"Quere gardala nun ficheiro?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"A paleta de cores predeterminada modificouse.\n" +"Quere gardala nun ficheiro?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Abrir unha paleta de cores" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Modificouse a paleta de cores «%1».\n" +"Se a carga de novo perderá todos os cambios feitos desde a última\n" +"vez que a gardou.\n" +"Está seguro de que quere cargala de novo?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Car&gar de novo" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"A paleta de cores de KDE «%1» modificouse.\n" +"Se a carga de novo perderá todos os cambios.\n" +"Está seguro?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"A paleta de cores predeterminada modificouse.\n" +"Se a carga de novo perderá todos os cambios.\n" +"Está seguro?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Gardar a paleta de cores como" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Pegar nunha xanela &nova" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Eliminar a selección" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opiar a un ficheiro…" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Pegar dun &ficheiro…" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Texto: Crear unha caixa" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Texto: Pegar" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint non pode pegar o contido do portapapeis porque está nun " +"formato descoñecido." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Non se pode pegar" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Texto: Eliminar a caixa" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selección: Eliminar" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Texto: Rematar" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selección: Anular a escolla" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copiar a un ficheiro" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Pegar dun ficheiro" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportar…" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Examinar…" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Facer unha captura de pantalla" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Propiedades" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Car&gar de novo" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Todos os ficheiros admitidos (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Abrir unha imaxe" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Non se puido abrir o diálogo de dixitalización." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Dixitalizar fallou" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Retardo da captura" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " segundo" +msgstr[1] " segundos" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Sen retardo" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Agochar a xanela principal" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Propiedades do documento" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Gardar a imaxe como" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportar" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Modificouse o documento «%1».\n" +"Se o carga de novo perderá todos os cambios feitos desde a última\n" +"vez que o gardou.\n" +"Está seguro?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Modificouse o documento «%1».\n" +"Se o carga de novo perderá todos os cambios.\n" +"Está seguro de que quere facelo?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Imprimir a imaxe" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Debe gardar esta imaxe antes de enviala.\n" +"Quere gardala?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"O documento «%1» modificouse.\n" +"Quere gardalo?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Cambiar o tamaño / &Cambiar de escala …" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Es&tabelecer como imaxe (Recortar)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Voltear (de arriba a abaixo)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Reflectir (horizontalmente)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rotar…" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rotar á &esquerda" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rotar á &dereita" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Distorsionar…" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reducir a Mo&nocromático (Dithered)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reducir a escala de &grises" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inverter as cores" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Limpar" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Facer confidencial" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Máis efectos…" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imaxe" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Selecc&ión" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Mostrar a &ruta" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Debuxar con suavizado" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Familia da fonte" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Tamaño do tipo de letra" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Letra grosa" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Cursiva" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Subliñado" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Riscado" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Opción anterior da ferramenta (Grupo nº 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Opción seguinte da ferramenta (Grupo nº 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Opción anterior da ferramenta (Grupo nº 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Opción seguinte da ferramenta (Grupo nº 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Debuxar &opaco" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Debuxar con semellanza da cor…" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Caixa de texto" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Mostrar a &grade" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Mostrar a &miniatura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Modo de miniatura a&mpliada" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Activar o rectángulo de miniatu&ra" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Ampliar" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Tomar a imaxe" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Fallou a abertura do escáner escollido." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Brocha" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Debuxa con brochas de distintas formas e tamaños" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Prema para debuxar puntos e arrastre para debuxar trazos." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Borrador de cor" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Substitúe os píxeles da cor de primeiro plano coa de fondo" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Prema ou arrastre para borrar os píxeles da cor de primeiro plano." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Borrador" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Permítelle borrar os erros" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Prema ou arrastre para borrar." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Soltar todos os botóns do rato." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Lapis" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Debuxa puntos e trazos a man alzada" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Bote de spray" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Graffiti con spray" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Prema ou arrastre para facer un graffiti con spray de pintura." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Clic dereito para cancelar." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Clic esquerdo para cancelar." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permítelle seleccionar unha cor da imaxe" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Prema para escoller unha cor." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Enche rexións da imaxe" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Prema para encher unha rexión." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Ampliar" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Acerca e afasta a imaxe" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Prema para ampliar ou reducir ou arrastre co esquerdo para ampliar unha área " +"concreta." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Curva" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Debuxar curvas" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Indique os puntos inicial e final." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Arrastre esquerdo para indicar o primeiro punto de control ou clic dereito " +"para rematar." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Arrastre dereito para indicar o primeiro punto de control ou prema co " +"esquerdo para rematar." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Arrastre esquerdo para indicar o último punto de control ou clic dereito " +"para rematar." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Arrastre dereito para definir o último punto de control ou clic esquerdo " +"para rematar." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Liña" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Debuxa liñas" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Arrastre para debuxar." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polígono" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Debuxa polígonos" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Arrastre para debuxar a primeira liña." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Arrastre esquerdo outra liña ou prema co dereito para rematar." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Arrastre co cotón dereito outra liña ou prema co esquerdo para rematar." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Liñas conectadas" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Debuxa liñas conectadas" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Debuxa elipses e círculos" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rectángulo" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Debuxa rectángulos e cadrados" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rectángulo arredondado" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Debuxa rectángulos e cadrados con cantos arredondados" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Arrastre esquerdo para crear a selección." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Arrastre esquerdo para mover a selección." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Arrastre esquerdo para cambiar de escala a selección." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selección: Opaco" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selección: Transparente" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selección: Transparencia da cor" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selección: Semellanza da transparencia da cor" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selección (Elíptica)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Fai unha selección elíptica ou circular" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selección (forma libre)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Fai unha selección de forma libre" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selección (Rectangular)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Fai unha selección rectangular" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selección: Mover" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Mancha" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Escribe texto" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Texto: Borrar atrás" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Texto: Eliminar" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Texto: Nova liña" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Texto: Escribir" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Arrastre esquerdo para crear o texto." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Arrastre esquerdo para mover o texto." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Texto: Mover a caixa" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Arrastre esquerdo para cambiar o tamaño do texto." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Clic esquerdo para cambiar a posición do cursor." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Texto: Fondo opaco" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Texto: Fondo transparente" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Texto: Trocar as cores" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Texto: Cor de primeiro plano" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Texto: Cor de fondo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Texto: Fonte" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Texto: Tamaño das letras" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Texto: Letra grosa" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Texto: Cursiva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Texto: Subliñado" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Texto: Riscado" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Modo sen ampliación - Miniatura" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Semellanza de cores é canto de similares deben ser as " +"cores de píxeles distintos, para que as operacións as consideren a mesma.

            Se o pon como algo distinto de Coincidencia exacta, poderá " +"traballar con máis eficacia en imaxes «dithered» e fotos, de xeito " +"comparábel á «Varela máxica» doutros programas de debuxo.

            Esta " +"funcionalidade aplícase a:

            • Seleccións: No modo " +"transparente, calquera cor na selección que sexa similar á cor " +"de fondo farase transparente.
            • Encher de cor: Para rexións " +"con píxeles de cores similares pero non idénticas, un valor maior " +"aumenta a probabilidade de encher máis píxeles.
            • Borrador de cor: Calquera píxel cunha cor similar á de primeiro plano " +"substituirase pola cor de fondo.
            • Recorte automático e " +"Retirar os bordos internos: Para bordos con píxeles de cores " +"similares, pero non idénticos, un valor máis alto é máis propenso a " +"recortar todo o bordo.

            Valores máis altos significan que as " +"operacións consideran que unha gama de cores maior será similar de " +"abondo para ser o mesmo. Así, debe aumentar o parámetro se as operacións de " +"riba non afectan a píxeles con cores que considere similares de abondo.

            " +"

            Porén, se teñen un efecto grande de máis e cambian píxeles con cores que " +"non pensa que sexan similares (p.ex. se Encher de cor cambia " +"demasiados píxeles), debe diminuír este parámetro.

            Para configuralo, " +"prema o cubo.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Semellanza de cores é canto de similares deben ser as " +"cores de píxeles distintos, para que as operacións as consideren a mesma.

            Se o pon como algo distinto de Coincidencia exacta, poderá " +"traballar con máis eficacia en imaxes «dithered» e fotos, de xeito " +"comparábel á «Varela máxica» doutros programas de debuxo.

            Esta " +"funcionalidade aplícase a:

            • Seleccións: No modo " +"transparente, calquera cor na selección que sexa similar á cor " +"de fondo farase transparente.
            • Encher de cor: Para rexións " +"con píxeles de cores similares pero non idénticas, un valor maior " +"aumenta a probabilidade de encher máis píxeles.
            • Borrador de cor: Calquera píxel cunha cor similar á de primeiro plano " +"substituirase pola cor de fondo.
            • Recorte automático e " +"Retirar os bordos internos: Para bordos con píxeles de cores " +"similares, pero non idénticos, un valor máis alto é máis propenso a " +"recortar todo o bordo.

            Valores máis altos significan que as " +"operacións consideran que unha gama de cores maior será similar de " +"abondo para ser o mesmo. Así, debe aumentar o parámetro se as operacións de " +"riba non afectan a píxeles con cores que considere similares de abondo.

            " +"

            Porén, se teñen un efecto grande de máis e cambian píxeles con cores que " +"non pensa que sexan similares (p.ex. se Encher de cor cambia " +"demasiados píxeles), debe diminuír este parámetro.

            Para configuralo, " +"prema o cubo.

            Semellanza de cores é canto de " +"similares deben ser as cores de píxeles distintos, para que as " +"operacións as consideren a mesma.

            Se o pon como algo distinto de " +"Coincidencia exacta, poderá traballar con máis eficacia en imaxes " +"«dithered» e fotos, de xeito comparábel á «Varela máxica» doutros programas " +"de debuxo.

            Esta funcionalidade aplícase a:

            • Seleccións: No modo transparente, calquera cor na selección que sexa " +"similar á cor de fondo farase transparente.
            • Encher de " +"cor: Para rexións con píxeles de cores similares pero non " +"idénticas, un valor maior aumenta a probabilidade de encher máis píxeles.
            • Borrador de cor: Calquera píxel cunha cor similar á de " +"primeiro plano substituirase pola cor de fondo.
            • Recorte " +"automático e Retirar os bordos internos: Para bordos con píxeles " +"de cores similares, pero non idénticos, un valor máis alto é máis " +"propenso a recortar todo o bordo.

            Valores máis altos significan " +"que as operacións consideran que unha gama de cores maior será similar de abondo para ser a mesma. Así, debe aumentar o parámetro se as " +"operacións de riba non afectan a píxeles con cores que considere similares " +"de abondo.

            Porén, se teñen un efecto grande de máis e cambian píxeles " +"con cores que non pensa que sexan similares (p.ex. se Encher de cor " +"cambia demasiados píxeles), debe diminuír este parámetro.

            Para " +"configuralo, prema o cubo.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Semellanza de cor: %1%

            Prema para configurar.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Semellanza de cor: Coincidencia exacta

            Prema para " +"configurar.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Brillo:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Re&staurar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntraste:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Res&taurar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "C&anles:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Todas" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Vermello" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Azul" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Res&taurar todos os valores" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Opcións" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Cantidade:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Activar" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Cores" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Ton:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturación:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valor:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Vermello" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Verde" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Azul" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Todas" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canles" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monocromático" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nocromático (dithered)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 c&ores" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 cor&es (dithered)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Cores de 24 &bits" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reducir a" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granulosidade:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Para escoller a cor de primeiro plano co que pinta a ferramenta, faga " +"clic esquerdo nunha cela de cor enchida. Para escoller a cor de fondo, faga " +"clic dereito.

            Para cambiar a cor da cela de cor en si, faga clic duplo " +"nela.

            Tamén pode permutar a cor dunha cela enchida con calquera outra " +"cela arrastrando e deixando. E, de manter premida a tecla Ctrl, a cor " +"da cela de destino sobrescribirase, no canto de cambiarse coa cor da cela de " +"orixe.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Converter &en:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Cali&dade:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Pre&visualizar" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monocromática" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monocromática (Dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 cores" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 cores (Dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Cores de 24 bits" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Posición da i&maxe" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centrada na páxina" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Parte superior &esquerda da páxina" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparente" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Valores predeterminados de KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Cores: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Cores: %1 [modificado]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Círculo" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Cadrado" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barra inversa" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Non encher" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Encher coa cor de fondo" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Encher coa cor de primeiro plano" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaca" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Xa existe un documento chamado «%1».\n" +#~ "Quere sobrescribilo?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Xa existe unha paleta de cores chamada «%1».\n" +#~ "Quere sobrescribila?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Se indica un nivel de ampliación que non é múltiplo de 100% fará que a " +#~ "edición sexa imprecisa e aparezan artefactos ao redebuxar.\n" +#~ "Seguro que quere ampliar ao %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Ampliar ao %1%" + +#~ msgid "None" +#~ msgstr "Ningún" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Cambiar o tamaño da imaxe a %1x%2 require grande cantidade de " +#~ "memoria. Isto pode diminuír a velocidade do sistema e deixar sen recursos " +#~ "a outros programas.

            Está seguro de que quere cambiar o tamaño da " +#~ "imaxe?

            " + +#~ msgid "Overwrite" +#~ msgstr "Sobrescribir" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Non foi posíbel abrir «%1», non se coñece o tipo mime." + +#~ msgid "Save Preview" +#~ msgstr "Gardar a vista previa" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Para obter axuda técnica, visite a web do proxecto." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Non se atopou ningún engadido que forneza o diálogo co escáner.\n" +#~ "Isto normalmente significa que non está instalado o paquete que fornece " +#~ "ksaneplugin." + +#~ msgid "No Scanning Support" +#~ msgstr "Non hai soporte de escáner" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Non se instalou o soporte de escáner." diff --git a/po/he/kolourpaint.po b/po/he/kolourpaint.po new file mode 100644 index 0000000..9025728 --- /dev/null +++ b/po/he/kolourpaint.po @@ -0,0 +1,2633 @@ +# translation of kolourpaint.po to Hebrew +# translation of kolourpaint-he.po to +# translation of kolourpaint-he.po to +# Garry Lachman , 2004. +# Igal , 2004. +# Diego Iastrubni , 2004, 2005. +# Diego Iastrubni , 2005, 2006, 2007, 2012. +# tahmar1900 , 2007. +# Elkana Bardugo , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2017-05-16 07:02-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "גארי לכמן, Koala, ליעד ויינברגר" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "Garry@Nunex.co.il, koala@linux.net, weliad@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "איזון" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, fuzzy, kde-format +msgid "Clear" +msgstr "&נקה" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "בחירה: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "המרת הצבעים לגווניי אפור" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "הפוך צבעים" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "הפוך" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "הפוך" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "הפוך אופקי ואנכי" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "הפוך אופקי" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "הפוך אנכי" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "טקסט: שינוי גודל קופסה" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "בחירה: שינוי גודל" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "בחירה: הגדלה עדינה" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "שנה גודל" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "הגדלה" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "הגדלה עדינה" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "סובב" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "נטוי" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&בטל: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, fuzzy, kde-format +msgid "&Undo" +msgstr "&בטל: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&בצע שוב: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, fuzzy, kde-format +msgid "&Redo" +msgstr "&אדום" + +#: commands/kpCommandHistoryBase.cpp:454 +#, fuzzy, kde-format +msgid "Undo: %1" +msgstr "&בטל: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, fuzzy, kde-format +msgid "Undo" +msgstr "&בטל: %1" + +#: commands/kpCommandHistoryBase.cpp:462 +#, fuzzy, kde-format +msgid "Redo: %1" +msgstr "&בצע שוב: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, fuzzy, kde-format +msgid "Redo" +msgstr "אדום" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 עוד עצמים" +msgstr[1] "עוד %1 עצמים" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "בחירת צבע" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "מילוי" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "&עוד אפקטים..." + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "&עוד אפקטים..." + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&אפקט:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "הקטן צבעים" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, fuzzy, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "%1 x %2" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, fuzzy, kde-format +msgid "Horizontal:" +msgstr "&אופקי:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, fuzzy, kde-format +msgid "Vertical:" +msgstr "&אנכי:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, fuzzy, kde-format +msgid "O&ffset" +msgstr "&אפקט:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, fuzzy, kde-format +msgid "&Text Fields" +msgstr "טקסט: סיום" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, fuzzy, kde-format +msgid "&Delete Row" +msgstr "&מחק בחירה" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&אפס" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, fuzzy, kde-format +msgid "Value" +msgstr "&כחול" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "טקסט: סיום" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "ממדים" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "מקורי:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "תצוגה מקדימה" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "שנה גודל/הגדל" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "כל התמונה" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "בחירה" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "קופסת טקסט" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "פעולה" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&שנה גודל" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&הגדל" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "&הגדלה עדינה" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "רוחב:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "גובה:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&חדש" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&אחוז:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "שמור על &יחס נוכחי" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "לשנות גודל של קופסת הטקסט?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "&שינוי הגודל של קופסת הטקסט" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "לשנות גודל תמונה?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&שנה גודל תמונה" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "שנוי גודל תמונה?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "הגדל בחירה?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "הגדלה עדינה של התמונה?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "הגדלה &עדינה של התמונה" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "הגדלה עדינה של בחירה" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "&הגדלה עדינה של בחירה" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "סובב סחירה" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "סובב תמונה" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, fuzzy, kde-format +msgid "After rotate:" +msgstr "אחרי הסיבוב:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "כיוון" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&נגד כיוון השעון" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&בכיוון השעון" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "הטיה" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &מעלות" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "1&80 מעלות" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "2&70 מעלות" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&מותאם אישית:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "מעלות" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            שינוי גודל לתמונה לגודל של %1x%2 עלול לגרום לצריכת זיכרון גבוהה. דבר " +"זה עלול לגרום למערכת להגיב באטיות ולגרום לתקלות בתכנות אחרות.

            האם " +"ברצונך לשנות את גודל התמונה?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "סיבוב בחירה?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "סיבוב &בחירה" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            שינוי גודל לתמונה לגודל של %1x%2 עלול לגרום לצריכת זיכרון גבוהה. דבר " +"זה עלול לגרום למערכת להגיב באטיות ולגרום לתקלות בתכנות אחרות.

            האם " +"ברצונך לשנות את גודל התמונה?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "סובב תמונה?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "&סובב תמונה" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "הגדל בחירה" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "הגדל תמונה" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, fuzzy, kde-format +msgid "After skew:" +msgstr "אחרי הגדלה:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&אופקי:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&אנכי:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            שינוי גודל לתמונה לגודל של %1x%2 עלול לגרום לצריכת זיכרון גבוהה. דבר " +"זה עלול לגרום למערכת להגיב באטיות ולגרום לתקלות בתכנות אחרות.

            האם " +"ברצונך לשנות את גודל התמונה?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "הגדל בחירה?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "הגדל &בחירה" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            שינוי גודל לתמונה לגודל של %1x%2 עלול לגרום לצריכת זיכרון גבוהה. דבר " +"זה עלול לגרום למערכת להגיב באטיות ולגרום לתקלות בתכנות אחרות.

            האם " +"ברצונך לשנות את גודל התמונה?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "שנוי גודל תמונה?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&הגדל תמונה" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "דמיון צבעים" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, fuzzy, kde-format +msgid "&RGB Color Cube Distance" +msgstr "מרחק קוביית צבעי RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "התאמה מדויקת" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "שמור תצוגה מקדימה" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, fuzzy, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 בתים (בערך %2%)" +msgstr[1] "%1 בתים (בערך %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "אין אפשרות לפתוח את \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"אין אפשרות לפתוח את \"%1\" - פורמט התמונה לא נתמך.\n" +"הקובץ כנראה פגום." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "אין אפשרות לשמור את התמונה - אין מספיק מידע." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"כתובת: %1\n" +"סוג: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<ריק>" + +#: document/kpDocument_Save.cpp:89 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "שגיאה פנימית" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            הפורמט %1 עלול לא להכיל את כל המידע אודות צבעי התמונה.

            " +"

            האם ברצונך לשמור בפורמט הזה?

            " + +#: document/kpDocument_Save.cpp:131 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "תבנית קובץ המאבדת מידע" + +#: document/kpDocument_Save.cpp:140 +#, fuzzy, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            שמירת התמונה בעומק צבעים של %1 סיביות תגרום לאיבוד מידע של צבעים. כל " +"שקיפות תוסר.

            האם ברצונך לשמור בעומק הזה?

            " + +#: document/kpDocument_Save.cpp:150 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "עומק תצוגה נמוכה" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "אין אפשרות לשמור את התמונה - אין אפשרות ליצור קובץ זמני." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "אין אפשרות לשמור בתור \"%1\"." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "אין אפשרות לשמור את התמונה - השליחה נכשלה." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "הסר גבול פ&נימי" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "הסר מסגרת פנימית" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "&חיתוך אוטומטי" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "חיתוך אוטומטי" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "הסר מסגרת פנימית" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "לא יכול לחתוך באופן אוטומטי" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "קבע בתור תמונה" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "בחירה: צור" + +#: kolourpaint.cpp:51 +#, fuzzy, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +msgid "Paint Program by KDE" +msgstr "תוכנת ציור עבור KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "בודק ראשי" + +#: kolourpaint.cpp:72 +#, fuzzy, kde-format +msgid "Martin Koller" +msgstr "סרגל כלים עבור טקסט" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "סמלים" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "תמיכה בשיטת קלט" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, fuzzy, kde-format +msgid "Image Effects" +msgstr "&עוד אפקטים..." + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +msgid "Image files to open, optionally" +msgstr "קובץ תמונה לפתיחה" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&תצוגה" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&תמונה" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&צבעים" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "סרגל כלים ראשי" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "סרגל כלים עבור טקסט" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, fuzzy, kde-format +msgid "Selection Tool RMB Menu" +msgstr "בחירה: הזזה" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&עריכה" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "תצוגה מקדימה" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "גרור את הידית לשינוי גודל התמונה." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "שינוי גודל: נא לשחרר את כל לחצני העכבר." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "טקסט" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, fuzzy, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "אין אפשרות לפתוח את \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, fuzzy, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"אין אפשרות לפתוח את \"%1\" - פורמט התמונה לא נתמך.\n" +"הקובץ כנראה פגום." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, fuzzy, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "אין אפשרות לפתוח את \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, fuzzy, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "אין אפשרות לשמור בתור \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, fuzzy, kde-format +msgid "Use KolourPaint Defaults" +msgstr "KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, fuzzy, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&הפוך..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, fuzzy, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "&טען מחדש" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, fuzzy, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&הגדל" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, fuzzy, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "שמור תמונה בשם" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, fuzzy, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "&מחק בחירה" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "תיבת צבעים" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, fuzzy, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"המסמך \"%1\" נערך.\n" +"האם ברצונך לשמור את השינוי?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, fuzzy, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"המסמך \"%1\" נערך.\n" +"האם ברצונך לשמור את השינוי?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, fuzzy, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"המסמך \"%1\" נערך.\n" +"האם ברצונך לשמור את השינוי?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "צבעים" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, fuzzy, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"המסמך \"%1\" שונה.\n" +"טעינה מחדש תגרום לאיבוד כל השינויים שנעשו עד השמירה האחרונה שלך.\n" +"האם אתה בטוח?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, fuzzy, kde-format +msgid "&Reload" +msgstr "&טען מחדש" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, fuzzy, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"המסמך \"%1\" שונה.\n" +"טעינה מחדש תגרום לאיבוד כל השינויים.\n" +"האם אתה בטוח?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, fuzzy, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"המסמך \"%1\" שונה.\n" +"טעינה מחדש תגרום לאיבוד כל השינויים.\n" +"האם אתה בטוח?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, fuzzy, kde-format +msgid "Save Color Palette As" +msgstr "הפוך צבעים" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "הדבק בחלון &חדש" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&מחק בחירה" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "ה&דבק לקובץ..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "הדבק &מקובץ..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "טקסט: צור קופסה" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "טקסט: הדבק" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "אין אפשרות להדביק" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "טקסט: מחק קופסה" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "בחירה: מחק" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "טקסט: סיום" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "בחירה: בטל בחירה" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "העתק לקובץ" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "הדבק מקובץ" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "יי&צא..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "סרוק..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&טען מחדש" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "פתח תמונה" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, fuzzy, kde-format +msgid "Hide Main Window" +msgstr "הדבק בחלון &חדש" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "שמור תמונה בשם" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "יי&צא..." + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"המסמך \"%1\" שונה.\n" +"טעינה מחדש תגרום לאיבוד כל השינויים שנעשו עד השמירה האחרונה שלך.\n" +"האם אתה בטוח?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"המסמך \"%1\" שונה.\n" +"טעינה מחדש תגרום לאיבוד כל השינויים.\n" +"האם אתה בטוח?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "כל התמונה" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"אתה חייב לשמור את התמונה לפני השליחה.\n" +"האם ברצונך לשמור אותה?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"המסמך \"%1\" נערך.\n" +"האם ברצונך לשמור את השינוי?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&שנה גודל/הגדל..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, fuzzy, kde-format +msgid "&Flip (upside down)" +msgstr "&אנכי (מלמעלה למטה)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, fuzzy, kde-format +msgid "Mirror (horizontally)" +msgstr "הפוך אופקי" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&סובב..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, fuzzy, kde-format +msgid "Rotate &Left" +msgstr "סובב תמונה" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, fuzzy, kde-format +msgid "Rotate Righ&t" +msgstr "סובב תמונה" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&הנטה..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "המרה ל&גווניי אפור" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&הפוך צבעים (נגטיב)" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&נקה" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&עוד אפקטים..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, fuzzy, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&תמונה" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, fuzzy, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "&בחירה" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&הצג נתיב" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "סוג כתב" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, fuzzy, kde-format +msgid "Font Size" +msgstr "טקסט: גודל כתב" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "מודגש" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, fuzzy, kde-format +msgid "Italic" +msgstr "טקסט: כתב נטוי" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "קו תחתון" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "קו חותך" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, fuzzy, kde-format +msgid "&Draw Opaque" +msgstr "מעורפל" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, fuzzy, kde-format +msgid "Draw With Color Similarity..." +msgstr "דמיון צבעים" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "ארגז כלים" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "הצג קווי &מתאר" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "הצג &תצוגות מקדימות" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "כל התמונה" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "מברשת" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "ציור בעזרת מברשת של צורות שונות בגדלים שונים" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "לחץ כדי לצייר נקודות וקווים חופשיים." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "מחיקת צבעים" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "החלף פיקסלים של צבע החזית באלה של הרקע" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "לחץ או גרור בשביל למחוק פיקסלים מתוך צבעי החזית" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "מחק" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "לחץ או גרור למחיקה" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "נא לשחרר את כל לחצני העכבר." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "עט" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "צייר נקודות וקווים חופשיים" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "ספריי" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "ציור קיר (גרפיטי)" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "לחץ או גרור לציור קיר." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "לחצן ימיני לביטול." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "לחצן שמאלי לביטול." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1:" + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "מאפשר לבחור צבע מתוך התמונה" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "לחץ כדי לבחור צבע." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "מלא אזורים בתמונה" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "לחץ ומלא אזורים." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "עקומה" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "צייר עקומה" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "גרור את נקודות ההתחלה והסיום" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "גרירה שמאלית נקודת השליטה האחרונה או לחציה ימנית לסיום" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "גרירה ימנית לנקודת השליטה האחרונה או לחציה שמאלית לסיום" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "קו" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "צייר קווים" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "גרור כדי לצייר" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "פוליגון" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "צייר פוליגון" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "גרור כדי לצייר את הקו הראשון" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "קווים מחוברים" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "צייר קווים מחוברים" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "אליפסה" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "צייר אליפסה ועיגול" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "מלבן" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "צייר מלבנים וריבעים" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "מלבן מעוגל" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "מצייר מלבנים וריבעים עם פינות מעוגלות" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "גרור כדי ליצור תחום בחירה" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "גרור להזזת תחום הבחירה" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "גרורה שמאלית כדי לשנות גודל הבחירה." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "בחירה: שקוף" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "בחירה: צבע שקיפות" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "בחירה: שקיפות צבע דומה" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "בחירה (אליפסה)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "בחירת (מצב חופשי)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "בחירה (מלבני)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "בחירה: הזזה" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: משטח" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "טקסט: מחיקה אות" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "טקסט: מחק" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "טקסט: קו חדש" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "טקסט: כתוב" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "גרור כדי ליצור קופסת טקסט." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "גרור להזזת קופסת הטקסט." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "טקסט: הזז קופסה" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "לחצן שמאלי לשינוי מיקום הסמן" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "טקסט: צבע רקע שקוף" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "טקסט: החלף צבעים" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "טקסט: צבע חזית" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "טקסט: צבע רקע" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "טקסט: כתב" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "טקסט: גודל כתב" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "טקסט: הדגשה" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "טקסט: כתב נטוי" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "טקסט: קו תחתון" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "טקסט: קו חותך" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, fuzzy, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "הסתר &תצוגות מקדימות" + +#: views/kpZoomedThumbnailView.cpp:65 +#, fuzzy, kde-format +msgid "%1% - Thumbnail" +msgstr "תצוגה מקדימה" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&בהירות:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&אפס" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&גמא:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&אפס" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "ע&רוצים:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "הכל" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "אדום" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "ירוק" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "כחול" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "אפס &את כל הערכים" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "הגדרות" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&כמות:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&אפשר" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "צבעים" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, fuzzy, kde-format +msgid "&Hue:" +msgstr "&חדש" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, fuzzy, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&כחול" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&אדום" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&ירוק" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&כחול" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&הכל" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "ערוצים" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&מונוכרום" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 צ&בעים" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24 &סיביות של צבע" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "הקטן אל" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "המר &אל:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "אי&כות:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&תצוגה מקדימה" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "מונוכרום" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 צבעים" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24 סיביות של צבע" + +#: widgets/kpPrintDialogPage.cpp:58 +#, fuzzy, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "קובץ תמונה לפתיחה" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "שקוף" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, fuzzy, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, fuzzy, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "צבעים" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "עיגול" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "מרובע" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "לוכסן" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "לוכסן הפוך" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "ללא מילוי" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "מלא עם צבע רקע" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "מלא עם צבע חזית" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "מעורפל" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "מסמך בשם \"%1\" כבר קיים.\n" +#~ "האם ברצונך לשכתב אותו?" + +#, fuzzy +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "מסמך בשם \"%1\" כבר קיים.\n" +#~ "האם ברצונך לשכתב אותו?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "קביעת רמת התקריב לרמה שאינה כפולה של 100% מסתכמת בעריכה לא מדויקת וגלישות " +#~ "בציור מחדש.\n" +#~ "האם ברצונך לקבוע את רמת התקריב ל־%1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "קבע רמת התקרבות אל %1%" + +#~ msgid "None" +#~ msgstr "כלום" diff --git a/po/hi/kolourpaint.po b/po/hi/kolourpaint.po new file mode 100644 index 0000000..aa99791 --- /dev/null +++ b/po/hi/kolourpaint.po @@ -0,0 +1,2807 @@ +# translation of kolourpaint4.po to Hindi +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Ravishankar Shrivastava , 2007. +# Raghavendra Kamath , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-08-21 16:25+0530\n" +"Last-Translator: Raghavendra Kamath \n" +"Language-Team: kde-hindi\n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: Lokalize 21.08.0\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "रविशंकर श्रीवास्तव, जी. करूणाकर" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "raviratlami@aol.in," + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "संतुलन" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "मृदुलता लाएँ" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "सुस्पष्ट" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "साफ करें" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "चयन: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "एम्बोज़" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "चपटा करें" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "श्वेत-श्याम में कम करें" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "वर्ण, संतृप्ति, मूल्य" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "रंग उलटें" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "उलटें" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "मोनोक्रोम में कम करें (डिथर्ड)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "मोनोक्रोम में कम करें" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "256 रंग में कम करें (डिथर्ड)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "256 रंग में कम करें" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "हिस्टोग्राम इक्वलाइजर" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "पलटें" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "आड़ा तथा खड़ा पलटें" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "आड़ा पलटें" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "खड़ा पलटें" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "पाठ: बक्सा को नया आकार" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "चयन: स्केल" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "चयन: मृदु स्केल" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "आकार बदलें" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "स्केल" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "मृदु स्केल" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "घुमाएँ" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "मोड़ें" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "पहले जैसा: %1 (&U)" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "पहले जैसा (&U)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "दोहराएँ: %1 (&R)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "दोहराएँ (&R)" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "पहले जैसा: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "पहले जैसा" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "दोहराएँ: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "दोहराएँ" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "" +msgstr[1] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "रंग चयनक" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "पूरा भरें" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, fuzzy, kde-format +#| msgid "More Image Effects (Selection)" +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "अधिक छवि प्रभाव (चयन)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "More Image Effects" +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "अधिक छवि प्रभाव" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "प्रभावः (&E)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "रंग कम करें" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "मृदु करें व सुस्पष्ट करें" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, fuzzy, kde-format +#| msgid "Document Properties" +msgctxt "@title:window" +msgid "Document Properties" +msgstr "दस्तावेज़ गुण" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "डाट्स प्रति इंच (डीपीआई) (&P)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "अविशिष्ट" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "आड़ा:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "खड़ा:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "ऑफसेट (&f)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "पाठ फील्ड्स (&T)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "पंक्ति जोड़ें (&A)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "पंक्ति मिटाएँ (&D)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "रीसेट (&R)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "कुंजी" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "मान" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "पंक्ति %2 में पाठ मूल्य \"%1\" को कुंजी की आवश्यकता है." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, fuzzy, kde-format +#| msgid "" +#| "All text keys must be unique. The text key \"%1\" on lines %1 and %2 are " +#| "identical." +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"सभी पाठ कुंजियों को विशिष्ट होना चाहिए. लाइनों %1 तथा %2 पर पाठ कुंजी \"%1\" एक जैसे " +"हैं." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, fuzzy, kde-format +#| msgid "Invalid Text Fields" +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "अवैध पाठ फ़ील्ड" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "आयाम" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "असली:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "पूर्वावलोकन" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "अद्यतन (&U)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "Resize / Scale" +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "नया आकार / स्केल" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "क्रिया: (&t)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "सम्पूर्ण छवि" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "चयन" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "पाठ बक्सा" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "ऑपरेशन" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "नया-आकार (&R)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "स्केल (&S)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "मृदु स्केल (&m)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "चौडाईः" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "ऊँचाईः" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "एक्स" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "नयाः (&N)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "प्रतिशत: (&P)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "आस्पेक्ट रेशो बनाए रखें (&a)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, fuzzy, kde-format +#| msgid "Resize Text Box?" +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "पाठ बक्सा को नया आकार दें?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "पाठ बक्सा नया आकार (&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            छवि को %1x%2 नया आकार देने पर इसे बहुत से तंत्र मेमोरी की आवश्यकता होगी. यह " +"सिस्टम के रिस्पांसिवनेस को कम कर सकता है तथा अन्य अनुप्रयोग रिसोर्सों में समस्याएँ पैदा कर " +"सकता है.

            क्या आप सुनिश्चित हैं कि आप छवि को नया आकार देना चाहते हैं?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +#| msgid "Resize Image?" +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "छवि को नया आकार दें?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "छवि को नया आकार दें (&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            छवि को %1x%2 स्केल करने पर इसे बहुत से तंत्र मेमोरी की आवश्यकता होगी. यह तंत्र के " +"रिस्पांसिवनेस को कम कर सकता है तथा अन्य अनुप्रयोग रिसोर्सों में समस्याएँ पैदा कर सकता है.

            क्या आप सुनिश्चित हैं कि आप छवि को स्केल करना चाहते हैं?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +#| msgid "Scale Image?" +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "छवि आकार बदलें?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "छवि स्केल करें (&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            चयनित को %1x%2 स्केल करने पर इसे बहुत से तंत्र मेमोरी की आवश्यकता होगी. यह " +"सिस्टम के रिस्पांसिवनेस को कम कर सकता है तथा अन्य अनुप्रयोग रिसोर्सों में समस्याएँ पैदा कर " +"सकता है.

            क्या आप सुनिश्चित हैं कि आप चयनित को स्केल करना चाहते हैं?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Scale Selection?" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "चयन स्केल करें?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "चयन स्केल करें (&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, fuzzy, kde-format +#| msgid "Smooth Scale Image?" +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "छवि मृदु स्केल करें?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "छवि मृदु स्केल करें (&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, fuzzy, kde-format +#| msgid "Smooth Scale Selection?" +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "चयन मृदु स्केल करें?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "चयन मृदु स्केल करें (&e)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "चयन घुमाएं" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "छवि घुमाएँ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, fuzzy, kde-format +#| msgid "After Rotate:" +msgid "After rotate:" +msgstr "घुमाने के बाद:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "दिशा" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "घड़ी की विपरीत दिशा में (&n)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "घड़ी की दिशा में (&l)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "कोण" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 अंश (&d)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 अंश (&e)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 अंश (&g)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "मनपसंद: (&u)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "कोण" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the selection?

            " +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            चयनित को %1x%2 घुमाने पर इसे बहुत से तंत्र मेमोरी की आवश्यकता होगी. यह तंत्र के " +"रिस्पांसिवनेस को कम कर सकता है तथा अन्य अनुप्रयोग रिसोर्सों में समस्याएँ पैदा कर सकता है.

            क्या आप सुनिश्चित हैं कि आप चयनित को घुमाना चाहते हैं?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +#| msgid "Rotate Selection?" +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "चयन घुमाएं?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "चयन घुमाएँ (&e)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the image?

            " +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            छवि को %1x%2 घुमाने पर इसे बहुत से तंत्र मेमोरी की आवश्यकता होगी. यह तंत्र के " +"रिस्पांसिवनेस को कम कर सकता है तथा अन्य अनुप्रयोग रिसोर्सों में समस्याएँ पैदा कर सकता है.

            क्या आप सुनिश्चित हैं कि आप छवि को घुमाना चाहते हैं?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +#| msgid "Rotate Image?" +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "छवि घुमाएँ?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "छवि घुमाएँ (&e)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Skew Selection" +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "चयन मोड़ें" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Skew Image" +msgctxt "@title:window" +msgid "Skew Image" +msgstr "छवि मोड़ें" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, fuzzy, kde-format +#| msgid "After Skew:" +msgid "After skew:" +msgstr "मोड़ने के बाद:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "आड़ा: (&H)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "खड़ा: (&V)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the selection?

            " +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            चयनित को %1x%2 स्क्यू करने पर इसे बहुत से तंत्र मेमोरी की आवश्यकता होगी. यह " +"सिस्टम के रिस्पांसिवनेस को कम कर सकता है तथा अन्य अनुप्रयोग रिसोर्सों में समस्याएँ पैदा कर " +"सकता है.

            क्या आप सुनिश्चित हैं कि आप चयनित को स्क्यू करना चाहते हैं?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +#| msgid "Skew Selection?" +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "चयन मोड़ें?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "चयन मोड़ें (&e)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the image?

            " +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            छवि को %1x%2 स्क्यू करने पर इसे बहुत से तंत्र मेमोरी की आवश्यकता होगी. यह तंत्र के " +"रिस्पांसिवनेस को कम कर सकता है तथा अन्य अनुप्रयोग रिसोर्सों में समस्याएँ पैदा कर सकता है.

            क्या आप सुनिश्चित हैं कि आप छवि को स्क्यू करना चाहते हैं?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +#| msgid "Skew Image?" +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "छवि मोड़ें?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "छवि मोड़ें (&e)" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, fuzzy, kde-format +#| msgid "Color Similarity" +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "रंग एकरूपता" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "आरजीबी रंग घन दूरी (&R)" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "सटीक जोड़ीदार" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "रंग सिमिलेरिटी क्या है?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, fuzzy, kde-format +#| msgid "Save Preview" +msgctxt "@title:window" +msgid "Save Preview" +msgstr "पूर्वावलोकन सहेजें" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "" +msgstr[1] "" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr " \"%1\" को खोल नहीं सकते." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" को खोला नहीं जा सकता - असमर्थित फ़ॉर्मेट.\n" +"फ़ाइल खराब हो सकता है." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "छवि सहेज नहीं सका - अपर्याप्त जानकारी." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"यूआरएल: %1\n" +"माइम-क़िस्म: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<खाली>" + +#: document/kpDocument_Save.cpp:89 +#, fuzzy, kde-format +#| msgid "Internal Error" +msgctxt "@title:window" +msgid "Internal Error" +msgstr "आंतरिक त्रुटि" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, fuzzy, kde-format +#| msgid "Lossy File Format" +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "लॉसी फ़ाइल फार्मेट" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, fuzzy, kde-format +#| msgid "Low Color Depth" +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "कम रंग गहराई" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "छवि को सहेज नहीं सका - अस्थाई फ़ाइल बनाने में अक्षम." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "\"%1\" के रूप में सहेज नहीं सका." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "छवि को सहेज नहीं सका - अपलोड करने में असफल." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "आंतरिक किनारा मिटाएँ (&o)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "आंतरिक किनारा मिटाएँ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "स्वचालित कांट-छांट (&o)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "स्वचालित कांट-छांट करें" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"कलरपेंट चयनित का आंतरिक किनारा को मिटा नहीं सकता चूंकि इसे चिह्नित नहीं किया जा सका." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, fuzzy, kde-format +#| msgid "Cannot Remove Internal Border" +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "आंतरिक किनारा को नहीं मिटा सका." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"कलरपेंट छवि को स्वचालित काट नहीं सकता चूंकि इसका किनारा चिह्नित नहीं किया जा सका." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, fuzzy, kde-format +#| msgid "Cannot Autocrop" +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "स्वचालित कांट-छांट नहीं कर सका" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "छवि ऐसे सेट करें" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "चयन: बनाएँ" + +#: kolourpaint.cpp:51 +#, fuzzy, kde-format +#| msgid "KolourPaint BETA" +msgid "KolourPaint" +msgstr "कलरपेंट बीटा" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "केडीई के लिए पेंट प्रोग्राम" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "क्लेरेंस डैंग" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "परियोजना संस्थापक" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "टर्स्टन डैंग" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "मुख्य अनुसन्धानकर्ता" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "मार्टिन कोलर" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "क्रिस्टॉफ बोरे" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "प्रतीक" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "इनपुटमेथड समर्थन" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "काजुकी ओथा" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "नुनो पिन्हेरो" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "डैनी एलन" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "माइक गैशलर" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "छवि प्रभाव" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "लारेंट मोंटेल" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "केडीई ४ में पोर्ट करना" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "केडीई ४ में पोर्ट करना" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "बहुत से अन्यों को भी धन्यवाद जिन्होंने इस प्रोग्राम को संभव बनाने में मदद की." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "छवि फ़ाइल जिसे खोलना है" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "देखें (&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "छवि (&I)" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "रंग (&C)" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "मुख्य औज़ार पट्टी" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "पाठ औजार-पट्टी" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "चयन औजार आरएमबी मेन्यू" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "संपादन (&E)" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +#| msgid "Thumbnail" +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "लघु छवि" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "छवि को नया आकार देने के लिए बायाँ माउस बटन से खींचें." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "छवि को नया आकार दें: सभी माउस बटनों को जाने दें." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "छवि को नया आकार दें: रद्द करने के लिए दायाँ क्लिक करें" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "पाठ" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "रंग पैलेट \"%1\" खोला नहीं जा सका." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"रंग पैलेट \"%1\" को खोल नहीं सकता - असमर्थित फ़ॉर्मेट.\n" +"फ़ाइल खराब हो सकता है." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "केडीई रंग पैलेट \"%1\" को खोल नहीं सकता." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "रंग पैलेट \"%1\" को सहेज नहीं सकता." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "बिना शीर्षक" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "कलरपेंट डिफ़ॉल्ट इस्तेमाल करें" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, fuzzy, kde-format +#| msgid "Use KDE's" +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "केडीई का इस्तेमाल करें" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, fuzzy, kde-format +#| msgid "&Open..." +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "खोलें... (&O)" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, fuzzy, kde-format +#| msgid "Reloa&d" +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "फिर से लोड करें (&d)" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, fuzzy, kde-format +#| msgid "&Save" +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "सहेजें (&S)" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, fuzzy, kde-format +#| msgid "Save &As..." +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "ऐसे सहेजें (&A)" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, fuzzy, kde-format +#| msgid "Add Row" +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "पंक्ति जोड़ें" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, fuzzy, kde-format +#| msgid "Delete Last Row" +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "पिछली पंक्ति मिटाएँ" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "रंग बक्सा" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"रंग पैलेट \"%1\" परिवर्धित किया गया है.\n" +" क्या आप इसे सहेजना चाहते हैं?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"केडीई रंग पैलेट \"%1\" परिवर्धित किया गया.\n" +"क्या आप इसे किसी फ़ाइल में सहेजना चाहते हैं?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"डिफ़ॉल्ट रंग पैलेट परिवर्धित किया गया है.\n" +"क्या आप इसे किसी फ़ाइल में सहेजना चाहते हैं?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, fuzzy, kde-format +#| msgid "Open Color Palette" +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "रंग पैलेट खोलें" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "फिर से लोड करें (&R)" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"केडीई रंग पैलेट \"%1\" परिवर्धित किया गया है.\n" +"इसको फिर से लोड करने पर पिछली दफा सहेजे जाने के बाद के सभी परिवर्तन गुम हो जाएंगे.\n" +"क्या आप सुनिश्चित हैं?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"डिफ़ॉल्ट रंग पैलेट परिवर्धित किया गया है.\n" +"इसको फिर से लोड करने पर पिछली दफा सहेजे जाने के बाद के सभी परिवर्तन गुम हो जाएंगे.\n" +"क्या आप सुनिश्चित हैं?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "रंग पैलेट को इस रूप में सहेजें" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "नए विंडो में चिपकाएँ (&N)" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "चयन मिटाएँ (&D)" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "फ़ाइलें में नक़ल करें... (&o)" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "फ़ाइल में से चिपकाएँ... (&F)" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "पाठ: बक्सा बनाएँ " + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "पाठ: चिपकाएँ" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "चिपका नहीं सका" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "पाठ: बक्सा मिटाएँ" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "चयन: मिटाएँ" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "पाठ: सम्पन्न" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "चयन: अचयनित करें" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, fuzzy, kde-format +#| msgid "Copy to File" +msgctxt "@title:window" +msgid "Copy to File" +msgstr "फ़ाइल में नक़ल करें" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, fuzzy, kde-format +#| msgid "Paste From File" +msgctxt "@title:window" +msgid "Paste From File" +msgstr "फ़ाइल में से चिपकाएँ" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "निर्यात... (&x)" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "स्कैन..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, fuzzy, kde-format +#| msgid "Acquiring Screenshots" +msgid "Acquire Screenshot" +msgstr "स्क्रीनशॉट लाया जा रहा है" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, fuzzy, kde-format +#| msgid "Document Properties" +msgid "Properties" +msgstr "दस्तावेज़ गुण" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "फिर से लोड करें (&d)" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +#| msgid "Open Image" +msgctxt "@title:window" +msgid "Open Image" +msgstr "छवि खोलें" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, fuzzy, kde-format +#| msgid "Paste in &New Window" +msgid "Hide Main Window" +msgstr "नए विंडो में चिपकाएँ (&N)" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "दस्तावेज़ गुण" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Save Image As" +msgstr "छवि ऐसे सहेजें" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, fuzzy, kde-format +#| msgid "Export" +msgctxt "@title:window" +msgid "Export" +msgstr "निर्यात" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"दस्तावेज़ \"%1\" परिवर्धित किया गया है.\n" +"इसको फिर से लोड करने पर पिछली दफा सहेजे जाने के बाद के सभी परिवर्तन गुम हो जाएंगे.\n" +"क्या आप सुनिश्चित हैं?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"दस्तावेज़ \"%1\" को परिवर्धित किया गया है.\n" +"फिर से लोड करने पर सभी परिवर्तन मिट जाएंगे.\n" +"क्या आप सुनिश्चित हैं?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Print Image" +msgstr "सम्पूर्ण छवि" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"भेजने से पहले आपको छवि को सहेजना होगा.\n" +"क्या आप इसे सहेजना चाहते हैं?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"दस्तावेज़ \"%1\" परिवर्तित किया गया है.\n" +"क्या आप इसे सहेजना चाहेंगे?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "आकार बदलें / स्केल करें... (&e)" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "छवि को ऐसे सेट करें (कांट-छांट) (&t)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, fuzzy, kde-format +#| msgid "&Vertical (upside-down)" +msgid "&Flip (upside down)" +msgstr "खड़ा (ऊपर का नीचे) (&V)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, fuzzy, kde-format +#| msgid "Flip horizontally" +msgid "Mirror (horizontally)" +msgstr "आड़ा पलटें" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "घुमाएँ... (&R)" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "बाएँ घुमाएँ (&L)" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "दायाँ घुमाएँ (&t)" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "मोड़ें...(&k)" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "मोनोक्रोम में कम करें (डिथर्ड) (&n)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "श्वेत-श्याम में कम करें (&G)" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "रंग उलटें (&I)" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "साफ करें (&l)" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "अधिक प्रभाव... (&M)" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "छवि (&I)" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "चयन (&i)" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "पथ दिखाएँ (&P)" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 बीपीपी" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "फ़ॉन्ट परिवार" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "फ़ॉन्ट आकार" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "गाढ़ा" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "ईटैलिक" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "रेखांकित" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "लिखकर काटें" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "पिछला औजार विकल्प (समूह #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "अगला औज़ार विकल्प (समूह #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "पिछला औज़ार विकल्प (समूह #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "अगला औज़ार विकल्प (समूह #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "अपारदर्शी बनाएँ (&D)" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "रंग एकरूपता के साथ बनाएँ..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "औजार बक्सा" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "ग्रिड दिखाएँ (&G)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "लघु-छवि दिखाएँ (&h)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "लघुछवि मोड में जूम करें (&m)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "लघुछवि चतुर्भुज सक्षम करें (&R)" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "ज़ूम (&Z)" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "सम्पूर्ण छवि" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "ब्रुश" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "भिन्न भिन्न रूप तथा आकार के ब्रश का इस्तेमाल कर ड्रा करें" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "बिन्दु ड्रा करने के लिए क्लिक करें या स्ट्रोक्स ड्रा करने के लिए खींचें." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "रंग मिटाने का रबर" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "अग्रभूमि रंग पिक्सेल्स को पृष्ठभूमि रंग से बदलता है" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "पिक्सेल के अग्रभूमि रंग मिटाने के लिए क्लिक करें या खींचें." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "मिटाने का रबर" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "आपकी ग़लतियों को मिटाने देता है" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "मिटाने के लिए क्लिक करें या खींचें." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "सभी माउस बटनों को जाने दें." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "पेन" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "बिंदु तथा फ्रीहैण्ड स्ट्रोक्स ड्रा करता है" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "स्प्रे-कैन" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "ग्राफिती स्प्रे करता है" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "ग्राफिती स्प्रे करने के लिए क्लिक करें या खींचें." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "रद्द करने के लिए दायाँ क्लिक करें." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "रद्द करने के लिए बायाँ क्लिक करें." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "यह आपको छवि में से रंग चुनने देता है" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "रंग चुनने हेतु क्लिक करें." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "छवि में क्षेत्रों को भरता है" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "क्षेत्र में भरने के लिए क्लिक करें." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "ज़ूम" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "छवि में जूम इन और जूम आउट हों" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"जूम इन या आउट करने के लिए क्लिक करें या विशिष्ट क्षेत्र में जूम करने के लिए बायाँ क्लिक कर " +"खींचें." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "वक्र" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "कर्व्स बनाएँ" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "प्रारंभ तथा अंत बिन्दुओं को ड्रैग आउट करें." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "पहला कंट्रोल पाइंट सेट करने के लिए बायाँ खींचें या समापन के लिए दायाँ क्लिक करें." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "पहला कंट्रोल पाइंट सेट करने के लिए दायाँ खींचें या समापन के लिए बायाँ क्लिक करें." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "अंतिम कंट्रोल पाइंट सेट करने के लिए बायाँ खींचें या समापन के लिए दायाँ क्लिक करें." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "अंतिम कंट्रोल पाइंट सेट करने के लिए दायाँ खींचें या समापन के लिए बायाँ क्लिक करें." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "पंक्ति" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "लकीरें खींचता है" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "ड्रा करने के लिए खींचें." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "बहुभुज" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "बहुभुज बनाता है" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "पहली लकीर ड्रा करने के लिए खीचें." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"एक अन्य लकीर खींचने के लिए बायाँ माउस बटने से खींचें या सम्पन्न करने के लिए दायाँ क्लिक करें." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"एक अन्य लकीर खींचने के लिए दायाँ माउस बटने से खींचें या सम्पन्न करने के लिए बायाँ क्लिक करें." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "जुड़ी हुई लकीरें" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "जुड़ी हुई लकीरें ड्रा करता है" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "दीर्घवृत्त" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "दीर्घवृत्त तथा वृत्तों को बनाएँ" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "चतुर्भुज" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "आयतों तथा वर्गों को ड्रा करता है" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "राउण्डेड चतुर्भुज" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "गोल किनारा युक्त चतुर्भुज तथा वर्ग बनाता है" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "चयन बनाने के लिए बायाँ माउस बटन से खींचें." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "चयन को खिसकाने के लिए बायाँ माउस बटन से खींचें." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "चयन को नया आकार देने के लिए बायाँ माउस बटन से खींचें." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "चयन: अपारदर्शी" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "चयन: पारदर्शी" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "चयन: पारदर्शी रंग" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "चयन: पारदर्शी रंग एकरूपता" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "चयन (दीर्घवृत्तीय)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "दीर्घ वृत्त या वृत्त चयन बनाता है" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "चयन (फ्री फ्रॉम)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "फ्री फ्रॉम चयन बनाता है" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "चयन (चतुर्भुज)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "चतुर्भुज चयन बनाता है" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "चयन: खिसकाएँ" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: लेप" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "पाठ लिखता है" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "पाठ: बैकस्पेस" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "पाठ: मिटाएँ" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "पाठ: नई पंक्ति" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "पाठ: लिखें" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "पाठ बक्सा बनाने के लिए बायाँ माउस बटन से खींचें." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "पाठ बक्सा को खिसकाने के लिए बायाँ माउस बटन से खींचें." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "पाठ: बक्सा खिसकाएँ" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "पाठ बक्सा को नया आकार देने के लिए बायाँ माउस बटन से खींचें." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "माउस संकेतक स्थिति में बदलाव के लिए बायाँ क्लिक करें." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "पाठ: अपारदर्शी पृष्ठभूमि" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "पाठ: पारदर्शी पृष्ठभूमि" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "पाठ: रंग अदल-बदल करें" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "पाठ: अग्रभूमि रंग" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "पाठ: पृष्ठभूमि रंग" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "पाठ: फ़ॉन्ट" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "पाठ: फ़ॉन्ट आकार" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "पाठ: गाढ़ा" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "पाठ: तिरछा" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "पाठ: रेखांकित" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "पाठ: लिखकर काटा हुआ" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "अनजूम्ड मोड - लघुछवि" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - लघु छवि" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            रंग एकरूपता: %1%

            कॉन्फ़िगर करने के लिए क्लिक करें.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            रंग एकरूपता: सटीक जोड़

            कॉन्फ़िगर करने के लिए क्लिक करें.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "चमकीलापनः (&B)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "रीसेट करें (&s)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "कंट्रास्ट: (&n)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "गामा: (&G)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "रीसेट करें (&t)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "चैनल्स: (&h)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "सभी" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "लाल" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "हरा" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "नीला" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "सभी मूल्यों को रीसेट करें (&A)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "विन्यास" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "मात्राः (&A)" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "सक्षम करें (&n)" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "रंग" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "वर्ण: (&H)" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "संतृप्तिः (&S)" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, fuzzy, kde-format +#| msgid "&Value:" +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "मान: (&V)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "लाल (&R)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "हरा (&G)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "नीला (&B)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "सभी (&A)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "चैनल्स" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "मोनोक्रोम (&M)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "मोनोक्रोम (डिथर्ड) (&n)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 रंग (&l)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 रंग (डिथर्ड) (&r)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-बिट रंग (&b)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "में कम करें" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "ग्रेन्यूलेरिटी: (&G)" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "में बदलें: (&t)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "गुण: (&t)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "पूर्वावलोकन (&P)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "एकवर्ण" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "मोनोक्रोम (डिथर्ड)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 रंग" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 रंग (डिथर्ड)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-बिट रंग" + +#: widgets/kpPrintDialogPage.cpp:58 +#, fuzzy, kde-format +#| msgid "Ima&ge Position" +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "छवि स्थिति (&g)" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "पृष्ठ पर केंद्र में (&C)" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "पृष्ठ पर शीर्ष बाएँ में (&l)" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "पारदर्शी" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "कलरपेंट डिफ़ॉल्ट्स" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "रंग: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "रंग: %1 [परिवर्धित]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "वृत्त" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "वर्ग" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "स्लैश" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "बैकस्लैश" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "भरें नहीं" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "पृष्ठभूमि रंग से भरें" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "अग्रभूमि रंग से भरें" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "अपारदर्शी" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "इस नाम \"%1\" का दस्तावेज़ पहले से ही मौजूद है. \n" +#~ "क्या आप इसके ऊपर लिखना चाहते हैं?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" नाम रंग पैलेट पहले से ही मौजूद है. \n" +#~ "क्या आप इसके ऊपर लिखना चाहते हैं?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "ज़ूम स्तर को %1% पर सेट करें" + +#~ msgid "None" +#~ msgstr "कुछ नहीं" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            छवि को %1x%2 नया आकार देने पर इसे बहुत से तंत्र मेमोरी की आवश्यकता होगी. " +#~ "यह सिस्टम के रिस्पांसिवनेस को कम कर सकता है तथा अन्य अनुप्रयोग रिसोर्सों में समस्याएँ " +#~ "पैदा कर सकता है.

            क्या आप सुनिश्चित हैं कि आप छवि को नया आकार देना चाहते हैं?" + +#~ msgid "Overwrite" +#~ msgstr "मिटाकर लिखें" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr " \"%1\" को खोल नहीं सका - अज्ञात माइम क़िस्म." + +#~ msgid "Save Preview" +#~ msgstr "पूर्वावलोकन सहेजें" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "समर्थन प्राप्त करने के लिए कृपया जालस्थल पर जाएँ." + +#~ msgid "No Scanning Support" +#~ msgstr "कोई स्कैनिंग समर्थन नहीं" + +#~ msgid "Scanning support is not installed." +#~ msgstr "स्कैनिंग समर्थन संस्थापित नहीं है. " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "स्क्रीनशॉट लाया जा रहा है (&S)" + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "वालपेपर (केंद्रित) के रूप में सेट करें (&l)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "वालपेपर (टाइल्ड) के रूप में सेट करें (&T)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "छवि को वालपेपर के रूप में सेट करने से पहले आपको इसे स्थानीय फ़ाइल के रूप में सहेजना होगा.\n" +#~ "क्या आप इसे सहेजना चाहेंगे?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "छवि को वालपेपर के रूप में सहेजने से पहले इसे आपको सहेजना होगा.\n" +#~ "क्या आप इसे सहेजना चाहते हैं?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "वालपेपर बदल नहीं सकता" + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "चयन पलटें" + +#~ msgid "Flip Image" +#~ msgstr "छवि पलटें" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "खड़ा (ऊपर का नीचे) (&V)" + +#~ msgid "&Horizontal" +#~ msgstr "आड़ा (&H)" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "रंग तथा ट्रासल्यूसेंसी जानकारी की कमी" + +#~ msgid "Loss of Color Information" +#~ msgstr "रंग जानकारी की कमी" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "ट्रांसल्यूसेंसी जानकारी की कमी" + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "असमर्थित स्क्रीन मोड" + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "स्कैन नहीं किया जा सका - ग्राफ़िक मेमोरी कम है." + +#~ msgid "Cannot Scan" +#~ msgstr "स्केन नहीं किया जा सकता" + +#~ msgid "&Flip..." +#~ msgstr "पलटें... (&F)" + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "\"%1\" को खोल नहीं सका - ग्राफ़िक मेमोरी से बाहर." + +#~ msgid "Scanning Support" +#~ msgstr "स्कैनिंग समर्थन" + +#~ msgid "Selection: Transparency" +#~ msgstr "चयन: पारदर्शिता" diff --git a/po/hr/kolourpaint.po b/po/hr/kolourpaint.po new file mode 100644 index 0000000..4645141 --- /dev/null +++ b/po/hr/kolourpaint.po @@ -0,0 +1,2573 @@ +# Translation of kolourpaint to Croatian +# +# Zarko Pintar , 2009. +# Andrej Dundovic , 2010. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2010-04-16 11:33+0200\n" +"Last-Translator: Andrej Dundovic \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.0\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Očisti" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Odabrano: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Promjena veličine" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Zakretanje" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "" +msgstr[1] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Vodoravno:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "Resize" +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Promjena veličine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Zakreći sliku" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Zakreći sliku" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Zakreći odabrano" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Zakreći sliku" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Zakreći odabrano" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Zakreći odabrano" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Zakreći sliku" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Nakon zakretanja:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Kut" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &stupnjeva" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 s&tupnjeva" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 st&upnjeva" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "stupnjevi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Zakreći odabrano" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Zakreći sliku" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Zakreći odabrano" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Zakreći sliku" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Zakreći odabrano" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Zakreći sliku" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "" +msgstr[1] "" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Otvori…" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +#| msgid "Print Image" +msgctxt "@title:window" +msgid "Open Image" +msgstr "Ispiši sliku" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Zakreći sliku" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, fuzzy, kde-format +#| msgid "Print Image" +msgctxt "@title:window" +msgid "Print Image" +msgstr "Ispiši sliku" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Zakreći…" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Zaokreni u&lijevo" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Zaokreni u&desno" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zumiraj" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Zakreći sliku" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "" + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zum" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linija" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Osvjetljenje:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Sve" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Crvena" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Zelena" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Plava" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Jednobojno" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitne boje" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Krug" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Ne ispunjuj" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "" diff --git a/po/hu/kolourpaint.po b/po/hu/kolourpaint.po new file mode 100644 index 0000000..5853642 --- /dev/null +++ b/po/hu/kolourpaint.po @@ -0,0 +1,3031 @@ +# Kristóf Kiszel , 2010, 2011, 2012. +# Balázs Úr , 2012. +msgid "" +msgstr "" +"Project-Id-Version: KDE 4.3\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2012-08-21 09:05+0200\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Szántó Tamás" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "tszanto@interware.hu" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Egyensúly" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Lágyabbá" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Élesebbé" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Törlés" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Kijelölés: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Kidomborítás" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Lapítás" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Redukálás szürkeárny&alatokra" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Árnyalat, telítettség, érték" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "A színek invertálása" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertálás" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Redukálás fekete-fehérre (színcsökkentéssel)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Redukálás fekete-fehérre" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Redukálás 256 színre (színcsökkentéssel)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Redukálás 256 színre" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Hisztogramkezelő" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Tükrözés" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Függőleges és vízszintes tükrözés" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Vízszintes tükrözés" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Függőleges tükrözés" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Szöveg: doboz átméretezése" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Kijelölés: nyújtás" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Kijelölés: sima nyújtás" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Átméretezés" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Nyújtás" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Sima nyújtás" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Forgatás" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Döntés" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Visszavonás: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Visszavonás" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "Újr&a végrehajtás: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Újra végrehajtás" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Visszavonás: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Visszavonás" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Újra végrehajtás: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Újra végrehajtás" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "további %1 elem" +msgstr[1] "további %1 elem" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Színválasztó" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Kitöltés" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "További képeffektusok (választás)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "További képeffektusok" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "E&ffektus:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "A színek redukálása" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Lágyabbá vagy élesebbé tétel" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumentumjellemzők" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "D&PI (képpont/hüvelyk)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nincs megadva" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Vízszintes:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Függőleges:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            A képpont/hüvelykA (DPI) érték azt adja meg, hány képpont " +"jusson egy hüvelyknyi (2,54cm) hosszra.

            Nagyobb DPI esetén a " +"kinyomtatott kép kisebb lesz. Egyes nyomtatóknál nem lesz jó minőségű a kép, " +"ha a DPI nagyobb 300-nál vagy 600-nál.

            Ha pont akkorában szeretné " +"kinyomtatni a képet, ahogy az a képernyőn látszik, állítsa be nyomtatáshoz a " +"képernyő DPI értékét.

            Ha valamelyik DPI érték Nincs megadva, " +"akkor a kinyomtatott kép mérete azonos lesz a képernyőn látható mérettel.

            Nem minden képformátum támogatja a DPI értékeket. Ha egy képformátum " +"nem teszi lehetővé a DPI érték elmentését, akkor azt a program nem tárolja " +"el sehová.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "E<olás" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Az eltolás a többi képhez viszonyított relatív pozíció.

            Ha egy képformátum nem teszi lehetővé az eltolás elmentését, akkor azt " +"a program nem fogja eltárolni sehová.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Szö&vegmezők" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Ú&j sor" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Sor&törlés" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Alapállapotba" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            A szövegmezők adatokat tartalmaznak a képről. Általában " +"tetszőleges szöveg megadható.

            Előfordulhat, hogy egy mezőtípus kötött " +"formátumú adatokat tartalmaz, melyeket a kezelőprogramnak kell feldolgoznia, " +"de ez igen ritka.

            Ha egy képformátum nem teszi lehetővé szövegmezők " +"elmentését, akkor a program nem tárolja el azokat sehová.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Kulcs" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Érték" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Kulcs szükséges - szöveges érték: \"%1\", sor: %2." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Minden szöveges kulcsnak egyedinek kell lennie, de a(z) \"%1\" kulcs két " +"sorban is szerepel: %2 és %3." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Érvénytelen szövegmezők" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Méretek" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Eredeti:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Előnézet" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Frissítés" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Átméretezés/nyújtás" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Al&kalmazás erre:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Az egész kép" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Kijelölés" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Szövegdoboz" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Művelet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Átméretezés: a kép területe növekedni fog a jobbról vagy " +"lentről hozzáadott területek miatt (a háttérszínnel lesz kitöltve), vagy " +"csökkenni fog a levágott részek miatt.
            • Nyújtás: a kép " +"területe egyenletesen nőni vagy csökkenni fog képpontok duplikálásával ill. " +"eltávolításával.
            • Sima nagyítás: ugyanaz, mint a Nagyítás, de a szomszédos képpontok kombinálásával simább, egyenletesebb kép lesz " +"az eredmény.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Átméretezés" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "Nyúj&tás" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Sima nyú&jtás" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Szélesség:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Magasság:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "Ú&j:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "Szá&zalék:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Az &oldalarány megtartása" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Ha átméretezi a szövegdobozt %1x%2 méretűre, a művelet igen sok " +"memóriát igényelhet. Ennek hatására a válaszidő lecsökkenhet, az " +"alkalmazásokban erőforrásproblémák léphetnek fel.

            Biztosan át szeretné " +"méretezni a szövegdobozt?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "A szövegdoboz átméretezése?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "A szövegdoboz átmé&retezése" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Ha átméretezi a képet %1x%2 méretűre, a művelet igen sok memóriát " +"igényelhet. Ennek hatására a válaszidő lecsökkenhet, az alkalmazásokban " +"erőforrásproblémák léphetnek fel.

            Biztosan át szeretné méretezni a " +"képet?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "A kép átméretezése?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "A kép átmérete&zése" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Ha a képet %1x%2 méretűre nyújtja, a művelet igen sok memóriát " +"igényelhet. Ennek hatására a válaszidő lecsökkenhet, az alkalmazásokban " +"erőforrásproblémák léphetnek fel.

            Biztosan meg szeretné nyújtani a " +"képet?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "A kép nyújtása?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "A kép nyúj&tása" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Ha a kijelölt részt %1x%2 méretűre nyújtja, a művelet igen sok " +"memóriát igényelhet. Ennek hatására a válaszidő lecsökkenhet, az " +"alkalmazásokban erőforrásproblémák léphetnek fel.

            Biztosan meg " +"szeretné nyújtani a kijelölt részt?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "A kijelölt rész nyújtása?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "A k&ijelölt rész nyújtása" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Ha a képet %1x%2 méretűre nyújtja simán, a művelet igen sok memóriát " +"igényelhet. Ennek hatására a válaszidő lecsökkenhet, az alkalmazásokban " +"erőforrásproblémák léphetnek fel.

            Biztosan meg szeretné nyújtani simán " +"a képet?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Sima nyújtás?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "A kép &sima nyújtása" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Ha a kijelölt részt %1x%2 méretűre nyújtja simán, a művelet igen sok " +"memóriát igényelhet. Ennek hatására a válaszidő lecsökkenhet, az " +"alkalmazásokban erőforrásproblémák léphetnek fel.

            Biztosan meg " +"szeretné nyújtani simán a kijelölt részt?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "A kijelölt rész sima nyújtása?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "A kijelölt rés&z sima nyújtása" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "A kijelölt rész elforgatása" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "A kép elforgatása" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Elforgatás után:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Irány" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Balra" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Jobbra" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Szög" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "&90 fokkal" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "&180 fokkal" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "&270 fokkal" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "E&gyéni:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "fok" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the selection?

            " +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Ha a kijelölt részt elforgatja (%1x%2), a művelet igen sok memóriát " +"igényelhet. Ennek hatására a válaszidő lecsökkenhet, az alkalmazásokban " +"erőforrásproblémák léphetnek fel.

            Biztosan el szeretné forgatni a " +"kijelölt részt?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "A kijelölt rész elforgatása?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "A kijelölt rész el&forgatása" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the image?

            " +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Ha a képet elforgatja (%1x%2), a művelet igen sok memóriát " +"igényelhet. Ennek hatására a válaszidő lecsökkenhet, az alkalmazásokban " +"erőforrásproblémák léphetnek fel.

            Biztosan el szeretné forgatni a " +"képet?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "A kép elforgatása?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "A kép elf&orgatása" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "A kijelölt rész döntése" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "A kép döntése" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Döntés után:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Vízszintes:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Függőleges:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the selection?

            " +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Ha a kijelölt részt megdönti (%1x%2), a művelet igen sok memóriát " +"igényelhet. Ennek hatására a válaszidő lecsökkenhet, az alkalmazásokban " +"erőforrásproblémák léphetnek fel.

            Biztosan meg szeretné dönteni a " +"kijelölt részt?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "A kijelölt rész döntése?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "A kijelölt rész &döntése" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the image?

            " +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Ha a képet megdönti (%1x%2), a művelet igen sok memóriát igényelhet. " +"Ennek hatására a válaszidő lecsökkenhet, az alkalmazásokban " +"erőforrásproblémák léphetnek fel.

            Biztosan meg szeretné dönteni a " +"képet?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "A kép döntése?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "A ké&p döntése" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Színhasonlóság" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB színkockatávolság" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Pontos egyezés" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Mi a színhasonlóság?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Az előnézet mentése" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 bájt (kb. %2%)" +msgstr[1] "%1 bájt (kb. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Nem sikerült megnyitni ezt a fájlt: \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"CNem sikerült megnyitni ezt a fájlt: \"%1\". Ez a képformátum nem " +"támogatott.\n" +"Lehet, hogy a fájl megsérült." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "A képet nem sikerült elmenteni. Nincs elég információ." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"MIME-típus: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<üres>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Belső hiba" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Lehet, hogy a(z) %1 formátumban nem maradnak meg " +"maradéktalanul a kép színjellemzői.

            Biztosan ebben a formátumban " +"szeretne menteni?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Veszteséges fájlformátum" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Ha a képet alacsony színmélységgel (%1 bit/képpont) menti el, a " +"színadatok egy része elveszhet. Az átlátszósági adatok is elveszhetnek.

            Biztosan ezzel a színmélységgel szeretne menteni?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Alacsony színmélység" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"A képet nem sikerült elmenteni, mert nem sikerült ideiglenes fájlt " +"létrehozni." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "A képet nem sikerült \"%1\" néven elmenteni." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "A képet nem sikerült elmenteni, mert a feltöltés nem sikerült." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "A belső szegély eltá&volítása" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "A belső szegély eltávolítása" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "A&utomatikus levágás" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automatikus levágás" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"A KolourPaint nem tudja eltávolítani a kijelölt rész belső szegélyét, mert " +"az nem található." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Nem sikerült eltávolítani a belső szegélyt" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"A KolourPaint nem tudja automatikusan levágni a képet, mert annak szegélye " +"nem található." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Automatikus levágás nem lehetséges" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Beállítás képnek" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Kijelölés: létrehozás" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "KDE-alapú rajzolóprogram" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projektalapító" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Fő ellenőrző" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Szkennelési és alfa támogatás, jelenlegi karbantartó" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikonok" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "InputMethod-támogatás" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Képeffektusok" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Átirat KDE4-re" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "Átirat KDE4-re" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Köszönetet szeretnék mondani mindenkinek, akik segítettek, hogy ez a program " +"létrejöjjön." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "A megnyitandó képfájl" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "Né&zet" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "Ké&p" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Színek" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Alap eszköztár" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Szöveges eszköztár" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Kijelölő eszköz - felbukkanó menü" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "S&zerkesztés" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Gyorsnézet" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "A kép átméretezéséhez mozgassa el a fogantyút." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Kép átméretezése: eleresztés bármelyik egérgombbal." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Kép átméretezése: megszakítás a jobb egérgombbal." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Szöveg" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Nem sikerült megnyitni ezt a színpalettát: \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Nem sikerült megnyitni ezt a színpalettát: \"%1\". Ez a formátum nem " +"támogatott.\n" +"Lehet, hogy a fájl megsérült." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Nem sikerült megnyitni ezt a KDE-s színpalettát: \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "A színpalettát nem sikerült \"%1\" néven elmenteni." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Névtelen" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Visszaállítás az alapértelmezett értékekre" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE-alapértékek" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "Me&gnyitás…" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Újr&atöltés" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "Men&tés" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Mentés más&ként..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Új sor" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Az utolsó sor törlése" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Színdoboz" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"A(z) \"%1\" nevű színpaletta megváltozott.\n" +"El szeretné menteni?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"A(z) \"%1\" nevű KDE-s színpaletta megváltozott.\n" +"El szeretné menteni fájlba?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Az alapértelmezett színpaletta megváltozott.\n" +"El szeretné menteni fájlba?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Színpaletta megnyitása" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"A(z) \"%1\" nevű színpaletta megváltozott.\n" +"Újratöltése esetén a friss módosítások elvesznek.\n" +"Biztosan ezt szeretné?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Újratöltés" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"A(z) \"%1\" nevű KDE-s színpaletta megváltozott.\n" +"Újratöltése esetén a friss módosítások elvesznek.\n" +"Biztosan ezt szeretné?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Az alapértelmezett színpaletta megváltozott.\n" +"Újratöltése esetén a friss módosítások elvesznek.\n" +"Biztosan ezt szeretné?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "A színpaletta mentése mint" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Beillesztés ú&j ablakban" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "A k&ijelölt rész törlése" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "Más&olás fájlba..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Bei&llesztés fájlból..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Szöveg: doboz létrehozása" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Szöveg: beillesztés" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"A KolourPaint nem tudja beilleszteni a vágólap tartalmát, mivel az " +"ismeretlen formátumú." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Nem lehet beilleszteni" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Szöveg: doboz törlése" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Kijelölés: törlés" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Szöveg: befejezés" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Kijelölés: a kijelölés megszüntetése" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Másolás fájlba" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Beillesztés fájlból" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportálás..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Lapolvasás..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Képernyőfelvétel készítése" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Tulajdonságok" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Újr&atöltés" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Képfájl megnyitása" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Késleltetés" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " másodperrc" +msgstr[1] " másodperc" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Nincs késleltetés" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Főablak elrejtése" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumentumjellemzők" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "A kép mentése másként" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportálás" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"A(z) \"%1\" nevű dokumentum megváltozott.\n" +"Újratöltése esetén az utolsó mentés óta végrehajtott módosítások elvesznek.\n" +"Biztosan ezt szeretné?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"A(z) \"%1\" dokumentum megváltozott.\n" +"Újratöltése esetén az utolsó mentés óta végrehajtott módosítások elvesznek.\n" +"Biztosan ezt szeretné?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Nyomtatás" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Elküldés előtt el kell menteni a képet.\n" +"El szeretné most menteni?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"A(z) \"%1\" nevű dokumentum megváltozott.\n" +"El szeretné menteni?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Á&tméretezés/nyújtás..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Beállítás &képként (levágás)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Függőleges (fejjel lefelé)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Vízszintes tükrözés" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "El&forgatás..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Forgatás &balra" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Forgatás &jobbra" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Döntés..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Redukálás fe&kete-fehérre (színcsökkentéssel)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Redukálás &szürkeárnyalatokra" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "A színek &invertálása" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Törlés" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&További effektusok..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "Ké&p" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Ki&jelölés" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Az &elérési út megjelenítése" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 bit/képpont" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Betűcsalád" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Betűméret" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Félkövér" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Dőlt" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Aláhúzott" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Áthúzott" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Előző eszközopció (1. csoport)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Következő eszközopció (1. csoport)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Előző eszközopció (2. csoport)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Következő eszközopció (2. csoport)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Nem áttetsző mó&d" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Rajzolás színhasonlósággal..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Eszközdoboz" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Rá&cs megjelenítése" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Gyorsnézeti képek me&gjelenítése" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "N&agyított gyorsnézeti mód" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Gyorsnézeti téglala&pok engedélyezése" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "N&agyítás" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Az egész kép" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Ecset" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Rajzolás többféle alakú és méretű ecsettel" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Kattintson ide pont vagy szaabadkézi rajz készítéséhez." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Színtörlő" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Az előtér színét használó képpontok színét a háttérszínre cseréli" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Kattintson ide vagy húzza ezt el előtérszínű képpontok törléséhez." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Radír" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "A nem kívánt részek eltüntetéséhez való" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Húzza ezt el törléshez (radírozáshoz)." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Eleresztés bármely egérgombbal." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Toll" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Pontok és szabadkézi rajz létrehozása" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Festékszóró" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Festék szórása" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Kattintson ide vagy húzza el festék szórásához." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "A művelet megszakításához kattintson a jobb egérgombbal." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "A művelet megszakításához kattintson a bal egérgombbal." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Színt lehet vele kiválasztani a képről" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Kattintson ide szín kiválasztásához." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Képterület kitöltése" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Kattintson ide terület kitöltéséhez." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Nagyítás" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "A kép kinagyítása/lekicsinyítése" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Nagyításhoz/kicsinyítéshez kattintson ide vagy húzza az egérmutatót egy " +"területre." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Görbe" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Görbe rajzolása" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Húzza ki a kezdő- és végpontot." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Húzzon a bal gombbal az első vezérlőpont elhelyezéséhez vagy kattintson a " +"jobb gombbal a befejezéshez." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Húzzon a jobb gombbal az első vezérlőpont elhelyezéséhez vagy kattintson a " +"bal gombbal a befejezéshez." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Húzzon a bal gombbal az utolsó vezérlőpont elhelyezéséhez vagy kattintson a " +"jobb gombbal a befejezéshez." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Húzzon a jobb gombbal az utolsó vezérlőpont elhelyezéséhez vagy kattintson a " +"bal gombbal a befejezéshez." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Vonal" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Vonalak rajzolása" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Húzza el ezt rajzoláshoz." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Sokszög" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Sokszögek rajzolása" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Húzza ezt el az első szakaszhoz." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Húzzon a bal gombbal még egy szakaszt vagy kattintson a jobb gombbal a " +"befejezéshez." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Húzzon a jobb gombbal még egy szakaszt vagy kattintson a bal gombbal a " +"befejezéshez." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Összekapcsolt szakaszok" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Összekapcsolt szakaszok rajzolása" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipszis" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Ellipszisek és körök rajzolása" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Téglalap" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Téglalapok és négyzetek rajzolása" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Kerekített téglalap" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Kerekített sarkú téglalapok és négyzetek rajzolása" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Bal húzás a kijelölés létrehozásához." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Bal húzás a kijelölt rész elmozgatásához." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Bal húzás a kijelölt rész nyújtásához." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Kijelölés: nem áttetsző" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Kijelölés: átlátszó" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Kijelölés: átlátszósági szín" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Kijelölés: átlátszósági színegyeztetés" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Kijelölés (elliptikus)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Ellipszis vagy kör alakú kijelölést hajt végre" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Kijelölés (szabad)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Szabadkézi kijelölést tesz lehetővé" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Kijelölt rész (téglalap alakú)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Téglalap alakú kijelölést hajt végre" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Kijelölés: mozgatás" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: elkenés" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Szöveg írása" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Szöveg: backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Szöveg: törlés" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Szöveg: új sor" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Szöveg: írás" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Bal húzás szöveges doboz létrehozásához." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Bal húzás a szöveges doboz elmozgatásához." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Szöveg: doboz mozgatása" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Bal húzás szöveges doboz átméretezéséhez." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Bal kattintás a kurzorpozíció megváltoztatásához." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Szöveg: nem áttetsző háttér" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Szöveg: átlátszó háttér" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Szöveg: színcsere" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Szöveg: előtérszín" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Szöveg: háttérszín" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Szöveg: betűtípus" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Szöveg: betűméret" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Szöveg: félkövér" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Szöveg: dőlt" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Szöveg: aláhúzott" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Szöveg: áthúzott" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Nagyítás nél&küli gyorsnézet" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Gyorsnézet" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            A színhasonlóság azt mutatja meg, mennyire közeli színűnek kell lennie két képpontnak, hogy a műveletek azonos színűként kezelje " +"őket.

            Ha beállított mód nem pontos egyezés, akkor könnyebb lesz " +"például nem egyenletes színű fényképekkel dolgozni, hasonlóan más programok " +"„varázspálca” funkciójához.

            A színhasonlóság a következőknél érvényes:" +"

            • Kijelölés: átlátszó módban a háttérszínhez " +"hasonló színű képpontok is átlátszóak lesznek.
            • Színkitöltés: a hasonló, de nem azonos színű pontok a " +"kitöltési értékkel arányosan növekedő valószínűséggel ki lesznek töltve.
            • Színradír: az előtérszínhez hasonló színű képpontok " +"színe ki lesz cserélve a háttérszínre.
            • Automatikus levágás és " +"A belső határok eltávolítása: a hasonló, de eltérő színű " +"képpontok a levágási tényezővel arányos módon növekvő valószínűséggel le " +"lesznek vágva.

            Nagyobb hasonlósági érték esetén több szín fog " +"hasonlónak számítani. Ezért ha úgy érzi, hogy a műveletek túl kevés " +"képpontot érintenek, növelje meg az értéket.

            És fordítva, ha a " +"műveletek már túl sok képpontot módosítanak (például a Színkitöltés " +"túl sok képpontot módosít), állítson be kisebb értéket.

            Az érték " +"beállításához kattintson a kockára.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            A színhasonlóság azt mutatja meg, mennyire közeli színűnek kell lennie két képpontnak, hogy a műveletek azonos színűként kezelje " +"őket.

            Ha beállított mód nem pontos egyezés, akkor könnyebb lesz " +"például nem egyenletes színű fényképekkel dolgozni, hasonlóan más programok " +"„varázspálca” funkciójához.

            A színhasonlóság a következőknél érvényes:" +"

            • Kijelölés: átlátszó módban a háttérszínhez " +"hasonló színű képpontok is átlátszóak lesznek.
            • Színkitöltés: a hasonló, de nem azonos színű pontok a " +"kitöltési értékkel arányosan növekedő valószínűséggel ki lesznek töltve.
            • Színradír: az előtérszínhez hasonló színű képpontok " +"színe ki lesz cserélve a háttérszínre.
            • Automatikus levágás és " +"A belső határok eltávolítása: a hasonló, de eltérő színű " +"képpontok a levágási tényezővel arányos módon növekvő valószínűséggel le " +"lesznek vágva.

            Nagyobb hasonlósági érték esetén több szín fog " +"hasonlónak számítani. Ezért ha úgy érzi, hogy a műveletek túl kevés " +"képpontot érintenek, növelje meg az értéket.

            És fordítva, ha a " +"műveletek már túl sok képpontot módosítanak (például a Színkitöltés " +"túl sok képpontot módosít), állítson be kisebb értéket.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "

            Színhasonlóság: %1%

            Beállítás

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "

            Színhasonlóság: pontos egyezés

            Beállítás

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Fényesség:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Alapállap&otba" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "&Kontraszt:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Ala&pállapotba" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Csatornák:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Mind" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Vörös" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Zöld" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Kék" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Az összes érték alapállapotba &hozása" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Beállítások" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "M&ennyiség:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Be&kapcsolás" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Színek" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Árnyalat:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Telítettség:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Érték:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Vörös" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Zöld" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Kék" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "Min°yik" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Csatornák" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Fekete-fehér" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Fekete-fe&hér (színcsökkentéssel)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "&256 szín" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 szín (s&zíncsökkentéssel)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24 b&ites szín" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Redukálás erre" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularitás:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            A rajzoláshoz használt szín kiválasztásához kattintson egy kitöltött " +"cellára. Ha a háttérszínt szeretné beállítani, a jobb gombbal kattintson.

            Ha a cella színét szeretné megvátoztatni, kattintson duplán a cellára.

            Húzással és ejtéssel felcserélheti két cella színét. Ha lenyomva tartja " +"a Ctrl billentyűt, a célcella színe felül lesz írva és a forráscella " +"változatlan marad.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Konvertálás &erre:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "M&inőség:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "E&lőnézet" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Fekete-fehér" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Fekete-fehér (színcsökkentéssel)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 szín" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 (színcsökkentéssel)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24 bites szín" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "&Képpozíció" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Középen" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Bal &felső sarok" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Átlátszó" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Alapértelmezett értékek" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Színek: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Színek: %1 [módosítva]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Kör" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Négyzet" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Per jel" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Backslash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Nincs kitöltés" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Kitöltés a háttérszínnel" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Kitöltés az előtérszínnel" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Nem áttetsző" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Már létezik \"%1\" nevű dokumentum.\n" +#~ "Felül szeretné írni?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Már létezik \"%1\" nevű színpaletta.\n" +#~ "Felül szeretné írni?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Ha a nagyítási szint nem 100% többszöröse, akkor a szerkesztés " +#~ "pontatlanná, az újrarajzolás pedig hibássá válhat.\n" +#~ "Biztosan ezt szeretné beállítani nagyítási szintnek: %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "A nagyítási szint beállítása erre: %1%" + +#~ msgid "None" +#~ msgstr "Egyik sem" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Ha átméretezi a képet %1x%2 méretűre, a művelet igen sok memóriát " +#~ "fog igényelni. Ennek hatására a válaszidő megnőhet, és különféle " +#~ "erőforrásproblémák léphetnek fel.

            Biztosan át szeretné méretezni a " +#~ "képet?

            " + +#~ msgid "Overwrite" +#~ msgstr "Felülírás" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "" +#~ "Nem siekrült megnyitni ezt a fájlt: \"%1\". A MIME-típus ismeretlen." + +#~ msgid "Save Preview" +#~ msgstr "Az előnézet mentése" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Ha támogatást szeretne kapni, látogasson el a weboldalra." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Nem található olyan bővítmény, amely a beolvasási párbeszédablakot " +#~ "szolgáltatná.\n" +#~ "Ez általában azt jelenti, hogy a ksaneplugint szolgáltató csomag nincs " +#~ "telepítve." + +#~ msgid "No Scanning Support" +#~ msgstr "Nincs képbeolvasási támogatás" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Nincs telepítve támogatás képbeolvasáshoz." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            A KolourPaint nem tudja beilleszteni a vágólapon található " +#~ "adatokat, mert azok váratlanul eltűntek.

            Ez általában akkor fordul " +#~ "elő, ha a vágólap adataiért felelős alkalmazás bezáródik.

            " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Képernyő&felvétel készítése" + +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            Képernyőfelvétel készítéséhez nyomja meg ezt: %1. Az elkészült " +#~ "kép a vágólapra kerül, ahonnan egyszerűen be lehet illeszteni a " +#~ "KolourPaint programba.

            Ha kívánja, átállíthatja a Felvétel " +#~ "készítése az asztalról billentyűparancsot a KDE Rendszerbeállítások " +#~ "Billentyűparancsok moduljában.

            Továbbá használhatja felvétel készítésére a KSnapshot programot is.

            " + +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            Úgy tűnik, hogy nem a KDE az aktív grafikus környezet.

            Ha a KDE " +#~ "be van töltve:

            Felvétel készítéséhez nyomja meg ezt: " +#~ "%1. A felvett kép a vágólapra kerül, ahonnan könnyen beilleszthető a " +#~ "KolourPaint programba.

            Továbbá használhatja felvétel " +#~ "készítésére a KSnapshot programot is.

            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Beállítás &háttérképnek (középre igazítva)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Beállítás háttérké&pnek (mozaikszerűen)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "A kép csak akkor állítható be háttérképnek, ha már el van mentve egy " +#~ "helyi fájlba.\n" +#~ "El szeretné most menteni?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "A kép csak akkor állítható be háttérképnek, ha már el van mentve.\n" +#~ "El szeretné menteni most?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "A háttérképet nem sikerült beállítani." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "A kijelölt rész tükrözése" + +#~ msgid "Flip Image" +#~ msgstr "Kép tükrözése" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Függőleges (fejjel lefelé)" + +#~ msgid "&Horizontal" +#~ msgstr "&Vízszintes" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Szín- és áttetszőségi jellemzők csökkenése" + +#~ msgid "Loss of Color Information" +#~ msgstr "Színjellemző-csökkenés" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Áttetszőségi jellemzők csökkenése" + +#~ msgid "" +#~ "

            KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

            To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

            " +#~ msgstr "" +#~ "

            A program nem támogatja ezt a színmélységet: %1bpp. Ennek ellenére " +#~ "a program el fog indulni, de előfordulhat, hogy instabillá válik.

            Ha lehetséges, kérjük váltson át 24bpp módba és indítsa újra a " +#~ "programot.

            " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Nem támogatott képernyőmód" + +#~ msgid "" +#~ "

            This effect does not support the current screen depth of %1bpp.

            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Ez az effektus nem támogatja a jelenlegi %1 bpp képernyőmódot.

            Ha lehetséges, váltson át 24 bpp-s képernyőmódra, és indítsa újra a " +#~ "programot.

            " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Nem sikerült beolvasni a képet, nincs elég grafikus memória." + +#~ msgid "Cannot Scan" +#~ msgstr "Nem lehet képet beolvasni" + +#~ msgid "&Flip..." +#~ msgstr "Tük&rözés..." + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            A beilleszteni kívánt kép több színt tartalmazhat, mint amennyi a " +#~ "jelenlegi képernyőmódban lehetséges. Megjelenítésekor néhány szín esetleg " +#~ "megváltozhat.

            Ha elmenti a képet, a színveszteség véglegessé " +#~ "válik.

            Próbálja meg a színmélységet legalább ennyire állítani: " +#~ "%1 bit/képpont, majd indítsa újra a programot.


            A kép " +#~ "áttetszőségi adatokat is tartalmaz, melyeket a program csak részben tud " +#~ "kezelni. Ezeket a program 1 bites átlátszósági maszkkal fogja " +#~ "helyettesíteni.

            Ha elmenti a képet, a színveszteség véglegessé " +#~ "válik.

            " + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            A beilleszteni kívánt kép több színt tartalmazhat, mint amennyi a " +#~ "jelenlegi képernyőmódban lehetséges. Megjelenítésekor néhány szín esetleg " +#~ "megváltozhat.

            Ha elmenti a képet, a színveszteség véglegessé " +#~ "válik.

            Próbálja meg a színmélységet legalább ennyire állítani: " +#~ "%1 bit/képpont, és indítsa újra a programot.

            " + +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            A beilleszteni kívánt kép áttetszőségi adatokat is tartalmaz, " +#~ "melyeket a program csak részben tud kezelni. Ezeket a program 1 bites " +#~ "átlátszósági maszkkal fogja helyettesíteni.

            Ha elmenti a képet, " +#~ "egyes áttetszőségi adatok véglegesen elveszhetnek.

            " + +#~ msgid "

            There is nothing in the clipboard to paste.

            " +#~ msgstr "

            Nincs beilleszthető adat a vágólapon.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            A(z) \"%1\" kép több színt tartalmazhat, mint amennyi a jelenlegi " +#~ "képernyőmódban lehetséges. Megjelenítésekor néhány szín esetleg " +#~ "megváltozhat.

            Ha elmenti a képet, a színveszteség véglegessé " +#~ "válik.

            Próbálja meg a színmélységet legalább ennyire állítani: " +#~ "%2 bit/képpont, majd indítsa újra a programot.


            A kép " +#~ "áttetszőségi adatokat is tartalmaz, melyeket a program csak részben tud " +#~ "kezelni. Ezeket a program 1 bites áttetszőségi maszkkal fogja " +#~ "helyettesíteni.

            Ha elmenti a képet, a színveszteség véglegessé " +#~ "válhat.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            A(z) \"%1\" kép több színt tartalmazhat, mint amennyi a jelenlegi " +#~ "képernyőmódban lehetséges. Megjelenítésekor néhány szín esetleg " +#~ "megváltozhat.

            Ha elmenti a képet, a színveszteség véglegesség " +#~ "válik.

            Próbálja meg a színmélységet legalább ennyire állítani: " +#~ "%2 bit/képpont, majd indítsa újra a programot.

            " + +#~ msgid "" +#~ "

            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            A(z) \"%1\" kép áttetszőségi adatokat is tartalmaz, melyeket a " +#~ "program csak részben tud kezelni. Ezeket a program 1 bites áttetszőségi " +#~ "maszkkal fogja helyettesíteni.

            Ha elmenti a képet, az " +#~ "áttetszőségi adatok egy része véglegesen elveszik.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "" +#~ "Nem sikerült megnyitni ezt a fájlt: \"%1\". Nincs elég grafikus memória." + +#~ msgid "Scanning Support" +#~ msgstr "Képbeolvasás támogatása" diff --git a/po/ia/kolourpaint.po b/po/ia/kolourpaint.po new file mode 100644 index 0000000..9155ac2 --- /dev/null +++ b/po/ia/kolourpaint.po @@ -0,0 +1,2803 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Giovanni Sora , 2013, 2016, 2017, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-08-04 23:26+0200\n" +"Last-Translator: giovanni \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.04.3\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Giovanni Sora" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "g.sora@tiscali.it" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balanciamento" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Molli" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Face plus acute" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Netta" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selection: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Grava in relievo" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Applatta" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduce a scala de gris" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Tinta, saturation, valor" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inverte colores" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverte" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduce a Monochrome(tremite)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduce a Monochrome" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduce a 256 Color (tremite)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduce a 256 color" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Equalisator de histogramma" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Colpa" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Il colpa horizontalmente e verticalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Colpa horizontalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Colpa verticalmente" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Texto: redimensiona quadro" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selection: Scala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Seletion: scala lisie" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Redimensiona" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Scala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Scala lisie" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rota" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Torte" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "Ann&ulla:%1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "Ann&ulla" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Reface: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Reface" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Annulla: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Annulla" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Reface: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Reface" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1ulterior elemento" +msgstr[1] "%1 ulterior elementos" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Selectionator de color" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Reimple con inundation" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Altere effectos de imagines (Selection)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Altere effectos de imagines" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effecto:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reduce colores" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Molli & Acutia" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Proprietates de documento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Punctos &per uncias (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Non specificate" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "x" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Punctos per uncia(DPI) specifica le numero de pixels del " +"imagine que deberea esser imprimite intra un uncia (2,54cm).

            Plus " +"grande es le DPI de image, plus parve es le imagine imprimite. Nota que il " +"es improibabile que tu imprimitor produca exitos de alte qualitate si tu " +"augmenta iste valor a plus que 300 o 600 DPI, dependente de tu imprimitor.

            Si tu volerea imprime imagine le mesme grandor que tu vide sur le " +"schermo, fixa le DPI al mesme valor del schermo.

            Si le valor de DPI es " +"Non Specificate, le imagine anque essera imprimite le mesme grandor " +"que on ha sur le schermo.

            Non omne formatos de images supporta valores " +"de DPI. Si le formato con le qual tu ha salveguardate le imagine non " +"supporta los, illos non essera salveguardate.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Displaciament&o" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Le Displaciamento es le position relative ubi le imagine " +"deberea esser placiate, comparate a altere imagines.

            Non omne formatos " +"de imagine supporta le characteristica de Displaciamento . Si le " +"formato con le qual tu salveguarda non supporta lo, le valores specificate " +"ci non essera salveguardate.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Campos de &testo" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Adde linea" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Dele linea" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Re-fixa" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Campos de texto forni information additional re le imagine. " +"Probabilemente isto es un area de commento ubi tu pote scriber liberemente " +"ulle texto.

            Totevia, isto es specific del formato, assi le campos " +"theoricamente poterea esser datos interpretate per le computator - que tu " +"non deberea modificar - ma isto es improbabile.

            Non omne formato de " +"imagine supporta Campos de texto . Si le formato con le qual tu " +"salveguarda non supporta los, illos non essera salveguardate.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Clave" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Le valor de texto \"%1\" in rango %2 require un clave." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Omne claves de texto debe esser unic. Le clave de texto \"%1\" sur rangos %2 " +"e %3 es identic." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Campos de texto invalide" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensiones" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Vista preliminar" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Act&ualisa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Redimensiona/Scala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "A&ge sur:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Imagine integre" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selection" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Quadro de texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "&Operation" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Redimensiona: Le grandor del imagine essera augmentate " +"per crear nove areas a dextera e/o a basso (reimplite con le color de fundo) " +"o diminuite per taliar lo a dextera e/o al basso.
            • Scala: Le " +"imagine essera expandite per duplicar pixels o applattite per lassar cader " +"pixels.
            • Scala lisie: Isto es le mesme que Scala " +"excepte que il misce pixels vicin pro producer un imagine semplante plus " +"lisie.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Redimensiona" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Scala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Scala &lisie" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Largessa:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Altessa:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nove :" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Percentage:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Mantene rata de &aspecto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Redimensionar le quadro de texto a %1x%2 poterea prender un " +"substantial amonta de memoria. Isto pote reducer le responsa de systema e " +"causar altere problemas re ressources de application.

            Tu es secur que " +"tu vole redimensionar le quadro de texto?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Redimensiona quadro de texto?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "R&edimensiona quadro de texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Redimensionar le imagine a %1x%2 poterea prender un substantial " +"amonta de memoria. Isto pote reducer le responsa de systema e causar altere " +"problemas re ressources de application.

            Tu es secur que tu vole " +"redimensionar le imagine?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Redimensiona image?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&edimensiona image" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Scalar le imagine a %1x%2 poterea prender un substantial amonta de " +"memoria. Isto pote reducer le responsa de systema e causar altere problemas " +"re ressources de application.

            Tu es secur que tu vole scalar le " +"imagine?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Scala imagine?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Scala imagin&e" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Scalar le selection a %1x%2 poterea prender un substantial amonta de " +"memoria. Isto pote reducer le responsa de systema e causar altere problemas " +"re ressources de application.

            Tu es secur que tu vole scalar le " +"selection?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Scala selection?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Scala s&election" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Scalar lisiemente le imagine a %1x%2 poterea prender un substantial " +"amonta de memoria. Isto pote reducer le responsa de systema e causar altere " +"problemas re ressources de application.

            Tu es secur que tu vole scalar " +"lisiemente le imagine?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Scala lisiemente imagine?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Scala lisi&emente imagine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Scalar lisiemente le selection a %1x%2 poterea prender un substantial " +"amonta de memoria. Isto pote reducer le responsa de systema e causar altere " +"problemas re ressources de application.

            Tu es secur que tu vole scalar " +"lisiemente le selection?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Selection de scala lisie" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Selection de scala lisi&e" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rota selection" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rota imagine" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Post rota:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direction" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "In senso a&nti-horari" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "In senso &horari" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Angulo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 gra&dos" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&rados" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &grados" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Personalisate:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "grados" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Rotar le selection a %1x%2 poterea prender un substantial amonta de " +"memoria. Isto pote reducer le responsa de systema e causar altere problemas " +"re ressources de application.

            Tu es secur que tu vole rotar le " +"selection?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rota selection?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rota s&election" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Rotar le imagine a %1x%2 poterea prender un substantial amonta de " +"memoria. Isto pote reducer le responsa de systema e causar altere problemas " +"re ressources de application.

            Tu es secur que tu vole rotar le imagine?" +"

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rota imagine?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rota imagin&e" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Inclina Selection" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Inclina imagine" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Post inclination:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Inclinar le selection a %1x%2 poterea prender un substantial amonta " +"de memoria. Isto pote reducer le responsa de systema e causar altere " +"problemas re ressources de application.

            Tu es secur que tu vole " +"inclinar le selection?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Inclina Selection?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Inclina S&election" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Inclinar le imagine a %1x%2 poterea prender un substantial amonta de " +"memoria. Isto pote reducer le responsa de systema e causar altere problemas " +"re ressources de application.

            Tu es secur que tu vole inclinarr le " +"imagine?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Inclina imagine?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Inclina imagin&e" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Similaritate de color" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Distantia de cubo de color &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Exacte coincidentia" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Cosa es Similaritate de color?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Salveguarda vista preliminar" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (approx. %2%)" +msgstr[1] "%1 bytes (approx. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Non pote aperir \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Il non pote aperir \"%1\" - formato de imagine non supportate\n" +"Le file poterea esser corrumpite.." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Non pote salveguardar imagine - informatione insufficiente." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mimetype: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Error Interne" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Le formato %1 poterea esser incapace a preservar omne " +"informationede color del imagine.

            Tu es secur que tu vole salveguardar " +"con iste formato?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Formato de file con perditas" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Salveguardar le imagine al basse profunditate de color de %1-bit " +"poterea resultar in un perdita de information de color. Anque alcun " +"transparentia poterea esser removite.

            Tu es secur que tu vole " +"salveguardar con iste profunditate de color?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Basse profunditate de color" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Il non pote salveguadar imagine - incapace de crear file temporanee." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Il non pote salveguardar como \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Error durante que salveguardava imagine " + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Il non pote salveguardar imagine - il falleva incargar" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Remove b&ordo interne" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Remove bordo interne" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Retalia aut&omaticamente" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Retalia automaticamente" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPAint non pote remover le bordo interne de selection proque il poterea " +"non esser locate." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Non pote remover bordo interne" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint nonn pote retaliar automaticamente le imagine proque su bordos " +"non pote esser locate." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Non pote retaliar automaticamente" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Fixa como imagine" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selection: crea" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programma per pinger de KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Fundator de projecto" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Chefe investigator" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koeller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Supporto de scander, Supporto Alpha, Mantenitor currente" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Icones" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Supporto de methodo de ingresso" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Effectos de imagine" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Portar a KDE4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Portar a KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Gratias a multe alteres qui ha adjutate facer possibile iste programma." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "File de imagine de aperir, optionalmente" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Lista omne typos mIME de image legibile" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vista" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imagine" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Colores" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barra de instrumento principal" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra de instrumento de texto" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menu RMB de instrumento de selection" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Edita" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "MIniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Trahe a sinistra le manico pro redimensionar le imagine." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Redimensiona imagine: lassa partir omne buttones de mus." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Redimensiona imagine: pulsa a dextera pro cancellar." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Non pote aperir paletta de color \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Il non pote aperir paletta de color \"%1\" - formato non supportate\n" +"Le file poterea esser corrumpite.." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Non pote aperir paletta de color de KDE \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Non pote salveguardar paletta de color \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sin titulo" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Usa configurationes predefinite de KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Usa illos de KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Aperi ..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Recar&ga" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Salveguarda" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "S&alveguarda como ..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Adde linea" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Dele ultime rango" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Quadro de color" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Le paletta de color \"%1\" ha essite modificate.\n" +"Tu vole salveguardar lo?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Le paletta de color de KDE \"%1\" ha essite modificate.\n" +"Tu vole salveguardar lo in un file?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Le paletta de color predefinite ha essite modificate.\n" +"Tu vole salveguardar lo?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Aperi paletta de color" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Le paletta de color \"%1\" ha essite modificate.\n" +"Si on recarga, on perdera omne modificationes post que tu ha salveguardate " +"le ultime vice.\n" +"Tu es secur?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Recarga" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Le paletta de color de KDE \"%1\" ha essite modificate\n" +"Si on recarga, on perdera omne modificationes.\n" +"Tu es secur?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Le paletta de color predefinite ha essite modificate\n" +"Si on recarga, on perdera omne modificationes.\n" +"Tu es secur?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Salveguarda paletta de color como" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Colla in &Nove fenestra" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Dele selection" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opia in file..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Colla &Ex file..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Texto: Crea quadro" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Texto: colla" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint non pote collar le contentos del area de transferentia " +"proque il ha un formato incognite." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Non pote collar" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Texto: Dele quadro" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selection: Dele" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Texto: Fini" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selection: Deselectiona" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copia in file" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Colla ex file" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xporta..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Scande" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Acquire instantaneo de schermo" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Proprietates" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Recar&ga" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Omne files supportate (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Aperi imagine" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Il falleva aperir le dialogo de scander" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Il falleva scander" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Retardo de instantaneo" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " secunda" +msgstr[1] " secundas" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Necun retardo" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Cela fenestra principal" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Proprietates de documento" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Salveguarda imagine como" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exporta" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Le documento \"%1\" ha essite modificate.\n" +"Si on recarga, on perdera omne modificationes post que tu ha salveguardate " +"le ultime vice.\n" +"Tu es secur?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Le documento \"%1\" ha essite modificate\n" +"Si on recarga, on perdera omne modificationes .\n" +"Tu es secur?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Imprime imagine" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Tu debe salveguardar iste imagine ante inviar lo.\n" +"Tu vole salveguardar lo?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Le documento \"%1\" ha essite modificate.\n" +"Tu vole salveguardar lo?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&edimensiona/Scala" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Fixa como imagine (Re&talia)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Revolta (de basso a alto)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Reflecte Horizontalmente" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rota..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rota a &sinistra" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rota a &dextera" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Torte..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reduce a Monochrome(tremite)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduce a scala de &gris" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inverte colores" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Netta" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Face confidential" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Ulterior effectos..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imagine" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Selec&tion" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Monstra &percurso" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Dessigna Anti-Aliased" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Familia de Font" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Dimension de Font" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Grasse" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Italic" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Sublinea" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Colpa a transverso" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Previe option de instrumento (Gruppo #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Proxime option de instrumento (Gruppo #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Previe option de instrumento (Gruppo #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Proxime option de instrumento (Gruppo #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Designa opaque" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Designa con similaritate de color..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Cassetta de Instrumento" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Monstra &grillia" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Monstra minia&tura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Modo de miniatura con zoo&m" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Habilita &rectangulo de miniatura" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Acquirer Imagine" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Il falleva aperir le scanner seligite" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pincel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Designa usante pinceles de formas e grandor differente" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Pulsa pro designar punctos o trahe pro designar tractos" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Eradicator de color" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Reimplacia pixels del color de prime plano con le color de fundo" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Pulsa o trahe pro rader pixels del color de fundo." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Eradicator" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Permitte te rader errores" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Pulsa o trahe pro rader" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Lassa partir omne buttones de mus" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Penna" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Designa punctos e tractos a mano libere" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Vaporisator" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Vaporisa graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Pulsa o trahe pro vaporisar graffiti" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Pulsa a dextera pro cancellar" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Pulsa a sinistra pro cancellar" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1 : " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permitte te seliger un color ab le imagine" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Pulsa pro seliger un color" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Reimple regiones in le imagine" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Pulsa pro reimpler un region." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Aggrandi e diminue le imagine" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Pulsa pro aggrandi/diminuer o trahe a sinistra pro facer zoom in un specific " +"area." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Curva" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Designa curvas" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Extrahe le punctos initial e final." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Trahe a sinistra pro fixar le prime puncto de controlo o pulsa a dextera pro " +"finir." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Trahe a dextera pro fixar le prime puncto de controlo o pulsa a sinistra pro " +"finir." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Trahe a sinistra pro fixar le ultime puncto de controlo o pulsa a dextera " +"pro finir." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Trahe a dextera pro fixar le ultime puncto de controlo o pulsa a sinistra " +"pro finir." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linea" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Designa lineas" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Trahe pro designar." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polygono" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Designa polygonos" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Trahe pro designar le prime linea." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Trahe a sinistra un altere linea o pulsa a dextera pro finir." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Trahe a dextera un altere linea o pulsa a sinistra pro finir." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Lineas connectite" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Designa lineas connectite" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Designas ellipses e circulos" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rectangulo" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Designa rectangulos e quadratos" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rectangulo arrotundate" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Designa rectangulos e quadratos con angulor arrotundate" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Trahe a sinistra pro crear selection." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Trahe a sinistra pro mover selection." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Trahe a sinistra pro scalarr selection." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selection: Opaque" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selection: Transparente" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selection: Color de transparentia" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selection: Similaritate de color de transparentia" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selection (elliptic)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Face un selection elliptic o circular" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selection (Forma libere)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Face un selection de forma libere" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selection (Rectangular)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Face un selection rectangular" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selection: move" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Macula" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Scribe texto" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Texto: Backsopace (retro spatio)" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Texto: Dele" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Texto: nove linea" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Texto: Scribe" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Trahe a sinistra pro crear quadro de texto." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Trahe a sinistra pro mover quadro de texto." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "texto: Quadro de texto" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Trahe a sinistra pro redimensionar quadro de texto." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Pulsa a sinistra pro modificar le position de cursor." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Texto: fundo opaque" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "texto: fundo transparente" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Texto: Excambia colores" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Texto: color de prime plano" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Texto: Color de fundo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Texto: Font " + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Texto: dimension de font" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "texto: grasse" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "texto: corsive" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Texto: sublineate" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Texto: Strike Through (colpa a transverso)" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Modo non de zoom - miniatura" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - MIniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Similaritate de color es como color similar de pixels " +"differente debe esser,pro operationes que considera los que es le mesme.

            Si tu fixa lo a un altere cosa que Correspondentia exacte, tu " +"poterea travaliar con plus efficacia con imagines e photos tremente, in un " +"modo comparabile al characteristica de \"Virga magic\" de altere programmas " +"de pintar.

            Iste characteristica applica se a:

            • Selectiones:In modo Transparente, ulle color in le " +"selection que es similar al color de fundo essera ponite transparente." +"
            • Reimple con inundation: Pro regiones con pixels colorate de " +"modo similar - ma non identic - un valor fixate plus alte " +"probabilemente reimplera plus pixels.
            • Eradicator de color: " +"Ulle pixel cuje color es similar al color de prime plano essera " +"reimplaciate per le color defundo.
            • Talia automaticamente e " +" Remove bordo interne: Pro bordos con similar - ma non identic " +"- pixels colorate, un valor fixate plus alte es plus probabile que taliara " +"le integre bordo.

            Preferentias plus alte significa que " +"operationes considera que un augmentate extension de colores es assatis " +"similar assi que on pote considerar lo le mesme. Dunque, tu deberea " +"augmentar le valor de preferentia si le operationes de super non affice " +"pixels cuje colores tu considera assatis similar.

            Totevia, si illos ha " +"troppo effecto e cambia pixel cuje colores tu non considera como assatis " +"similar (p.ex. si Reimple con inundation es modificante nimie " +"pixels), tu deberea diminuer iste valores.

            Pro configurar lo, pulsa " +"sur le cubo.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Similaritate de color es como color similar de pixels " +"differente debe esser,pro operationes que considera los que es le mesme.

            Si tu fixa lo a un altere cosa que Correspondentia exacte, tu " +"poterea travaliar con plus efficacia con imagines e photos tremente, in un " +"modo comparabile al characteristica de \"Virga magic\" de altere programmas " +"de pintar.

            Iste characteristica applica se a:

            • Selectiones: In modo Transparente, ulle color in le " +"selection que es similar al color de fundo essera ponite transparente." +"
            • Reimple con inundation: Pro regiones con pixels colorate de " +"modo similar - ma non identic - un valor fixate plus alte " +"probabilemente reimplera plus pixels.
            • Eradicator de color: " +"Ulle pixel cuje color es similar al color de prime plano essera " +"reimplaciate per le color defundo.
            • Talia automaticamente e " +" Remove bordo interne: Pro bordos con similar - ma non identic " +"- pixels colorate, un valor fixate plus alte es plus probabile que taliara " +"le integre bordo.

            Preferentias plus alte significa que " +"operationes considera que un augmentate extension de colores es assatis " +"similar assi que on pote considerar lo le mesme. Dunque, tu deberea " +"augmentar le valor de preferentia si le operationes de super non affice " +"pixels cuje colores tu considera assatis similar.

            Totevia, si illos ha " +"troppo effecto e cambia pixel cuje colores tu non considera como assatis " +"similar (p.ex. si Reimple con inundation es modificante nimie " +"pixels), tu deberea diminuer iste valor.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Similaritate de color: %1%

            Pulsa pro configurar." + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Similaritate de color: Exacte correspondentia

            Pulsa pro configurar.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Brillantia:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Reinitiali&sa" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntrasto" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Reini&tialisa" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Cana&les:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Omne" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rubie" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blau" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "refixa omne v&alores" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Preferentias" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Amonta:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Habilita" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Colores" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tinta:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturation:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valor:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rubie" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Verde" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blau" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Omne" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canales" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monochrome" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nochrome(tremite)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 co&lor" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 colo&r (tremite)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bit color" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduce a" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularitate:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Pro seliger le color de prime plano que instrumentos usa pro " +"designar, pulsa a sinistra sur un cella reimplite de color. Pro seliger le " +"color de fundo in loco pulsa dextere.

            Pro cambiar le color del mesme " +"cella, duple pulas sur illo.

            Tu anque pote excambiar le color de un " +"cella reimplite con qualcunque altere cella per usar le option de traher e " +"deponer. Anque, si tu mantene premite le clave Ctrl, le color del " +"cella de destination essera superscribite, in loco de esser excambiate con " +"le color del eclla original.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Conver&te a" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Qualitate:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Vista &preliminar" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monochrome" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monochrome(tremite)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Color" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 color (tremite)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bit color" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Position de I&magine" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centro del pagina" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "In alto sinistre de&l pagina" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparente" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Configurationes predefinite de KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Colores: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Colores: %1 [modificate]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Circulo" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Quadrato" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra oblique" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barra de retro" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Non reimple" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Reimple con color de fundo" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Reimple con color de prime plano" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaque" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Un documento appellate \"%1\" ja existe.\n" +#~ "Tu vole superscriber lo?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Un paletta de color appellate \"%1\" ja existe.\n" +#~ "Tu vole superscriber lo?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Fixa le nivello de zoom a un valor que non es un multiple de 100% resulta " +#~ "in un editing incerte e ungulaturas quando on redesigna.\n" +#~ "Tu vermente vole fixar le nivello de zoom a %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Fixa nivello de zoom a %1%" + +#~ msgid "None" +#~ msgstr "Necun" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Redimensionar le imagine a %1x%2 poterea prender un substantial " +#~ "amonta de memoria. Isto pote reducer le responsa de systema e causar " +#~ "altere problemas re ressources de application.

            Tu es secur que tu " +#~ "vole redimensionar le imagine?

            " + +#~ msgid "Overwrite" +#~ msgstr "Super scribe" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Non pote aperir \"%1\" - mymetype incognite." + +#~ msgid "Save Preview" +#~ msgstr "Salveguarda vista preliminar" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Pro obtener supporto, pro favor visita le sito web." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Il non trovava alcun plugin que provide le dialogo de scanditor " +#~ "(scanner).\n" +#~ "Isto solitementesignifica que le pacchetto providente ksaneplugin non es " +#~ "installate." + +#~ msgid "No Scanning Support" +#~ msgstr "Nulle supporto pro scander" diff --git a/po/id/kolourpaint.po b/po/id/kolourpaint.po new file mode 100644 index 0000000..6643c69 --- /dev/null +++ b/po/id/kolourpaint.po @@ -0,0 +1,2550 @@ +# Copyright (C) YEAR This file is copyright: +# This file is distributed under the same license as the kolourpaint package. +# Aziz Adam Adrian <4.adam.adrian@gmail.com>, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-06-24 14:13+0700\n" +"Last-Translator: Aziz Adam Adrian <4.adam.adrian@gmail.com>\n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 22.04.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Aziz Adam Adrian" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "4.adam.adrian@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Seimbang" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Pertajam" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Bersihkan" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inversi" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Balikkan" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Ubah Ukuran" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Putar" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Urung" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "U&lang" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Urung: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Urung" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Ulang: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Ulang" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "" +msgstr[1] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efek:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "x" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "O&ffset" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Tuts" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Nilai" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Pratinjau" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Perbarui" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Kotak Teks" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Ubah Uku&ran" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "S&kala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Lebar:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Tinggi:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Baru:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "derajat" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "" +msgstr[1] "" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikon" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Tampilan" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "C&itra" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Warna" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Edit" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Teks" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Tak berjudul" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Buka..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Muat-Ula&ng" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "Si&mpan" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Tambah Baris" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Muat-Ula&ng" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Pindai..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Muat-Ula&ng" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Ekspor" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Ha&pus" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "C&itra" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Tebal" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Miring" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Kotak Alat" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Kuas" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Penghapus" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pen" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1:" + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kurva" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Garis" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polygon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elips" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Semua" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Merah" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Hijau" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Biru" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Pengaturan" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Fungsi&kan" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Warna" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "Ni&lai:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Merah" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Hijau" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "Bi&ru" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Semua" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Pratinjau" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Lingkaran" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Persegi" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Setrip" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Kusam" diff --git a/po/is/kolourpaint.po b/po/is/kolourpaint.po new file mode 100644 index 0000000..a426bd2 --- /dev/null +++ b/po/is/kolourpaint.po @@ -0,0 +1,2793 @@ +# translation of kolourpaint.po to Icelandic +# +# Þröstur Svanbergsson , 2004. +# Arnar Leosson , 2005. +# Arnar Leósson , 2005. +# Sveinn í Felli , 2008, 2009, 2011, 2013, 2015, 2016, 2017, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-10-07 09:25+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic\n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.12.3\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n != 1;\n" +"\n" +"\n" +"\n" +"\n" +"\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Þröstur Svanbergsson, Richard Allen, Arnar Leósson, Sveinn í Felli" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "throstur@bylur.net, ra@ra.is, leosson@frisurf.no, sv1@fellsnet.is" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Vægi" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Mýkja" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Skerpa" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Hreinsa" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Val: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Upphleypt" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Fletja út" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Fækka í grátóna" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Litblær, Mettun, Litgildi" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Snúa við litum" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Snúa við" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Fækka í svarthvítt (litfléttað)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Fækka í svarthvítt" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Fækka í 256 liti (litfléttað)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Fækka í 256 liti" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Litatíðnijafnari" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Spegla" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Spegla lárétt og lóðrétt" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Spegla lágrétt" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Spegla lóðrétt" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Texti: breyta um stærð á kassa" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Val: Kvarða" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Val: Fínkvarða" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Breyta stærð" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Fínskala" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Snúa" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Skekkja" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Afturkalla: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Afturkalla" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "Endu&rtaka: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "Endu&rtaka" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Afturkalla: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Afturkalla" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Endurtaka: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Endurtaka" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 fleiri atriði" +msgstr[1] "%1 fleiri atriði" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Litaplokkari" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Fylla" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Fleiri myndbrellur (val)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Fleiri myndbrellur" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "Br&ella:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Fækka litum" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Mýkja & skerpa" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Eiginleikar skjals" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Punktar á tommu (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Óskilgreint" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Lárétt:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Lóðrétt:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Punktar á tommu (PÁT; e.DPI) tilgreinir þann fjölda mynddíla " +"(punkta) sem prenta ætti innan einnar tommu (inch = 2.54cm).

            Því hærra " +"sem gildi PÁT/DPI er, því minni verður útprentaða myndin. Athugaðu að það er " +"ólíklegt að prentarinn þinn geri myndir með betri gæðum ef þú eykur " +"upplausnina í meira en 300 eða 600 PÁT, en fer þó eftir prentaranum.

            Ef þú vilt prenta út mynd í sömu stærð og hún er á skjánum, þá setuðu " +"PÁT-gildi myndarinnar á það sama og sjárinn þinn (oftast 72 eða 96 PÁT).

            Ef annaðhvort PÁT-gildið er Ótilgreint, verður myndin prentuð út " +"í sömu stærð og á skjánum.

            Ekki styðja öll myndsnið stillingar PÁT-" +"gilda. Ef myndsniðið sem þú vistar í styður þetta ekki, þá munu gildin sem " +"tilgreind eru hér einfaldlega ekki vistast.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "H&liðrun" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Hliðrun (e.offset) er afstæð staðsetning myndar, borið saman " +"við aðrar myndir.

            Ekki öll myndsnið styðja eiginleika eins og " +"Hliðrun. Ef myndsniðið sem þú vistar í styður þetta ekki, þá munu " +"gildin sem tilgreind eru hér einfaldlega ekki vistast.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Textareitir" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Bæt&a við röð" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Eyða röð" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "F&rumstilla" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Textareitir innihalda aukalegar upplýsingar um myndina. Oft er " +"hér um að ræða athugasemdareit sem þú getur skrifað ansi frjálslega hvern " +"þann texta sem við á.

            Hinsvegar, þar sem þessir reitir eru háðir um " +"hvaða myndsnið er að ræða, þá er tæknilega hægt að gera ráð fyrir að í " +"einhverjum tilfellum geti þetta verið forritssamhæfð gögn sem þú ættir alls " +"ekki að eiga neitt við - sú staða er fremur ólíkleg.

            Ekki öll myndsnið " +"styðja eiginleika eins og textareiti. Ef myndsniðið sem þú vistar í " +"styður þetta ekki, þá munu gögn sem tilgreind eru hér einfaldlega ekki " +"vistast.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Lykill" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Litagildi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Textagildið \"%1\" á línu %2 krefst lykils." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Allir textareitir verða að vera einstakir. Textareitirnir \"%1\" á línum %2 " +"og %3 eru eins." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Ógildir textareitir" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Stærð" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Upprunaleg:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Forskoða" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Uppfæra" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Breyta stærð / kvarða" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Virkja á:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Alla myndina" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Val" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Textakassa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Aðgerð" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Breyta stærð: Myndstærðin verður aukin með því að búa til " +"ný svæði til hægri og/eða neðst (fyllt með bakgrunnslitnum), eða minnkuð með " +"því að klippa af henni til hægri og/eða neðst.
            • Skala: Myndin " +"verður stækkuð með því að margfalda punkta eða minnkuð með því að kassta " +"punktum.
            • Fínskala: Þetta er það sama og að Skala " +"burtséð frá að þetta blandar nágranna punktunum saman til að fá fram mýkra " +"útlit á myndina.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Breyta stærð" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Kvarða" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Fí&nkvarða" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Breidd:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Hæð:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Ný:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Prósenta:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "H&alda hlutföllum" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Að breyta stærð textakassans í %1x%2 gæti tekið stóran hluta af " +"vinnsluminni tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og " +"valdið truflunum á öðrum forritum.

            Ertu viss um að þú viljir breyta " +"stærð hans?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Breyta stærð textareits?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Br&eyta stærð textakassa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Að breyta stærð myndarinnar í %1x%2 gæti tekið stóran hluta af " +"vinnsluminni tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og " +"valdið truflunum á öðrum forritum.

            Ertu viss um að þú viljir breyta " +"stærð hennar?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Breyta stærð myndar?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Breyta s&tærð myndar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Að kvarða myndina í %1x%2 gæti tekið stóran hluta af vinnsluminni " +"tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og valdið truflunum á " +"öðrum forritum.

            Ertu viss um að þú viljir kvarða hana?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Kvarða mynd?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Kvarða m&ynd" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Að kvarða svæðið í %1x%2 gæti tekið stóran hluta af vinnsluminni " +"tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og valdið truflunum á " +"öðrum forritum.

            Ertu viss um að þú viljir skala valið svæði?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Kvarða valið svæði?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Kvarða valið svæði" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Að fínkvarða myndina í %1x%2 gæti tekið stóran hluta af vinnsluminni " +"tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og valdið truflunum á " +"öðrum forritum.

            Ertu viss um að þú viljir fínkvarða hana?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Fínkvarða mynd?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Fín&kvarða mynd" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Að fínkvarða valda svæðið í %1x%2 gæti tekið stóran hluta af " +"vinnsluminni tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og " +"valdið truflunum á öðrum forritum.

            Ertu viss um að þú viljir " +"fínkvarða það?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Fínkvarða valda svæðið?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Fín&kvarða valið svæði" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Snúa völdu svæði" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Snúa mynd" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Eftir snúning:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Stefna" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Ra&ngsælis" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Réttsæ&lis" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Horn" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &gráður" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&ráður" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 gr&áður" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Sérs&niðið:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "gráður" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Að snúa valda svæðinu í %1x%2 gæti tekið stóran hluta af vinnsluminni " +"tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og valdið truflunum á " +"öðrum forritum.

            Ertu viss um að þú viljir snúa því?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Snúa völdu svæði?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "S&núa völdu svæði" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Að snúa myndinni í %1x%2 gæti tekið stóran hluta af vinnsluminni " +"tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og valdið truflunum á " +"öðrum forritum.

            Ertu viss um að þú viljir snúa myndinni?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Snúa mynd?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Snú&a mynd" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Skekkja valið svæði" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Skekkja mynd" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Eftir skekkingu:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Lárétt:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "Lóð&rétt:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Að skekkja valda svæðið í %1x%2 gæti tekið stóran hluta af " +"vinnsluminni tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og " +"valdið truflunum á öðrum forritum.

            Ertu viss um að þú viljir skekkja " +"svæðið?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Skekkja valda svæðið?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Sk&ekkja valda svæðið" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Að skekkja myndina í %1x%2 gæti tekið stóran hluta af vinnsluminni " +"tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og valdið truflunum á " +"öðrum forritum.

            Ertu viss um að þú viljir skekkja myndina?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Skekkja mynd?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Sk&ekkja mynd" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Litalíkindi" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB litateningsfjarlægð" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Passar nákvæmlega" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Hvað eru litalíkindi?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Vista forskoðun" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 bæti (u.þ.b. %2%)" +msgstr[1] "%1 bæti (u.þ.b. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Gat ekki opnað \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Gat ekki opnað \"%1\" - óstutt myndsnið.\n" +"Skráin gæti verið skemmd." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Gat ekki vistað mynd - ónægar upplýsingar." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Slóð: %1\n" +"MIME tegund: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Innri villa" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Ekki er víst að %1 sniðið geti geymt allar litaupplýsingar " +"myndarinnar.

            Ertu viss um að þú viljir vista í þessu sniði?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Skráarsnið með tapi upplýsinga" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Með því að vista myndina í %1bita lágupplausninni gætu tapast " +"einhverjar litaupplýsingar. Öll gegnsæi verður einnig fjarlægð.

            Ertu " +"viss um að þú viljir vista myndina með þessari litadýpt?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Lítil litadýpt" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Gat ekki vistað mynd - gat ekki búið til tímabundna skrá." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Gat ekki vistað sem \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Villa við að vista mynd" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Gat ekki vistað mynd - gat ekki hlaðið upp." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Fjarlægja innri &ramma" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Fjarlægja innri ramma" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "S&níða sjálfvirkt af" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Sníða sjálfvirkt af" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint getur ekki fjarlægt innri ramma valda svæðisins þar sem þeir " +"fundust ekki." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Get ekki fjarlægt innri ramma" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint getur ekki sniðið sjálfvirkt af myndinni þar sem rammar hennar " +"fundust ekki." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Get ekki utansniðið sjálfvirkt" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Setja sem mynd" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Val: búa til" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Teikni/málunarforrit frá KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Upphafsmaður verkefnis" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Aðalrannsóknarmaður" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Stuðningur við skönnun og alfa-gegnsæi, núverandi umsjónarmaður" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Táknmyndir" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "InputMethod stuðningur" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Myndbrellur" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 aðlögun" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF5 aðlögun" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Bestu þakki til allra þeirra sem hafa gert þetta forrit að raunveruleika." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Myndskrár sem skal opna, valkvætt" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Telja upp allar lesanlegar MIME-tegundir mynda" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "S&koða" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Mynd" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Litir" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Aðaltækjaslá" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Textaslá" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "RMB listi valáhalds" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Breyta" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Smámynd" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Dragðu í handfangið til að breyta stærð myndarinnar." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Breyta stærð myndar: slepptu öllum músartökkum." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Breyta stærð myndar: hægrismelltu til að hætta við." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Texti" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Gat ekki opnað litaspjaldið \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Gat ekki opnað litaspjaldið \"%1\" - óstutt myndsnið.\n" +"Skráin gæti verið skemmd." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Gat ekki opnað KDE litaspjaldið \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Gat ekki vistað litaspjald sem \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Án titils" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Nota sjálfgefnar stillingar KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Nota stillingar KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Opna..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "En&durlesa" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "Vi&sta" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Vist&a sem..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Bæta við röð" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Eyða síðustu röð" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Litakassi" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Litaspjaldinu \"%1\" hefur verið breytt.\n" +"Viltu vista það?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE litaspjaldinu \"%1\" hefur verið breytt.\n" +"Viltu vista það?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Sjálfgefna litaspjaldinu hefur verið breytt.\n" +"Viltu vista það?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Opna litaspjald" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Litaspjaldinu \"%1\" hefur verið breytt.\n" +"Endurhleðsla mun tapa öllum breytingum frá því þú vistaðir það síðast.\n" +"Ertu viss?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Endu&rlesa" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE litaspjaldinu \"%1\" hefur verið breytt.\n" +"Endurnýjun mun tapa öllum breytingum.\n" +"Ertu viss?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Sjálfgefna litaspjaldinu hefur verið breytt.\n" +"Endurhleðsla mun tapa öllum breytingum.\n" +"Ertu viss?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Vista litaspjald sem" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Líma í &nýjan glugga" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Eyða vali" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "&Afrita í skrá..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "&Líma úr skrá..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Texti: búa til kassa" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Texti: líma" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint getur ekki límt efnið af klippispjaldinu vegna þess að það " +"er á óþekktu sniði." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Get ekki límt" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Texti: eyða kassa" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Val: eyða" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Texti: ljúka" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Val: afvelja" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Afrita í skrá" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Líma úr skrá" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Flytja út..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skanna..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Taka skjámynd" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Eiginleikar" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "En&durlesa" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Allar studdar skrár (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Opna mynd" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Mistókst að opna skönnunarglugga." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Skönnun mistókst" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Seinkun á myndatöku" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekúnda" +msgstr[1] " sekúndur" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Engin töf" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Fela aðalglugga" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Eiginleikar skjals" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Vista mynd sem" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Flytja út" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Skjalinu \"%1\" hefur verið breytt.\n" +"Endurnýjun mun tapa öllum breytingum frá því þú vistaðir það síðast.\n" +"Ertu viss?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Skjalinu \"%1\" hefur verið breytt.\n" +"Endurnýjun mun tapa öllum breytingum.\n" +"Ertu viss?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Prenta mynd" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Þú verður að vista þessa mynd áður en þú sendir hana.\n" +"Viltu vista hana?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Skjalinu \"%1\" hefur verið breytt.\n" +"Viltu vista það?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&Breyta stærð / Kvarða..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Se&tja sem mynd (sníða af)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "S&pegla (á hvolf)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Spegla (lárétt)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "S&núa..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Snúa ti&l vinstri" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Snúa til hæg&ri" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "S&kekkja..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "&Fækka í svarthvítt (litfléttað)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Fækka í &grátóna" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "Snúa &við litum" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Hreinsa" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Gera að trúnaðarmáli" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Fleiri myndbrellur..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Mynd" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "&Val" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&Birta slóð" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Teikna með afstöllun" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1báp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Leturfjölskylda" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Leturstærð" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Feitletrað" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Skáletrað" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Undirstrikað" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Yfirstrikað" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Fyrri áhaldavalkostur (hópur #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Næsti áhaldavalkostur (hópur #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Fyrri áhaldavalkostur (hópur #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Næsti áhaldavalkostur (hópur #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Teikna ógegnsætt" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Teikna miðað við litalíkindi..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Áhaldakassi" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Sýna &grind" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Sýna smá&mynd" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Aðdreginn s&mámyndahamur" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Virkja smámynda &rétthyrning" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "Að&dráttur" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Lesa inn mynd" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Mistókst að tengjast völdum skanna." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pensill" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Teikna með burstum af mismunandi stærðum og gerðum" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Smelltu til að teikna punkta eða dragðu fyrir penslafar." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Litastrokleður" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Skiptir út punktum forgrunnslitsins með litum bakgrunnsins" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Smelltu eða dragðu til að eyða punktum í forgrunnslitnum." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Strokleður" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Leyfir þér að stroka út mistök" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Smelltu eða dragðu til að eyða." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Slepptu öllum músartökkunum." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Penni" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Teiknar punkta og fríhendis penslaför" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Spreybrúsi" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Spreyjar veggjalist" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Smelltu eða dragðu til að spreyja veggjalist." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Hægrismelltu til að hætta við." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Vinstrismelltu til að hætta við." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Leyfir þér að velja lit úr myndinni" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Smelltu til að velja lit." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Fyllir svæði í myndinni" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Smelltu til að fylla svæði." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Aðdráttur" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Dregur sjónarhornið inn og út á myndina" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Smella til að draga inn/út eða draga með vinstri til að stækka tiltekið " +"svæði." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Boglína" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Teiknar boglínur" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Dragðu upphafs- og endapunktana." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Dragðu með vinstri hnapp til að setja fyrsta stýripunkt eða hægrismelltu til " +"að ljúka." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Dragðu með hægri hnapp til að setja fyrsta stýripunkt eða vinstrismelltu til " +"að ljúka." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Dragðu með vinstri hnapp til að setja seinasta stýripunkt eða hægrismelltu " +"til að ljúka." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Dragðu með hægri hnapp til að setja seinasta stýripunkt eða vinstrismelltu " +"til að ljúka." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Lína" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Teiknar línur" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Haltu inni til að teikna." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Marghyrningur" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Teiknar marghyrninga" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Dragðu til að teikna fyrstu línuna." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Dragðu með vinstri hnapp aðra línu eða hægrismelltu til að ljúka." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Dragðu með hægri hnapp aðra línu eða vinstrismelltu til að ljúka." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Tengdar línur" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Teiknar tengdar línur" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Sporbaugur" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Teiknar sporbauga og hringi" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rétthyrningur" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Teiknar rétthyrninga og ferninga" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Ávalur ferhyrningur" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Teiknar rétthyrninga og ferninga með ávölum hornum" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Dragðu með vinstri hnapp til að búa til val." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Dragðu með vinstri hnapp til að færa val." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Dragðu með vinstri hnapp til að kvarða valið." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Val: ógegnsætt" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Val: gegnsætt" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Val: gegnsæis litur" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Val: gegnsæis litalíkindi" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Val (sporbaugur)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Gerir sporbaugs eða hringlaga val" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Val (frjálst val)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Gerir frjálst val" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Val (ferhyrnt)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Gerir ferhyrnt val" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Val: færa" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: smyrja" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Skrifar texta" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Texti: bakka" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Texti: eyða" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Texti: ný lína" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Texti: skrifa" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Dragðu með vinstri hnapp til að búa til textakassa." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Dragðu með vinstri hnapp til að færa textakassann." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Texti: færa kassa" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Dragðu með vinstri hnapp til að breyta stærð textakassans." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Vinstrismelltu til að breyta stöðu bendils." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Texti: ógegnsær bakgrunnur" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Texti: gegnsær bakgrunnur" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Texti: skipta út litum" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Texti: forgrunnslitur" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Texti: bakgrunnslitur" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Texti: letur" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Texti: leturstærð" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Texti: feitletrað" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Texti: skáletrað" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Texti: undirstrikað" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Texti: yfirstrikað" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Óaðdreginn hamur - smámyndir" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Smámynd" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Litalíkindi er hve líkir litir verða að vera hver öðrum " +"til að vera taldir sami litur.

            Ef þú stillir þetta á eitthvað annað en " +"nákvæma samsvörun, þá geturðu unnið með bitamyndir á marga vegu, " +"svipað og með \"Töfrasprota\" aðgerðum í mörgum öðrum myndvinnsluforritum.

            Þessi eiginleiki kemur við sögu í:

            • Valaðgerðir: í " +"gegnsæis ham eru allir þeir litir innan ákveðins vals sem teljast " +"líkir bakgrunnslitnum gerðir gegnsæir.
            • Flæðifylla: " +"Fyrir svæði með svipaða - en ekki eins-litaða mynddíla, er hærri " +"stilling líkleg til að fylla fleiri punkta.
            • Liteyðing: Hver " +"sá díll sem er með lit svipuðum forgrunnslitnum verður skipt út fyrir " +"bakgrunnslitinn.
            • Sjálfvirk afsníðing og Fjarlægja innri " +"ramma: Fyrir ramma með svipuðum - en ekki eins-litum dílum, er " +"hærri stilling líklegri til að sníða af allan rammann.

            Hærri " +"stillingar þýða að aðgerðirnar telja víðara svið lita vera nógu líkt " +"til að teljast vera eins. Þannig að þú ættir að hækka þetta gildi ef " +"ofantaldar aðgerðir eru ekki að taka með litadíla sem þér finnast eigi að " +"teljast með.

            Hinsvegar, ef aðgerðirnar eru ofreiknaðar og eru að hafa " +"áhrif á svæði sem þú hefur ekki talið vera innan líkinda (t.d. ef " +"Flóðfylling er að fylla of marga díla), þá ættirðu að lækka gildi " +"þessarar stillingar.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Litalíkindi er hve líkir litir verða að vera hver öðrum " +"til að vera taldir sami litur.

            Ef þú stillir þetta á eitthvað annað en " +"nákvæma samsvörun, þá geturðu unnið með bitamyndir á marga vegu, " +"svipað og með \"Töfrasprota\" aðgerðum í mörgum öðrum myndvinnsluforritum.

            Þessi eiginleiki kemur við sögu í:

            • Valaðgerðir: í " +"gegnsæis ham eru allir þeir litir innan ákveðins vals sem teljast " +"líkir bakgrunnslitnum gerðir gegnsæir.
            • Flæðifylla: " +"Fyrir svæði með svipaða - en ekki eins-litaða mynddíla, er hærri " +"stilling líkleg til að fylla fleiri punkta.
            • Liteyðing: Hver " +"sá díll sem er með lit svipuðum forgrunnslitnum verður skipt út fyrir " +"bakgrunnslitinn.
            • Sjálfvirk afsníðing og Fjarlægja innri " +"ramma: Fyrir ramma með svipuðum - en ekki eins-litum dílum, er " +"hærri stilling líklegri til að sníða af allan rammann.

            Hærri " +"stillingar þýðe að aðgerðirnar telja víðara svið lita vera nógu líkt " +"til að teljast vera eins. Þannig að þú ættir að hækka þetta gildi ef " +"ofantaldar aðgerðir eru ekki að taka með litadíla sem þér finnast eigi að " +"teljast með.

            Hinsvegar, ef aðgerðirnar eru ofreiknaðar og eru að hafa " +"áhrif á svæði sem þú hefur ekki talið vera innan líkinda (t.d. ef " +"Flóðfylling er að fylla of marga díla), þá ættirðu að lækka gildi " +"þessarar stillingar.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Samsvörun lita: %1%

            Smelltu til að stilla.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Samsvörun lita: Nákvæm samsvörun

            Smelltu til að " +"stilla.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Birta:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Frum&stilla" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "&Birtuskil:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "Litleiðréttin&g:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Frums&tilla" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Rásir:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Allar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rautt" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Grænt" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blátt" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Frumstilla &allt" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Stillingar" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "M&agn:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Virkja" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Litir" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "Litb&lær:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Mettun:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "Li&tagildi:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rautt" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Grænt" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blátt" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Allt" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Rásir" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "Svart&hvítt" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Svar&thvítt (litfléttað)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &litir" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 liti&r (litfléttað)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bita litur" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Fækka í" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Nákvæmni:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Til að velja forgrunnslit þann sem áhöldin nota til að teikn/mála " +"með, vinstri smelltu inn í litareit á litaspjaldinu. Til að velja " +"bakgrunnslit er hægrismellt.

            Til að breyta sjálfum litnum í litareit, " +"tvísmelltu á hann.

            Þú getur líka skipt um og fært til liti í " +"litareitum með því að draga-sleppa. Ennfremur, ef þú heldur niðri Ctrl lyklinum, verður skrifað yfir innihald viðkomandi litareits, í stað þess " +"að víxla litum við upprunareitinn.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Brey&ta í:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Gæði:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Forskoða" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Svarthvítt" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Svarthvítt (litfléttað)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 litir" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 litir (litfléttað)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bita litur" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Staðsetning &myndar" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Á mið&ri síðu" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&Efst-vinstri á síðu" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Gegnsætt" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Sjálfgefnar stillingar KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Litir: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Litir: %1 [breytt]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Hringur" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Ferningur" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Skástrik" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Öfugt skástrik" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Engin fylling" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Fylla með bakgrunnslit" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Fylla með forgrunnslit" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Ógegnsætt" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Skjal með nafninu \"%1\" er til fyrir.\n" +#~ "Viltu yfirskrifa það?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Litaspjald með nafninu \"%1\" er til fyrir.\n" +#~ "Viltu yfirskrifa það?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Að setja stækkunarstigið í gildi sem er ekki margföldun af 100% getur " +#~ "valdið ónákvæmum breytingum og endurteikningarhnökri.\n" +#~ "Viltu í alvöru setja stækkunarstigið í %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Setja stækkunarstig á %1%" + +#~ msgid "None" +#~ msgstr "Ekkert" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Að breyta stærð myndarinnar í %1x%2 gæti tekið stóran hluta af " +#~ "vinnsluminni tölvunnar. Það gæti hægt talsvert á afköstum kerfisins og " +#~ "valdið truflunum á öðrum forritum.

            Ertu viss um að þú viljir " +#~ "breyta stærð myndarinnar?

            " + +#~ msgid "Overwrite" +#~ msgstr "Yfirskrifa" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Gat ekki opnað \"%1\" - óþekkt MIME tegund." + +#~ msgid "Save Preview" +#~ msgstr "Vista forskoðun" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Til að fá hjálp, endilega heimsæktu vefsvæðið." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Ekkert íforrit fannst sem inniheldur skönnunarviðmótið.\n" +#~ "Venjulega þýðir þetta að pakkinn sem inniheldur ksaneplugin sé ekki " +#~ "uppsettur." + +#~ msgid "No Scanning Support" +#~ msgstr "Enginn stuðningur við skönnun" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Stuðningur við skönnun er ekki uppsettur." diff --git a/po/it/docs/kolourpaint/index.docbook b/po/it/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..5c59e5f --- /dev/null +++ b/po/it/docs/kolourpaint/index.docbook @@ -0,0 +1,1782 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +Manuale di &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +LuigiToscano
            luigi.toscano@tiscali.it
            Traduzione italiana
            +
            + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2018-03-23 +Applications 18.04 + + +&kolourpaint; è un programma di disegno libero e semplice da usare della comunità &kde;. + + + +kolourpaint +kdegraphics + + +
            + + +Introduzione +&kolourpaint; è un programma di disegno libero e semplice da usare sviluppato da &kde;. È perfetto per i piccoli lavori di ogni giorno, come: + + + +Disegno - tracciare diagrammi e disegno a mano libera + + +Manipolazione di schermate - acquisizione e modifica di schermate + + +Manipolazione di immagini - modifica di foto e acquizione di immagini; applicazione di effetti + + +Modifica di icone - disegno di clipart e di loghi con trasparenze + + + + + + + + + + + + + +Uso di &kolourpaint; + +Fai clic sui collegamenti seguenti per esplorare le funzioni di &kolourpaint;: + + + +Strumenti + + +Lavorare con i colori + + +Opzioni di visualizzazione + + +Effetti immagine + + + + + +Strumenti + +Un'ulteriore opzione nel menu Impostazioni permette di definire se gli strumenti usano l'anti-alias (comportamento predefinito) o meno. + + +Acquisizione di schermate + +Una schermata è una istantanea del contenuto dello schermo. Può essere utile per spiegare alcuni azioni da eseguire per ottenere un certo risultato, o per mostrare alcuni problemi rilevati. +Per fare in modo che le schermate siano pronte per la modifica nella finestra di &kolourpaint; puoi usare la voce File Acquisisci schermata dal menu principale di &kolourpaint;. + + + + + + + +Usando la finestra di dialogo così aperta puoi modificare il valore di Ritardo della foto (in secondi, e scegliere Nascondi finestra principale durante l'acquisizione della schermata. Quando sei pronto per acquisire la schermata, fai semplicemente clic su OK. La schermata acquisita sarà posizionata direttamente nell'area di modifica di &kolourpaint;. + + + +Guida agli strumenti + +Un modo rapido per selezionare uno strumento in &kolourpaint; consiste nell'utilizzo della scorciatoia di tastiera, raggiungibile con un semplice tasto, associata ad esso, documentato successivamente e nei suggerimenti della casella degli strumenti. È anche possibile tenere premuto &Alt;&Shift; mentre si preme il tasto, ciò è necessario quando si inserisce del testo (poiché, in questo caso, le scorciatoie di tastiera a tasto singolo vengono disabilitate). Ad esempio, per selezionare il pennello, premere &Alt;&Shift;B o semplicemente B (se non si sta inserendo del testo). + + + Pennello (B) + + Gomma per colore (O) + + Selettore di colore (C) + + Linee connesse (N) + + Curva (V) + + Ellisse (E) + + Gomma (A) + + Riempimento (F) + + Linea (L) + + Penna (P) + + Poligono (G) + + Rettangolo (R) + + Rettangolo smussato (U) + + Selezione (ellittica) (I) + + Selezione (a mano libera) (M) + + Selezione (rettangolare) (S) + + Bomboletta spray (Y) + + Testo (T) + + + + + +Pennello <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Fai clic oppure fai clic e trascina con il pennello per disegnare. + + + + + + + + + + + + + + +Fai clic su una delle forme per selezionare la forma del pennello. È possibile utilizzare pennelli circolari, quadrati, a forma di barra o di barra inversa. + + + + + + +Il &LMB; disegna utilizzando il colore di primo piano. Il &RMB; disegna utilizzando il colore di sfondo. + + + +Selettore di colore <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Per impostare il colore di primo piano, fai clic con il pulsante sinistro del mouse su un pixel. Per impostare il colore di sfondo, fai clic con il pulsante destro su un pixel. Subito dopo &kolourpaint; renderà attivo lo strumento precedentemente selezionato. + + + + +Linee connesse e poligoni <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina per tracciare linee connesse. Lo strumento poligono si utilizza nello stesso modo, tuttavia i punti iniziali e finali sono collegati automaticamente a formare un poligono. + +Il &LMB; disegna utilizzando il colore di primo piano. Il &RMB; disegna utilizzando il colore di sfondo ed inverte, inoltre, il colore di riempimento dei poligoni. + +È possibile impostare lo spessore della linea. Per i poligoni è inoltre possibile impostare lo stile di riempimento. + + + + +Curva <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina per tracciare una linea - questo per impostare i punti iniziale e finale. È possibile impostare fino a due punti di controllo tramite il trascinamento. Per completare la curva senza utilizzare alcun punto di controllo, o solo uno, fai clic con l'altro pulsante del mouse. Lo strumento curva traccia una cubica di Bézier. + +Il &LMB; disegna utilizzando il colore di primo piano. Il &RMB; disegna utilizzando il colore di sfondo. + +È possibile inoltre impostare lo spessore della linea. + + + + +Ellisse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina per tracciare un'ellisse. + +Il &LMB; disegna utilizzando il colore di primo piano. Il &RMB; disegna utilizzando il colore di sfondo ed inverte, inoltre, il colore di riempimento dei poligoni. + +È possibile inoltre impostare lo spessore della linea e lo stile di riempimento. + +Per funzionalità aggiuntive, utilizzare i tasti modificatori: + + + +Tieni premuto &Shift; e trascina per disegnare un cerchio. + + +Per disegnare un'ellisse con un centro a tua scelta, tieni premuto &Ctrl;, fai clic sul punto centrale, e trascina il mouse finché l'ellisse non raggiunge la forma e le dimensioni corrette. + + +Per disegnare un cerchio con un centro a tua scelta, tieni premuto &Ctrl;, fai clic sul punto centrale, e trascina il mouse finché il cerchio non raggiunge le dimensioni corrette. + + + + + + +Gomme per cancellare + + +Gomma <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina con la gomma per cancellare gli errori. + + +A differenza di altri strumenti, le gomme disegnano utilizzando il colore di sfondo. Per disegnare con il colore di primo piano, usare il &RMB;. + + +La gomma ha solamente forme quadrate. Per disegnare con altre forme come ad esempio cerchio, utilizzare il Pennello ed il &RMB;. + + +Fai doppio clic sull'icona della gomma per cancellare l'intera immagine. È equivalente all'utilizzo dell'opzione Pulisci nel menu Immagine. + + + + + +Gomma per colore <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina per sostituire i pixel aventi il colore di primo piano con il colore di sfondo. Per sostituire tutti i pixel aventi colore simile (ma non necessariamente uguale) a quello di primo piano, come ad esempio nel caso di immagini e foto retinate, impostare Somiglianza colore ad un valore diverso da Corrispondenza esatta. + + +A differenza di altri strumenti, le gomme disegnano utilizzando il colore di sfondo. Per sostituire i pixel aventi il colore di primo piano con il colore di sfondo, usare il &RMB;. + + +È possibile configurare la dimensione della gomma. + + +Fai doppio clic sull'icona della Gomma per colore per applicarne l'effetto all'intera immagine. + + + + + + +Riempimento <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic per riempire una regione. Per riempire una regione retinata, imposta Somiglianza colore ad un valore diverso da Corrispondenza esatta. + +Il &LMB; riempie utilizzando il colore di primo piano. Il &RMB; riempie utilizzando il colore di sfondo. + + + +Linea <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina per tracciare una linea. + +Il &LMB; disegna utilizzando il colore di primo piano. Il &RMB; disegna utilizzando il colore di sfondo. + +È possibile inoltre impostare lo spessore della linea. + + + + + + + + + + + + + + + + + + + + + +Tieni premuto &Ctrl; per tracciare linee orientate secondo angoli multipli di 30 gradi - sono le linee nel diagramma rosso. + + +Tieni premuto &Shift; per tracciare linee orientate secondo angoli multipli di 45 gradi - sono le linee nel diagramma blu. + + +Tieni premuto &Ctrl; e &Shift; per tracciare linee orientate secondo angoli multipli di 30 o 45 gradi - sono le linee nel diagramma verde. + + + + + + +Penna <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic per disegnare un punto e trascina per disegnare una linea a mano libera. + +Il &LMB; disegna utilizzando il colore di primo piano. Il &RMB; disegna utilizzando il colore di sfondo. + + + + +Rettangoli <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina per disegnare un rettangolo. Il Rettangolo smussato è un rettangolo con i bordi arrotondati. + +Il &LMB; disegna utilizzando il colore di primo piano. Il &RMB; disegna utilizzando il colore di sfondo ed inverte, inoltre, il colore di riempimento dei poligoni. + +È possibile inoltre impostare lo spessore della linea e lo stile di riempimento. + +Per funzionalità aggiuntive, utilizzare i tasti modificatori: + + + +Tieni premuto &Shift; e trascina per disegnare un quadrato. + + +Per disegnare un rettangolo con un centro a tua scelta, tieni premuto &Ctrl;, fai clic sul punto centrale e trascina il mouse finché il rettangolo non raggiunge la forma e le dimensioni corrette. + + +Per disegnare un quadrato con un centro a tua scelta, tieni premuto &Ctrl; e &Shift;, fai clic sul punto centrale e trascina il mouse finché il quadrato non raggiunge le dimensioni corrette. + + + + + + +Tipi di selezione <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Utilizza lo strumento di selezione per impostare il contorno di una selezione. + +Per spostare la selezione, fai clic e trascinala. La finestra principale si adatterà di conseguenza, permettendo lo spostamento della selezione a parti dell'immagine correntemente non visualizzate. + +È possibile ridimensionare l'intera immagine oppure scalare con cura la selezione, utilizzando le maniglie corrispondenti. Tenendo &Shift; premuto durante il ridimensionamento a mano libera della selezione, questa mantiene le proporzioni. Il &RMB; attiva un menu contestuale con comandi di uso comune del menu Modifica e di effetti delle immagini. + + +È possibile usare i tasti cursore mentre si tracciano i contorni di una selezione, o durante il suo spostamento. + + +Se tieni premuto &Ctrl; prima di spostare la selezione, ne verrà spostata una copia. La selezione verrà "spalmata" se viene spostata mentre il tasto &Shift; è premuto. + + + + + + + + + + + + + +Sono disponibili due modalità per la selezione: opaco (predefinita) e trasparente. Utilizzando la modalità di selezione trasparente, tutti i pixel del colore di sfondo saranno trasparenti (sottrazione dello sfondo). Ciò permette di incollare una selezione senza lo sfondo. Per effettuare una sottrazione dello sfondo su un'immagine retinata, impostare Somiglianza colore ad un valore diverso da Corrispondenza esatta. + + + + + + +È possibile applicare gli Effetti immagine ad una selezione - vedere la sezione Effetti immagine per maggiori informazioni. + +È possibile salvare la selezione in un file tramite la voce Copia su file... dal menu contestuale della selezione o la voce ModificaCopia su file... dal menu principale. + + + +Bomboletta spray <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina per tracciare un graffito. Tenendo premuto il mouse si ottiene uno spruzzo di colore più concentrato. + + + + + + + + + + + + + +Fai clic su una delle forme per selezionare la dimensione dello spruzzo. È possibile scegliere, come dimensione dello spruzzo, 9x9, 17x17 e 29x29. + + + + + + +Il &LMB; disegna utilizzando il colore di primo piano. Il &RMB; disegna utilizzando il colore di sfondo. + + + + +Testo <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Fai clic e trascina un'area in cui scrivere testo. Non appena appare il bordo puoi iniziare a scrivere il testo. Fai clic e trascina sul bordo per spostarla. È possibile ridimensionare la casella di testo tramite il trascinamento, oppure utilizzando la finestra di dialogo Ridimensiona. + + +Se hai deselezionato una casella di testo puoi utilizzare Annulla per modificare nuovamente il testo. + + + +Utilizzo del colore trasparente + + + + + + + + +La figura a sinistra mostra l'immagine di esempio. La figura di destra mostra l'aggiunta di un testo con colori di primo piano e di sfondo opachi. + + + + + + + + + +La figura di sinistra mostra l'aggiunta di un testo con colore di primo piano opaco e colore di sfondo trasparente. La figura di destra mostra l'aggiunta di un testo con colore di primo piano trasparente e colore di sfondo opaco. + + + + +Opzioni comuni degli strumenti + + + + + + + + + + + + + +Fai clic su uno dei quadrati per impostare la dimensione della gomma. È possibile scegliere tra quadrati aventi lato pari a 2, 3, 5, 9, 17 e 29 pixel. + +L'impostazione della dimensione della gomma influenza le Gomme per cancellare. + + + + + + + + + + + +Fai clic su una delle linee per impostare lo spessore della linea. È possibile scegliere, come spessore della linea, 1, 2, 3, 5 e 8 pixel. + +L'impostazione dello spessore della linea influenza gli strumenti: Linee connesse, Curva, Ellisse, Linea, Poligono, Rettangolo e Rettangolo smussato. + + + + + + + + + + + +Fai clic su uno dei rettangoli per impostare lo stile di riempimento. È possibile scegliere tra Nessun riempimento, Riempi con colore di sfondo e Riempi con colore di primo piano. L'impostazione dello stile di riempimento influenza gli strumenti Ellisse, Poligono, Rettangolo, Rettangolo smussato. + + + + + + + + + + +Lavorare con il colore + + +La casella dei colori + + + + + + + +Casella dei colori + + + + +La casella dei colori ha 3 sezioni principali: il pannello dei colori, la tavolozza dei colori ed il selettore di somiglianza del colore. + +Il pannello dei colori mostra il colore di primo piano corrente come un quadrato posto sopra un altro quadrato, che rappresenta invece il colore di sfondo. Quando si disegna utilizzando il &LMB;, viene utilizzato il colore di primo piano, e quando si disegna con il &RMB;, viene utilizzato il colore di sfondo (ad eccezione delle Gomme per cancellare). È possibile fare clic sulla freccia a doppia punta per scambiare i colori di primo piano e di sfondo. + +La tavolozza dei colori mostra una selezione di colori tra i quali scegliere. La piramide traslucida rappresenta il colore trasparente. Fare clic con il pulsante sinistro su un colore per impostare il colore di primo piano, e fare clic con il pulsante destro su un colore per impostare il colore di sfondo. È possibile inoltre trascinare un qualsiasi colore opaco sul quadrato del pannello dei colori. Per modificare un colore nel pannello dei colori o nella tavolozza, fare doppio clic su di esso. Lo strumento Selettore di colore permette di scegliere il colore da un'immagine. + +Somiglianza del colore permette di lavorare in modo più efficace con immagini e foto retinate, in modo simile alla funzione Bacchetta magica di altri programmi di disegno. Si applica alle selezioni trasparenti, così come agli strumenti Riempimento, Gomma per colore e Taglia automaticamente / Rimuovi bordo interno. Fare doppio clic sul selettore di somiglianza del colore per scegliere quanto colori simili debbano essere considerati identici. Quando si utilizzano le selezioni in modalità trasparente, ogni colore della selezione simile al colore di sfondo verrà reso trasparente. + + + + + + + + + +La figura a sinistra mostra l'immagine di esempio. Le figure a destra mostrano l'uso di un riempimento, con impostazioni di somiglianza del colore rispettivamente di 5%, 15% e 30%. In questo esempio, con un'impostazione di somiglianza del colore pari a Esatta, un riempimento a partire da (80, 100) non riempirà solo un pixel, dato che i pixel adiacenti sono simili ma non identici. Incrementando la somiglianza del colore, un numero maggiore di pixel che sono simili nel colore sono considerati identici, per cui il riempimento si estende ulteriormente. + + + + + +Opzioni di visualizzazione + + +Guida alle opzioni di visualizzazione + +Ingrandimento e griglia +Miniatura + + + + +Ingrandimento e griglia +Incrementare il livello di ingrandimento per modificare le immagini con maggiore precisione, o ridurlo per vedere una porzione maggiore dell'immagine. + + +Usando livelli di ingrandimento non multipli del 100%, alcune parti dell'immagine potrebbero sembrare in movimento quando l'utente interagisce con esse. A questi livelli di ingrandimento possono inoltre verificarsi altri difetti minori nel disegno dell'immagine. + + +Ai livelli di ingrandimento del 400% o superiori, sempre multipli di 100%, è possibile selezionare Mostra griglia per modificare in modo più accurato i singoli pixel. + + + + + + + + + + + + + + + +La prima figura mostra l'icona dello strumento Testo, mentre quella successiva mostra la stessa icona al fattore di ingrandimento 600% con la griglia attiva. + + +Un altro modo di ingrandire mentre non si disegna consiste nel ruotare la rotellina del mouse tenendo premuto il tasto &Ctrl;. + + + + + +Miniatura + + + + + + + +Se la Modalità a miniatura ingrandita è selezionata, viene visualizzata l'intera immagine scalata opportunamente per riempire la finestra della miniatura (figura in alto a destra). +Altrimenti, la miniatura mostra quanto più possibile dell'immagine, partendo dall'angolo in alto a sinistra della finestra principale (figura in basso a destra). + + + + + +Effetti immagine + + +Guida agli effetti immagine. +Taglia automaticamente / Rimuovi bordo interno +Bilanciamento +Pulisci +Sbalza +Appiattisci +Ribalta (sottosopra) +Inverti +Riduci colori +Riduci a scala di grigi +Riduci a monocromatico (retinato) +Rispecchia (orizzontalmente) +Ridimensiona / scala +Ruota +Imposta come immagine (taglia) +Stira +Sfoca e metti a fuoco +Più effetti +Note + + + +Taglia automaticamente / Rimuovi bordo interno + +Rimuove automaticamente i bordi di un'immagine o di una selezione. Si utilizza Taglia automaticamente quando si lavora con una figura che non riempie l'intera immagine o selezione e si vuole rimuovere lo spazio bianco in eccesso. Per utilizzare questa funzionalità con un bordo retinato, bisogna utilizzare anche la funzione Somiglianza del colore. + + + + +Bilanciamento + +Questa funzionalità è accessibile dalla finestra di dialogo Più effetti. + + + + + + + + +Permette di impostare luminosità, contrasto e gamma di un'immagine o di una selezione. + + +Il valore più comuni di gamma (un decimale compreso tra 0,10 e 10,00) è visualizzato tra la casella numerica Gamma ed il pulsante Reimposta. + + + + +Pulisci + +Riempie con il colore di sfondo l'intera immagine o la selezione. + + +Fai doppio clic sull'icona della gomma per cancellare l'intera immagine. + + + + + +Sbalza + +Questa funzionalità è accessibile dalla finestra di dialogo Più effetti. + + + + + + + + +Selezionare Abilita per applicare l'effetto Sbalza. Esso fa risaltare i bordi e conferisce all'immagine o alla selezione un "effetto incisione". + + + +Appiattisci + +Questa funzionalità è accessibile dalla finestra di dialogo Più effetti. + + + + + + + + +Ricolora l'immagine con varie sfumature dei due colori selezionati. + + + +Ribalta (sottosopra) + +Ribalta orizzontalmente o verticalmente l'intera immagine o la selezione. + + + + +Inverti + +Questa funzionalità è accessibile dalla finestra di dialogo Più effetti. + + + + + + + + +Permette di invertire uno o più canali RGB nell'immagine o nella selezione. Seleziona Tutto per trasformare una foto nel suo negativo e viceversa. Normalmente, l'effetto finale è divertente. + + +Per invertire rapidamente tutti i canali, non è necessario utilizzare questa finestra di dialogo. È possibile invece accedere alla voce Inverti colori nel menu Immagine o Selezione. La voce Selezione è presente nella barra dei menu solo se usi uno degli strumenti di selezione. Puoi anche raggiungere questa azione dal menu contestuale che si apre facendo clic con il &RMB; nell'area dell'immagine. + + + + + +Rispecchia (orizzontalmente) + +Rispecchia orizzontalmente l'intera immagine o la selezione. + + + + +Riduci colori + +Questa funzionalità è accessibile dalla finestra di dialogo Più effetti. + + + + + + + + +Riduce il numero di colori utilizzato dall'immagine o dalla selezioni, con o senza retinatura. + +L'uso della retinatura di solito porta ad una migliore qualità, tuttavia potrebbe essere desiderabile disabilitarla per particolari effetti artistici; utilizzando ⪚Monocromatico invece di Monocromatico (retinato) si ottiene un effetto silhouette. + +Un'altra differenza importante è che mentre Monocromatico (retinato) trasforma sempre l'intera immagine o selezione in bianco e nero, Monocromatico farà ciò solo se l'immagine o la selezione contiene più di due colori. + + +Per ottenere velocemente un'immagine o selezione monocromatica e retinata, utilizzare la voce Riduci a monocromatico (retinato) nel menu Immagine o Selezione. La voce Selezione è presente nella barra dei menu solo se usi uno degli strumenti di selezione. Puoi anche raggiungere questa azione dal menu contestuale che si apre facendo clic con il &RMB; nell'area dell'immagine. + + + +Cambiare il numero di colori non ha alcun effetto sulla profondità di colore del formato del file. Se si desidera cambiare la profondità del colore, questa deve essere selezionata nella finestra di dialogo di salvataggio del file. Nota come, al contrario, un cambiamento della profondità di colore modifica anche il numero dei colori. + + + + +Riduci a scala di grigi + +Riduce a scala di grigi l'intera immagine o la selezione. + + + + +Riduci a monocromatico (retinato) + +Riduce in bianco e nero l'intera immagine o la selezione. + + +Se non si desidera che l'immagine o la selezione sia retinata, utilizzare la finestra di dialogo Riduci colori. + + + + +Ridimensiona / scala + + + + + + + + + +Il ridimensionamento di un'immagine ne cambia le dimensioni senza applicare una trasformazione al contenuto della stessa. L'operazione di riscalatura di un'immagine ne stira il contenuto fino a coprire le nuove dimensioni. Scala con cura normalmente restituisce risultati di qualità migliore rispetto a Scala, fondendo i colori vicini. + +È possibile esprimere la nuova dimensione in pixel, o come percentuale della dimensione originale. Se si seleziona Mantieni rapporto immagine, la larghezza e l'altezza saranno riscalate della stessa dimensione. + + +È possibile eseguire l'operazione Ridimensiona sull'intera immagine, oppure Scala con cura sulla selezione usando le maniglie corrispondenti. + + + +Per le selezioni è supportata solo la riscalatura, mentre per le caselle di testo è supportato unicamente il ridimensionamento. Vedere le note per maggiori dettagli sull'applicazione di questi effetti. + + + + +Ruota + + + + + + + + + +Ruota l'immagine. È possibile specificare l'angolo e la direzione di rotazione. + + +È possibile invertire la direzione di rotazione specificando un angolo personalizzato negativo. + + + +Vedere le note per maggiori dettagli sull'applicazione di questo effetto alle selezioni. + + + + +Imposta come immagine (taglia) + +Imposta come immagine la selezione corrente + + +Questa funzionalità è disponibile solamente quando è presente una selezione. + + + + +Stira + + + + + + + + + +Stira orizzontalmente e/o verticalmente l'intera immagine o una selezione. + + +Vedere le note per maggiori dettagli sull'applicazione di questo effetto alle selezioni. + + + + +Sfoca e metti a fuoco + +Questa funzionalità è accessibile dalla finestra di dialogo Più effetti. + + + + + + + + +Usare questo effetto per sfocare o mettere a fuoco un'immagine. + + + + +Più effetti + +Questa finestra di dialogo racchiude le funzionalità: Bilanciamento, Sbalza, Appiattisci, Inverti, Riduci colori e Sfoca e metti a fuoco. + + + +Note + +Ridimensiona / scala, Ruota e Stira possono cambiare le dimensioni dell'immagine. È possibile visualizzare le nuove dimensioni nella finestra di dialogo. + +Applicando questi effetti ad un'immagine, questa sarà ridimensionata se necessario. Tuttavia, se si applicano questi effetti ad una selezione, l'immagine non sarà ridimensionata, anche se la selezione, una volta applicata la trasformazione, non dovesse entrare nella figura. + + + + + + + + + +L'immagine di sinistra è stata ruotata di 30 gradi in senso orario, generando così l'immagine di destra. &kolourpaint; ha allargato automaticamente l'immagine per poterla contenere interamente. + + + + + + + + + +La selezione di sinistra è stata ruotata di 30 gradi in senso orario, generando così la selezione di destra. La dimensione dell'immagine non è variata, per cui parte della selezione potrebbe non essere visibile senza utilizzare l'operazione Ridimensiona sull'immagine. + + + + + +Riconoscimenti e licenza + +Carl Tucker +Potrebbe non essere una documentazione concisa, potrebbe non essere una documentazione completa, ma è comunque un'onesta documentazione. + + +&kolourpaint; +Copyright del programma © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Icone specifiche di &kolourpaint; Copyright © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Documentazione e illustrazioni aggiuntive della documentazione Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail;. + +Parti riprodotte con autorizzazione da . + +Luigi Toscano luigi.toscano@tiscali.it (Traduzione della documentazione) &underFDL; Il programma è rilasciato secondo i seguenti termini: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; +
            + + diff --git a/po/it/kolourpaint.po b/po/it/kolourpaint.po new file mode 100644 index 0000000..1ee7b1d --- /dev/null +++ b/po/it/kolourpaint.po @@ -0,0 +1,3451 @@ +# translation of kolourpaint.po to Italian +# Daniele Medri , 2003. +# Federico Cozzi , 2004, 2005. +# Luciano Montanaro , 2004. +# Federico Zenith , 2004, 2005. +# Luigi Toscano , 2005, 2007, 2008, 2009, 2011, 2012, 2013, 2015, 2016, 2017, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-10 00:21+0200\n" +"Last-Translator: Luigi Toscano \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 20.12.0\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" +"Luigi Toscano,Federico Zenith,Federico Cozzi,Andrea Rizzi,Daniele Medri," +"Luciano Montanaro" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "luigi.toscano@tiscali.it,federico.zenith@member.fsf.org,,,," + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Bilanciamento" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Sfoca" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Metti a fuoco" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Pulisci" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selezione: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Sbalza" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Appiattisci" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Riduci a scala di grigi" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Tonalità, saturazione, valore (HSV)" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inverti colori" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverti" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Riduci a monocromatico (retinato)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Riduci a monocromatico" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Riduci a 256 colori (retinato)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Riduci a 256 colori" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Equalizzatore dell'istogramma" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Ribalta" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Ribalta orizzontalmente e verticalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Ribalta orizzontalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Ribalta verticalmente" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Testo: ridimensiona rettangolo" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selezione: scala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selezione: scala accuratamente" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Ridimensiona" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Scala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Scala con cura" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Ruota" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Stiramento" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Annulla: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Annulla" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Rifai: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Rifai" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Annulla: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Annulla" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Rifai: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Rifai" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "Un'altra voce" +msgstr[1] "Altre %1 voci" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Selettore di colore" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Riempimento" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Più effetti immagine (selezione)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Più effetti immagine" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effetto:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Riduci colori" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Sfoca o metti a fuoco" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Proprietà documento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Punti &per pollice (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Non specificato" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Orizzontale:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Verticale:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Punti per pollice (DPI) indica il numero di pixel " +"dell'immagine da stampare in un pollice (2,54cm).

            Più grande è il " +"valore dei DPI per un'immagine, più piccola sarà l'immagine stampata. Nota " +"come la tua stampante non sarà probabilmente in grado di produrre stampe ed " +"alta qualità se tale valore viene aumentato a più di 300 o 600 DPI, in base " +"alla stampante.

            Se vuoi stampare l'immagine in modo che abbia la " +"stessa dimensione visualizzata sullo schermo, imposta i valori dei DPI " +"dell'immagine pari a quello dello schermo.

            Se entrambi i valori dei " +"DPI sono pari a Non specificato l'immagine sarà stampata con la " +"stessa dimensione usata per la visualizzazione sullo schermo.

            Non " +"tutti i formati di immagine supportano i valori dei DPI. Se il formato usato " +"per il salvataggio non li supporta non saranno salvati.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "S&costamento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Lo scostamento è la posizione relativa dove l'immagine " +"dovrebbe essere posizionata rispetto alle altre immagini.

            Non tutti i " +"formati di immagine supportano la funzionalità scostamento. Se il " +"formato utilizzato per salvare l'immagine non lo supporta, il valore " +"impostato non verrà salvato.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Caselle di &testo" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Aggiungi riga" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Elimina riga" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Reimposta" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Le caselle di testo contengono informazioni supplementari " +"sull'immagine. Si tratta probabilmente di un'area dedicata ai commenti dove " +"puoi scrivere liberamente un qualsiasi testo.

            Tuttavia questo dipende " +"dal formato e di conseguenza in teoria i campi potrebbero contenere dati " +"interpretabili dal computer - che non dovresti modificare - ma è poco " +"probabile.

            Non tutti i formati di immagine supportano le caselle di " +"testo. Se il formato usato per il salvataggio non le supporta, non " +"saranno salvate.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Chiave" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valore" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Il testo «%1» nella riga %2 richiede una chiave." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Tutte le chiavi dei testi devono essere uniche. Le chiavi «%1» nelle righe " +"%2 e %3 sono identiche." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Caselle di testo non valide" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensioni" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Originale:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Anteprima" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Aggiorna" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Ridimensiona / scala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Agis&ci su:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Intera immagine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selezione" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Rettangolo di testo" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operazione" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Ridimensiona: la dimensione dell'immagine sarà aumentata " +"creando nuove aree a destra ovvero in fondo (riempite con il colore di " +"sfondo) o ridotta tagliandola a destra e/o in fondo.
            • Scala: " +"l'immagine sarà espansa duplicando i pixel o schiacciata rimuovendo i pixel." +"
            • Scala con cura: è la stessa cosa che Scala, eccetto " +"che mischia i pixel vicini per produrre un'immagine più curata.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Ridimensiona" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Scala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "S&cala con cura" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Larghezza:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Altezza:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nuovo:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Percentuale:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "M&antieni rapporto immagine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Ridimensionare la casella di testo a %1x%2 può richiedere una " +"quantità notevole di memoria. Questo può ridurre i tempi di risposta del " +"sistema e causare problemi ad altre applicazioni.

            Devo procedere " +"ugualmente al ridimensionamento della casella di testo?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Ridimensiono la casella di testo?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Ridimen&siona casella di testo" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Ridimensionare l'immagine a %1x%2 può richiedere una quantità " +"notevole di memoria. Questo può ridurre i tempi di risposta del sistema e " +"causare problemi ad altre applicazioni.

            Devo procedere ugualmente a " +"ridimensionare l'immagine?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Ridimensiono l'immagine?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Ridim&ensiona immagine" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Scalare l'immagine a %1x%2 può richiedere una quantità notevole di " +"memoria. Questo può ridurre i tempi di risposta del sistema e causare " +"problemi ad altre applicazioni.

            Devo procedere ugualmente a scalare " +"l'immagine?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Scalo l'immagine?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Scala immagin&e" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Scalare la selezione a %1x%2 può richiedere una quantità notevole di " +"memoria. Questo può ridurre i tempi di risposta del sistema e causare " +"problemi ad altre applicazioni.

            Devo procedere ugualmente a scalare la " +"selezione?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Scalo la selezione?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Scala s&elezione" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Scalare con cura la selezione a %1x%2 può richiedere una quantità " +"notevole di memoria. Questo può ridurre i tempi di risposta del sistema e " +"causare problemi ad altre applicazioni.

            Devo procedere ugualmente a " +"scalare accuratamente la selezione?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Scalo con cura l'immagine?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Scala con cura immagin&e" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Scalare con cura la selezione a %1x%2 può richiedere una quantità " +"notevole di memoria. Questo può ridurre i tempi di risposta del sistema e " +"causare problemi ad altre applicazioni.

            Devo procedere ugualmente a " +"scalare accuratamente la selezione?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Scalo con cura la selezione?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Scala con cura selezion&e" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Ruota selezione" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Ruota immagine" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Dopo la rotazione:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Verso" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "A&ntiorario" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "O&rario" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Angolo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 gra&di" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 grad&i" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &gradi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Personalizzato:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "gradi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Ruotare la selezione a %1x%2 può richiedere una quantità notevole di " +"memoria. Questo potrebbe ridurre i tempi di risposta del sistema e causare " +"problemi ad altre applicazioni.

            Devo procedere comunque a ruotare la " +"selezione?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Ruoto la selezione?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Ruota s&elezione" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Ruotare l'immagine a %1x%2 può richiedere una quantità notevole di " +"memoria. Questo potrebbe ridurre i tempi di risposta del sistema e causare " +"problemi ad altre applicazioni.

            Devo procedere comunque a ruotare " +"l'immagine?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Ruoto l'immagine?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Ruota immagin&e" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Stira selezione" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Stira immagine" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Dopo lo stiramento:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Orizzontale:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Verticale:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Stirare la selezione a %1x%2 può richiedere una quantità notevole di " +"memoria. Questo potrebbe ridurre i tempi di risposta del sistema e causare " +"problemi ad altre applicazioni.

            Devo procedere comunque a stirare la " +"selezione?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Stiro la selezione?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Stir&a selezione" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Stirare l'immagine a %1x%2 può richiedere una quantità notevole di " +"memoria. Questo potrebbe ridurre i tempi di risposta del sistema e causare " +"problemi ad altre applicazioni.

            Devo procedere comunque a stirare " +"l'immagine?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Stiro l'immagine?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Stir&a immagine" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Somiglianza colore" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Distanza nel cubo di colori &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Corrispondenza esatta" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Cos'è la somiglianza del colore?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Anteprima del salvataggio" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 byte (circa %2%)" +msgstr[1] "%1 byte (circa %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Impossibile aprire «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Impossibile aprire «%1» - formato dell'immagine non gestito.\n" +"Il file potrebbe essere danneggiato." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Impossibile salvare l'immagine - informazioni insufficienti." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Tipo MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Errore interno" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Il formato %1 potrebbe non preservare tutta l'informazione sui " +"colori dell'immagine.

            Vuoi veramente procedere al salvataggio con " +"questo formato?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Formato di file lossy" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Salvare l'immagine alla profondità di colore di %1 bit può comportare " +"la perdita di informazioni sul colore. Inoltre, la trasparenza potrebbe " +"essere perduta.

            Vuoi veramente salvare l'immagine con questa " +"profondità di colore?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Bassa profondità di colore" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Impossibile salvare l'immagine - incapace di creare un file temporaneo." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Impossibile salvare come «%1»: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Errore durante il salvataggio dell'immagine" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Impossibile salvare l'immagine - invio non riuscito." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Rimuovi b&ordo interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Rimuovi bordo interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Taglia aut&omaticamente" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Taglia automaticamente" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint non riesce a rimuovere il bordo interno della selezione, perché " +"questo non può essere identificato." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Impossibile rimuovere il bordo interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint non può tagliare l'immagine automaticamente perché il suo bordo " +"non è stato trovato." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Impossibile tagliare automaticamente" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Imposta come immagine" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selezione: crea" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programma di disegno da KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Fondatore del progetto" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Investigatore capo" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Supporto per lo scanner, supporto alpha, responsabile attuale" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Icone" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Supporto per i metodi di inserimento" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Effetti immagine" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Conversione a KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Conversione a KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Grazie ai tanti altri che hanno dato una mano per rendere possibile questo " +"programma." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "File di immagine da aprire, opzionali" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Elenca tutti i tipi MIME di immagini leggibili" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Visualizza" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Immagine" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Colori" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barra degli strumenti principale" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra degli strumenti di testo" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menu del tasto destro dello strumento di selezione" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Modifica" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" +"Trascinare la maniglia col tasto sinistro per ridimensionare l'immagine." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Ridimensionamento immagine: rilascia tutti i tasti del mouse." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Ridimensionamento immagine: Premi il tasto destro per annullare." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Testo" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Impossibile aprire la tavolozza dei colori «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Impossibile aprire la tavolozza dei colori «%1» - formato non gestito.\n" +"Il file potrebbe essere danneggiato." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Impossibile aprire la tavolozza dei colori KDE «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Impossibile salvare la tavolozza dei colori come «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Senza titolo" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Usa predefiniti di KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Usa tavolozza di KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Apri..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Ri&carica" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Salva" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Salva co&me..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Aggiungi riga" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Elimina l'ultima riga" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Casella dei colori" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"La tavolozza dei colori «%1» è stata modificata.\n" +"Vuoi salvarla?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"La tavolozza dei colori di KDE «%1» è stata modificata.\n" +"Vuoi salvarla?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"La tavolozza dei colori predefinita è stata modificata.\n" +"Vuoi salvarla?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Apri tavolozza colori" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"La tavolozza di colori «%1» è stata modificata.\n" +"Ricaricandola verranno perse tutte le modifiche fatte dall'ultimo " +"salvataggio.\n" +"Sei sicuro di voler continuare?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Ricarica" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"La tavolozza di colori di KDE «%1» è stata modificata.\n" +"Ricaricandola verranno perse tutte le modifiche.\n" +"Sei sicuro di voler continuare?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"La tavolozza di colori predefinita è stata modificata.\n" +"Ricaricandola verranno perse tutte le modifiche.\n" +"Sei sicuro di voler continuare?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Salva tavolozza di colori come" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Incolla in una &nuova finestra" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Elimina selezione" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opia su file..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Incolla &da file..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Testo: crea rettangolo" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Testo: incolla" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint non può incollare il contenuto degli appunti perché ha un " +"formato sconosciuto." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Impossibile incollare" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Testo: elimina rettangolo" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selezione: elimina" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Testo: termina" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selezione: deseleziona" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copia su file" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Incolla da file" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "Es&porta..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Scansiona..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Acquisisci schermata" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Proprietà" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Ri&carica" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Tutti i file supportati (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Apri immagine" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Apertura della finestra di scansione non riuscita." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Scansione non riuscita" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Ritardo della foto" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " secondo" +msgstr[1] " secondi" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Nessun ritardo" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Nascondi finestra principale" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Proprietà documento" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Salva immagine come" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Esporta" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Il documento «%1» è stato modificato.\n" +"Ricaricandolo verranno perse tutte le modifiche fatte dall'ultimo " +"salvataggio.\n" +"Sei sicuro di voler continuare?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Il documento «%1» è stato modificato.\n" +"Ricaricandolo verranno perse tutte le modifiche.\n" +"Sei sicuro di voler continuare?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Stampa immagine" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"L'immagine deve essere salvata prima di spedirla.\n" +"Vuoi salvarla ora?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"L'immagine «%1» è stata modificata.\n" +"Vuoi salvarla?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Ridim&ensiona / scala..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Impos&ta come immagine (taglia)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Ribal&ta (sottosopra)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Rispecchia (orizzontalmente)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Ruota..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Ruota a &sinistra" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Ruota a des&tra" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "S&tira..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Riduci a mo&nocromatico (retinato)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Riduci a scala di &grigi" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inverti colori" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Pu&lisci" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Rendi confidenziale" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Altri &effetti..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Immagine" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Selez&ione" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Mostra &percorso" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Disegna con anti-alias" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Famiglia di caratteri" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Dimensione dei caratteri" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Grassetto" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Corsivo" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Sottolineato" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Sbarrato" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Opzione dello strumento precedente (Gruppo n.1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Opzione dello strumento successiva (Gruppo n.1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Opzione dello strumento precedente (Gruppo n.2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Opzione dello strumento successiva (Gruppo n.2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Disegna opaco" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Disegna usando somiglianza del colore..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Casella degli strumenti" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Mostra &griglia" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Mostra &miniatura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Modalità a &miniatura ingrandita" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Abilita &rettangolo della miniatura" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Acquisisci immagine" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Apertura dello scanner selezionato non riuscita." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pennello" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Disegna usando pennelli di varie forme e dimensioni" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Fai clic per disegnare un punto o trascina per disegnare tratti." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Gomma per colore" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Sostituisce pixel del colore in primo piano con il colore di sfondo" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Fai clic o trascina per cancellare pixel del colore di primo piano." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Gomma" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Permette di cancellare gli errori" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Fai clic o trascina per cancellare." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Rilascia tutti i tasti del mouse." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Penna" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Disegna punti e tratti a mano libera" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Bomboletta spray" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Fai graffito" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Fai clic o trascina per fare un graffito." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Tasto destro per annullare." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Tasto sinistro per annullare." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permette di selezionare un colore dell'immagine" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Fai clic per selezionare il colore." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Riempie regioni dell'immagine" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Fai clic per riempire una regione." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Zoom avanti e indietro nell'immagine" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Fai clic per lo zoom o trascina col tasto sin. del mouse per lo zoom su " +"un'area specifica." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Curva" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Disegna curve" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Trascina fuori i punti iniziale e finale." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Trascinare col tasto sinistro per impostare il primo punto di controllo o " +"fare clic col tasto destro per finire." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Trascinare col tasto destro per impostare il primo punto di controllo o fare " +"clic col tasto sinistro per finire." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Trascinare col tasto sinistro per impostare l'ultimo punto di controllo o " +"fare clic col tasto destro per finire." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Trascinare col tasto destro per impostare l'ultimo punto di controllo o fare " +"clic col tasto sinistro per finire." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linea" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Disegna linee" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Trascina per disegnare." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Poligono" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Disegna poligoni" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Trascina per disegnare la prima linea." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Trascinare col tasto sinistro un'altra linea o fare clic col tasto destro " +"per finire." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Trascinare col tasto destro un'altra linea o fare clic col tasto sinistro " +"per finire." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Linee connesse" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Disegna linee connesse" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellisse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Disegna ellissi e cerchi" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rettangolo" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Disegna rettangoli e quadrati" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rettangolo smussato" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Disegna rettangoli e quadrati con angoli arrotondati" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Trascina col tasto sinistro per creare una selezione." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Trascina col tasto sinistro per spostare la selezione." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Trascina col tasto sinistro per scalare la selezione." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selezione: opaca" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selezione: trasparente" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selezione: colore trasparente" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selezione: somiglianza del colore trasparente" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selezione (ellittica)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Esegue una selezione ellittica o circolare" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selezione (a mano libera)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Esegue una selezione a mano libera" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selezione (rettangolare)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Esegue una selezione rettangolare" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selezione: sposta" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Spalma" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Scrive testo" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Testo: Spazio indietro" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Testo: Cancella" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Testo: nuova riga" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Testo: scrivi" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Trascina col tasto sinistro per creare un rettangolo di testo." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Trascina col tasto sinistro per spostare il rettangolo di testo." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Testo: sposta rettangolo" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Trascina col tasto sinistro per ridimensionare un rettangolo di testo." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Fai clic col tasto sinistro per cambiare la posizione del cursore." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Testo: sfondo opaco" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Testo: sfondo trasparente" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Testo: scambia colori" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Testo: colore di primo piano" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Testo: colore di sfondo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Testo: carattere" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Testo: dimensione carattere" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Testo: grassetto" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: corsivo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Testo: sottolineato" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Testo: sbarrato" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Modalità non ingrandita - miniatura" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - miniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            La somiglianza dei colori dice quanto devono essere simili i colori di pixel differenti perché siano considerati identici dalle " +"operazioni.

            Se la imposti a qualcosa di diverso da Esatta, puoi " +"lavorare più efficacemente con immagini e foto retinate, in maniera analoga " +"alla funzione \"bacchetta magica\" di altri programmi di disegno.

            Questa funzionalità si applica a:

            • Selezioni: in " +"modalità trasparente ogni colore nella selezione che è simile " +"al colore di sfondo sarà reso trasparente.
            • Riempimento: per " +"regioni con pixel colorati simili - ma non identici, un valore più " +"alto riempirà probabilmente un numero maggiore di pixel.
            • Gomma " +"per colore: ogni pixel il cui colore è simile al colore di primo " +"piano sarà rimpiazzato con il colore di sfondo.
            • Taglia " +"automaticamente e rimuovi bordo interno: per i bordi con pixel " +"colorati simili - ma non identici, è più probabile che un valore più " +"alto tagli via l'intero bordo.

            Valori più alti vuol dire che le " +"operazioni considerano un intervallo più ampio di colori come " +"sufficientemente simili e di conseguenza uguali. Perciò dovresti " +"aumentare l'impostazione se le operazioni succitate non agiscono su pixel i " +"cui colori tu ritieni essere abbastanza simili.

            Tuttavia, se l'effetto " +"delle operazioni risulta eccessivo e vengono modificati pixel con colori che " +"tu non ritieni simili (ad es. se riempimento modifica troppi pixel), " +"dovresti diminuire tale impostazione.

            Per configurarla, fai clic sul " +"cubo.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            La somiglianza dei colori dice quanto devono essere simili i colori di pixel differenti perché siano considerati identici dalle " +"operazioni.

            Se la imposti a qualcosa di diverso da Esatta, puoi " +"lavorare più efficacemente con immagini e foto retinate, in maniera analoga " +"alla funzione \"bacchetta magica\" di altri programmi di disegno.

            Questa funzionalità si applica a:

            • Selezioni: in " +"modalità trasparente ogni colore nella selezione che è simile " +"al colore di sfondo sarà reso trasparente.
            • Riempimento: per " +"regioni con pixel colorati simili - ma non identici, un valore più " +"alto riempirà probabilmente un numero maggiore di pixel.
            • Gomma " +"per colore: ogni pixel il cui colore è simile al colore di primo " +"piano sarà rimpiazzato con il colore di sfondo.
            • Taglia " +"automaticamente e rimuovi bordo interno: per i bordi con pixel " +"colorati simili - ma non identici, è più probabile che un valore più " +"alto tagli via l'intero bordo.

            Valori più alti vuol dire che le " +"operazioni considerano un intervallo più ampio di colori come " +"sufficientemente simili e di conseguenza uguali. Perciò dovresti " +"aumentare l'impostazione se le operazioni succitate non agiscono su pixel i " +"cui colori tu ritieni essere abbastanza simili.

            Tuttavia, se l'effetto " +"delle operazioni risulta eccessivo e vengono modificati pixel con colori che " +"tu non ritieni simili (ad es. se riempimento modifica troppi pixel), " +"dovresti diminuire tale impostazione.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Somiglianza del colore: %1%

            Fai clic per " +"configurare.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Somiglianza del colore: corrispondenza esatta

            Fai " +"clic per configurare

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Luminosità:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Reimpo&sta" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntrasto:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Reimpos&ta" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "C&anali:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Tutti" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rosso" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blu" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Reimpost&a tutti i valori" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Impostazioni" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Quantità:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Abilita" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Colori" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "To&nalità:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturazione:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valore:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rosso" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Verde" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blu" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Tutto" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canali" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monocromatico" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nocromatico (retinato)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 co&lori" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 colo&ri (retinato)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Colore a 24 &bit" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Riduci a" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granulosità:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Per selezionare il colore di primo piano che gli strumenti useranno " +"per disegnare, fai clic su una cella di colore non vuota. Per selezionare il " +"colore di sfondo, invece, fai clic col pulsante destro.

            Per cambiare " +"il colore della cella, fai doppio clic su di essa.

            Puoi anche " +"scambiare il colore di una cella non vuota con quello di una qualsiasi altra " +"cella tramite trascinamento. E, se tieni premuto il tasto Ctrl, il " +"colore della cella di destinazione sarà sovrascritto e non, al contrario, " +"scambiato con il colore della cella di origine.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Conver&ti in:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Quali&tà:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Ante&prima" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monocromatico" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monocromatico (retinato)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 colori" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 colori (retinato)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "colore a 24 bit" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Posizione i&mmagine" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centro della pagina" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "In a<o a sinistra" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Trasparente" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Predefiniti di KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Colori: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Colori: %1 [modificati]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cerchio" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Quadrato" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barra inversa" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%3 %1x%2" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Nessun riempimento" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Riempi con colore di sfondo" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Riempi con colore di primo piano" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaco" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Esiste già un altro documento chiamato «%1».\n" +#~ "Vuoi sovrascriverlo?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Esiste già un'altra tavolozza di colori chiamata «%1».\n" +#~ "Vuoi sovrascriverla?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Impostare il livello di ingrandimento ad un valore che non sia multiplo " +#~ "di 100% produrrà problemi alla visualizzazione e alle operazioni di " +#~ "modifica.\n" +#~ "Devo veramente impostare il livello di ingrandimento a %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Imposta il livello di ingrandimento a %1%" + +#~ msgid "None" +#~ msgstr "Nessuno" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Ridimensionare l'immagine a %1x%2 può richiedere quantità ingenti " +#~ "di memoria. Questo può ridurre i tempi di risposta del sistema e causare " +#~ "problemi ad altre applicazioni.

            Desideri veramente continuare a " +#~ "ridimensionare l'immagine?

            " + +#~ msgid "Overwrite" +#~ msgstr "Sovrascrivi" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Impossibile aprire «%1» - tipo MIME sconosciuto." + +#~ msgid "Save Preview" +#~ msgstr "Anteprima del salvataggio" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Per ricevere assistenza, visitare il sito web." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Non è stata trovata nessuna estensione che fornisce la finestra di " +#~ "dialogo dello scanner.\n" +#~ "Di solito questo vuol dire che il pacchetto che fornisce ksaneplugin non " +#~ "è installato." + +#~ msgid "No Scanning Support" +#~ msgstr "Nessun supporto per la scansione" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Il supporto per la scansione non è installato." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            KolourPaint non può incollare il contenuto degli appunti perché i " +#~ "dati sono scomparsi inaspettatamente.

            Questo capita di solito se " +#~ "l'applicazione responsabile del contenuto degli appunti è stata chiusa." + +#~ msgid "Flip Selection" +#~ msgstr "Rifletti selezione" + +#~ msgid "Flip Image" +#~ msgstr "Rifletti immagine" + +#~ msgid "&Horizontal" +#~ msgstr "&Orizzontale" + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            L'immagine «%1» potrebbe avere più colori di quanti la modalità di " +#~ "schermo attuale possa supportare. Per la visualizzazione, alcune " +#~ "informazioni sui colori potrebbero essere perdute.

            Salvando " +#~ "l'immagine l'eventuale perdita nei colori diventerà permanente.

            Per evitare questo problema aumenta la profondità di colore ad " +#~ "almeno %2bpp e riavvia KolourPaint.


            L'immagine contiene anche " +#~ "delle informazioni di trasparenza che non sono pienamente supportate. I " +#~ "dati di trasparenza saranno approssimati con una maschera di trasparenza " +#~ "a 1 bit.

            Salvando l'immagine questa perdita di trasparenza " +#~ "diventerà permanente.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            L'immagine «%1» potrebbe avere più colori di quanti la modalità di " +#~ "schermo attuale possa supportare. Per la visualizzazione, alcune " +#~ "informazioni sui colori potrebbero essere perdute.

            Salvando " +#~ "l'immagine l'eventuale perdita nei colori diventerà permanente.

            Per evitare questo problema aumenta la profondità di colore ad " +#~ "almeno %2bpp e riavvia KolourPaint.

            " + +#~ msgid "" +#~ "

            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            L'immagine «%1» contiene delle informazioni di trasparenza che non " +#~ "sono pienamente supportate. I dati di trasparenza saranno approssimati " +#~ "con una maschera di trasparenza a 1 bit.

            Salvando l'immagine " +#~ "questa perdita di trasparenza diventerà permanente.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Impossibile aprire «%1» - terminata la memoria grafica." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Scanning Support" +#~ msgstr "Supporto per la scansione" + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            L'immagine da incollare potrebbe avere più colori di quanti la " +#~ "modalità di schermo attuale possa supportare. Per la visualizzazione, " +#~ "alcune informazioni sui colori potrebbero essere perdute.

            Salvando l'immagine l'eventuale perdita nei colori diventerà " +#~ "permanente.

            Per evitare questo problema aumenta la profondità " +#~ "di colore ad almeno %1bpp e riavvia KolourPaint.


            L'immagine " +#~ "contiene anche delle informazioni di trasparenza che non sono pienamente " +#~ "supportate. I dati di trasparenza saranno approssimati con una maschera " +#~ "di trasparenza a 1 bit.

            Salvando l'immagine questa perdita di " +#~ "trasparenza diventerà permanente.

            " + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            L'immagine da incollare potrebbe avere più colori di quanti la " +#~ "modalità di schermo attuale possa supportare. Per la visualizzazione, " +#~ "alcune informazioni sui colori potrebbero essere perdute.

            Salvando l'immagine l'eventuale perdita nei colori diventerà " +#~ "permanente.

            Per evitare questo problema aumenta la profondità " +#~ "di colore ad almeno %1bpp e riavvia KolourPaint.

            " + +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            L'immagine da incollare contiene delle informazioni di trasparenza " +#~ "che non sono pienamente supportate. I dati di trasparenza saranno " +#~ "approssimati con una maschera di trasparenza a 1 bit.

            Salvando " +#~ "l'immagine questa perdita di trasparenza diventerà permanente.

            " + +#~ msgid "

            There is nothing in the clipboard to paste.

            " +#~ msgstr "

            Non c'è nulla negli appunti che si possa incollare.

            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Usa come s&fondo (centrato)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Usa come sfondo (&Ripetuto)" + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Impossibile effettuare la scansione - terminata la memoria grafica." + +#~ msgid "Cannot Scan" +#~ msgstr "Impossibile effettuare la scansione" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Prima che l'immagine possa essere usata come sfondo, devi salvarla in un " +#~ "file locale.\n" +#~ "Vuoi salvarla ora?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Prima di poter usare questa immagine come sfondo, devi salvarla.\n" +#~ "Vuoi salvarla ora?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Impossibile modificare lo sfondo." + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Acquisizione di &schermate" + +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            Per acquisire una schermata, premi %1. La schermata sarà messa " +#~ "negli appunti e lo potrai incollare in KolourPaint.

            Puoi " +#~ "configurare la scorciatoia Schermata del desktop nel modulo delle " +#~ "impostazioni di sistema di KDE Scorciatoie della tastiera.

            In alternativa, puoi provare " +#~ "l'applicazione KSnapshot.

            " + +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            Sembra che non stai usando KDE.

            Una volta che hai caricato KDE:" +#~ "

            Per acquisire una schermata, premi %1. La " +#~ "schermata sarà messa negli appunti e lo potrai incollare in KolourPaint.

            In alternativa, puoi provare l'applicazione KSnapshot.

            " + +#~ msgid "&Flip..." +#~ msgstr "Ri&fletti..." + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Perdita di informazioni sui colori e sulle trasparenze" + +#~ msgid "Loss of Color Information" +#~ msgstr "Perdita di informazioni sui colori" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Perdita di informazioni sulle trasparenze" + +#~ msgid "" +#~ "

            KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

            To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

            " +#~ msgstr "" +#~ "

            KolourPaint non supporta la modalità di schermo corrente a %1bpp. " +#~ "KolourPaint cercherà di avviarsi ma potrebbe non funzionare in modo " +#~ "affidabile.

            Per evitare questo problema, modifica la profondità di " +#~ "colore a 24bpp e riavvia KolourPaint.

            " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Modalità dello schermo non supportata" + +#~ msgid "" +#~ "

            This effect does not support the current screen depth of %1bpp.

            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Questo effetto non supporta la modalità di schermo corrente a " +#~ "%1bpp.

            Per evitare questo problema, modifica la profondità di " +#~ "colore a 24bpp e riavvia KolourPaint.

            " + +#~ msgid "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" +#~ msgstr "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" + +#~ msgid "Selection: Transparency" +#~ msgstr "Selezione: trasparenza" + +#, fuzzy +#~| msgid "Tom Chance" +#~ msgid "Tone Enhance" +#~ msgstr "Tom Chance" + +#~ msgid "You have to restart KolourPaint for these changes to take effect." +#~ msgstr "Devi riavviare KolourPaint perché queste modifiche abbiano effetto." + +#~ msgid "Toolbar Settings Changed" +#~ msgstr "Impostazioni barra degli strumenti modificate" + +#~ msgid "Hide &Path" +#~ msgstr "Nascondi &percorso" + +#~ msgid "Hide &Grid" +#~ msgstr "Nascondi &griglia" + +#~ msgid "Hide T&humbnail" +#~ msgstr "Nascondi m&iniatura" + +#, fuzzy +#~| msgid "Reduce Colors" +#~ msgid "Reload Colors" +#~ msgstr "Riduci colori" + +#~ msgid "Low Screen Depth" +#~ msgstr "Bassa profondità di schermo" + +#~ msgid "Image Contains Translucency" +#~ msgstr "L'immagine contiene traslucenza" + +#, fuzzy +#~| msgid "" +#~| "

            Color Similarity is how close colors must be in the RGB " +#~| "Color Cube to be considered the same.

            If you set it to something " +#~| "other than Exact, you can work more effectively with dithered " +#~| "images and photos.

            This feature applies to transparent selections, " +#~| "as well as the Flood Fill, Color Eraser and Autocrop tools.

            To " +#~| "configure it, double click on the cube.

            " +#~ msgid "" +#~ "

            Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

            If you set it to something " +#~ "other than Exact Match, you can work more effectively with " +#~ "dithered images and photos.

            This feature applies to transparent " +#~ "selections, as well as the Flood Fill, Color Eraser and Autocrop / Remove " +#~ "Internal Border tools.

            To configure it, click on the cube.

            " +#~ msgstr "" +#~ "

            La somiglianza dei colori è quanto devono essere vicini i " +#~ "colori nel cubo dei colori RGB per essere considerati uguali.

            Se lo " +#~ "imposti a qualcosa di diverso da Esatta, puoi lavorare più " +#~ "efficacemente con immagini e foto retinate.

            Questa funzionalità si " +#~ "applica alle selezioni trasparenti, e anche agli strumenti Riempimento, " +#~ "Gomma per colore e Taglia automaticamente.

            Per configurarla, fai " +#~ "doppio clic sul cubo.

            " + +#, fuzzy +#~| msgid "" +#~| "

            Color Similarity is how close colors must be in the RGB " +#~| "Color Cube to be considered the same.

            If you set it to something " +#~| "other than Exact, you can work more effectively with dithered " +#~| "images and photos.

            This feature applies to transparent selections, " +#~| "as well as the Flood Fill, Color Eraser and Autocrop tools.

            " +#~ msgid "" +#~ "

            Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

            If you set it to something " +#~ "other than Exact Match, you can work more effectively with " +#~ "dithered images and photos.

            This feature applies to transparent " +#~ "selections, as well as the Flood Fill, Color Eraser and Autocrop / Remove " +#~ "Internal Border tools.

            " +#~ msgstr "" +#~ "

            La somiglianza dei colori è quanto devono essere vicini i " +#~ "colori nel cubo dei colori RGB per essere considerati uguali.

            Se lo " +#~ "imposti a qualcosa di diverso da Esatta, puoi lavorare più " +#~ "efficacemente con immagini e foto retinate.

            Questa funzionalità si " +#~ "applica alle selezioni trasparenti, e anche agli strumenti Riempimento, " +#~ "Gomma per colore e Taglia automaticamente.

            " + +#, fuzzy +#~| msgid "Paste &From File..." +#~ msgid "Use File..." +#~ msgstr "Incolla &da file..." + +#~ msgid "" +#~ "Support / Feedback:\n" +#~ "kolourpaint-support@lists.sourceforge.net\n" +#~ msgstr "" +#~ "Supporto / segnalazioni:\n" +#~ "kolourpaint-support@lists.sourceforge.net\n" + +#~ msgid "" +#~ "\n" +#~ "For support, or to report bugs and feature requests, please email\n" +#~ " - the free and friendly\n" +#~ "KolourPaint support service.\n" +#~ "\n" +#~ msgstr "" +#~ "\n" +#~ "Per ricevere supporto, o per segnalare bug e per richiedere nuove " +#~ "funzioni, scrivere a \n" +#~ " - il servizio di supporto " +#~ "gratuito e amichevole\n" +#~ " di KolourPaint\n" +#~ "\n" + +#~ msgid "" +#~ "For support, or to report bugs and feature requests, please " +#~ "email
            kolourpaint-support@lists.sourceforge.net - the free and " +#~ "friendly
            KolourPaint support service.

            " +#~ msgstr "" +#~ "Per ricevere supporto, o per segnalare bug e per richiedere nuove " +#~ "funzioni, scrivere a
            kolourpaint-support@lists.sourceforge.net - il " +#~ "servizio di supporto gratuito e amichevole
            di KolourPain

            " + +#~ msgid "Maintainer" +#~ msgstr "Responsabile" + +#~ msgid "Rashid N. Achilov" +#~ msgstr "Rashid N. Achilov" + +#~ msgid "Toyohiro Asukai" +#~ msgstr "Toyohiro Asukai" + +#~ msgid "Bela-Andreas Bargel" +#~ msgstr "Bela-Andreas Bargel" + +#~ msgid "Waldo Bastian" +#~ msgstr "Waldo Bastian" + +#~ msgid "Ismail Belhachmi" +#~ msgstr "Ismail Belhachmi" + +#~ msgid "Sashmit Bhaduri" +#~ msgstr "Sashmit Bhaduri" + +#~ msgid "Antonio Bianco" +#~ msgstr "Antonio Bianco" + +#~ msgid "Stephan Binner" +#~ msgstr "Stephan Binner" + +#~ msgid "Markus Brueffer" +#~ msgstr "Markus Brueffer" + +#~ msgid "Rob Buis" +#~ msgstr "Rob Buis" + +#~ msgid "Lucijan Busch" +#~ msgstr "Lucijan Busch" + +#~ msgid "Mikhail Capone" +#~ msgstr "Mikhail Capone" + +#~ msgid "Enrico Ceppi" +#~ msgstr "Enrico Ceppi" + +#~ msgid "Albert Astals Cid" +#~ msgstr "Albert Astals Cid" + +#~ msgid "Jennifer Dang" +#~ msgstr "Jennifer Dang" + +#~ msgid "Lawrence Dang" +#~ msgstr "Lawrence Dang" + +#~ msgid "David Faure" +#~ msgstr "David Faure" + +#~ msgid "P. Fisher" +#~ msgstr "P. Fisher" + +#~ msgid "Nicolas Goutte" +#~ msgstr "Nicolas Goutte" + +#~ msgid "Herbert Graeber" +#~ msgstr "Herbert Graeber" + +#~ msgid "Brad Grant" +#~ msgstr "Brad Grant" + +#~ msgid "David Greenaway" +#~ msgstr "David Greenaway" + +#~ msgid "Wilco Greven" +#~ msgstr "Wilco Greven" + +#~ msgid "Hubert Grininger" +#~ msgstr "Hubert Grininger" + +#~ msgid "Adriaan de Groot" +#~ msgstr "Adriaan de Groot" + +#~ msgid "Esben Mose Hansen" +#~ msgstr "Esben Mose Hansen" + +#~ msgid "Nadeem Hasan" +#~ msgstr "Nadeem Hasan" + +#~ msgid "Simon Hausmann" +#~ msgstr "Simon Hausmann" + +#~ msgid "Michael Hoehne" +#~ msgstr "Michael Hoehne" + +#~ msgid "Andrew J" +#~ msgstr "Andrew J" + +#~ msgid "Werner Joss" +#~ msgstr "Werner Joss" + +#~ msgid "Derek Kite" +#~ msgstr "Derek Kite" + +#~ msgid "Tobias Koenig" +#~ msgstr "Tobias Koenig" + +#~ msgid "Dmitry Kolesnikov" +#~ msgstr "Dmitry Kolesnikov" + +#~ msgid "Stephan Kulow" +#~ msgstr "Stephan Kulow" + +#~ msgid "Eric Laffoon" +#~ msgstr "Eric Laffoon" + +#~ msgid "Michael Lake" +#~ msgstr "Michael Lake" + +#~ msgid "Sebastien Laout" +#~ msgstr "Sebastien Laout" + +#~ msgid "David Ling" +#~ msgstr "David Ling" + +#~ msgid "Volker Lochte" +#~ msgstr "Volker Lochte" + +#~ msgid "Anders Lund" +#~ msgstr "Anders Lund" + +#~ msgid "Thiago Macieira" +#~ msgstr "Thiago Macieira" + +#~ msgid "Jacek Masiulaniec" +#~ msgstr "Jacek Masiulaniec" + +#~ msgid "Benjamin Meyer" +#~ msgstr "Benjamin Meyer" + +#~ msgid "Amir Michail" +#~ msgstr "Amir Michail" + +#~ msgid "Robert Moszczynski" +#~ msgstr "Robert Moszczynski" + +#~ msgid "Dirk Mueller" +#~ msgstr "Dirk Mueller" + +#~ msgid "Ruivaldo Neto" +#~ msgstr "Ruivaldo Neto" + +#~ msgid "Ralf Nolden" +#~ msgstr "Ralf Nolden" + +#~ msgid "Maks Orlovich" +#~ msgstr "Maks Orlovich" + +#~ msgid "Steven Pasternak" +#~ msgstr "Steven Pasternak" + +#~ msgid "Cédric Pasteur" +#~ msgstr "Cédric Pasteur" + +#~ msgid "Erik K. Pedersen" +#~ msgstr "Erik K. Pedersen" + +#~ msgid "Dennis Pennekamp" +#~ msgstr "Dennis Pennekamp" + +#~ msgid "Jos Poortvliet" +#~ msgstr "Jos Poortvliet" + +#~ msgid "Boudewijn Rempt" +#~ msgstr "Boudewijn Rempt" + +#~ msgid "Marcos Rodriguez" +#~ msgstr "Marcos Rodriguez" + +#~ msgid "Matt Rogers" +#~ msgstr "Matt Rogers" + +#~ msgid "Francisco Jose Canizares Santofimia" +#~ msgstr "Francisco Jose Canizares Santofimia" + +#~ msgid "Bram Schoenmakers" +#~ msgstr "Bram Schoenmakers" + +#~ msgid "Dirk Schönberger" +#~ msgstr "Dirk Schönberger" + +#~ msgid "Lutz Schweizer" +#~ msgstr "Lutz Schweizer" + +#~ msgid "Emmeran Seehuber" +#~ msgstr "Emmeran Seehuber" + +#~ msgid "Peter Simonsson" +#~ msgstr "Peter Simonsson" + +#~ msgid "Andrew Simpson" +#~ msgstr "Andrew Simpson" + +#~ msgid "A T Somers" +#~ msgstr "A T Somers" + +#~ msgid "Igor Stepin" +#~ msgstr "Igor Stepin" + +#~ msgid "Stephen Sweeney" +#~ msgstr "Stephen Sweeney" + +#~ msgid "Bart Symons" +#~ msgstr "Bart Symons" + +#~ msgid "Stefan Taferner" +#~ msgstr "Stefan Taferner" + +#~ msgid "Hogne Titlestad" +#~ msgstr "Hogne Titlestad" + +#~ msgid "Brandon Mark Turner" +#~ msgstr "Brandon Mark Turner" + +#~ msgid "Jonathan Turner" +#~ msgstr "Jonathan Turner" + +#~ msgid "Stephan Unknown" +#~ msgstr "Stephan Unknown" + +#~ msgid "Dries Verachtert" +#~ msgstr "Dries Verachtert" + +#~ msgid "Simon Vermeersch" +#~ msgstr "Simon Vermeersch" + +#~ msgid "Lauri Watts" +#~ msgstr "Lauri Watts" + +#~ msgid "Mark Wege" +#~ msgstr "Mark Wege" + +#~ msgid "Christoph Wiesen" +#~ msgstr "Christoph Wiesen" + +#~ msgid "Andre Wobbeking" +#~ msgstr "Andre Wobbeking" + +#~ msgid "Luke-Jr" +#~ msgstr "Luke-Jr" + +#~ msgid "Maxim_86ualb2" +#~ msgstr "Maxim_86ualb2" + +#~ msgid "Michele" +#~ msgstr "Michele" + +#~ msgid "Rotate 90 Degrees Counterclockwise" +#~ msgstr "Ruota di 90 grandi in senso antiorario" + +#~ msgid "Rotate 90 Degrees Clockwise" +#~ msgstr "Ruota di 90 gradi in senso orario" + +#~ msgid "Color similarity: %1%" +#~ msgstr "Somiglianza colore: %1%" + +#~ msgid "Color similarity: Exact" +#~ msgstr "Somiglianza del colore: esatta" + +#~ msgid "%1 bytes" +#~ msgstr "%1 byte" + +#~ msgid "%1 bytes (%2%)" +#~ msgstr "%1 byte (%2%)" + +#~ msgid "%1 B" +#~ msgstr "%1 B" + +#~ msgid "%1 B (%2%)" +#~ msgstr "%1 B (%2%)" + +#~ msgid "%1 B (approx. %2%)" +#~ msgstr "%1 B (circa %2%)" + +#~ msgid "%1B" +#~ msgstr "%1B" + +#~ msgid "%1B (%2%)" +#~ msgstr "%1B (%2%)" + +#~ msgid "%1B (approx. %2%)" +#~ msgstr "%1B (circa %2%)" + +#~ msgid "Custom Pen or Brush" +#~ msgstr "Penna o pennello personalizzato" diff --git a/po/ja/kolourpaint.po b/po/ja/kolourpaint.po new file mode 100644 index 0000000..73cc219 --- /dev/null +++ b/po/ja/kolourpaint.po @@ -0,0 +1,2772 @@ +# Translation of kolourpaint into Japanese. +# This file is distributed under the same license as the kdegraphics package. +# Toyohiro Asukai , 2004. +# AWASHIRO Ikuya , 2004, 2005. +# AWASHIRO Ikuya , 2005. +# Awashiro Ikuya , 2005. +# Yukiko Bando , 2006, 2007, 2008, 2009. +# Fumiaki Okushi , 2010, 2011, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2014-09-28 22:50-0700\n" +"Last-Translator: Fumiaki Okushi \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Ikuya AWASHIRO, Toyohiro Asukai" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ikuya@oooug.jp, toyohiro@ksmplus.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "バランス" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "ソフト化" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "シャープ化" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "クリア" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "選択: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "エンボス" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "フラット化" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "グレースケールに減色" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "色相、彩度、明度" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "色を反転" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "色を反転" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "モノクロに減色 (ディザリング)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "モノクロに減色" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "256 色に減色 (ディザリング)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "256 色に減色" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "ヒストグラムイコライザ" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "反転" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "上下左右に反転" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "左右反転" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "上下反転" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "テキスト: ボックスのサイズ変更" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "選択: 拡大・縮小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "選択: 滑らかな拡大・縮小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "サイズ変更" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "拡大・縮小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "滑らかな拡大・縮小" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "回転" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "傾斜" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "元に戻す(&U): %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "元に戻す(&U)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "やり直す(&R): %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "やり直す(&R)" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "元に戻す: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "元に戻す" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "やり直す: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "やり直す" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "他 %1 項目" +msgstr[1] "他 %1 項目" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "カラーピッカー" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "流し込み" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "詳細な画像効果 (選択範囲)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "詳細な画像効果" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "効果(&E):" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "減色" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "ソフト化とシャープ化" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "文書のプロパティ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "DPI(&P)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "指定なし" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "水平方向:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "垂直方向:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            DPI (Dots Per Inch) は 1 インチ (2.54cm) に印刷す" +"る画像のピクセル数を決定します。

            画像の DPI を高くするほど画像は小さく" +"印刷されます。これを 300 DPI または 600 DPI (どちらになるかはプリンタの機種に" +"依存) より大きくすると、高品質な印刷は期待できません。

            スクリーンに表示" +"されているのと同じ大きさで印刷するには、画像の DPI をスクリーンの DPI と同じ" +"値に設定してください。

            DPI が「指定なし」の場合も、スクリーン上の画像と" +"同じ大きさで印刷されます。

            【注意】 DPI の値をサポートしていない画像" +"フォーマットもあります。そのようなフォーマットで保存した場合は、DPI の値は保" +"存されません。

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "オフセット(&F)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            オフセットは、他の画像と対比してこの画像を配置する相対位置です。

            【注意】 オフセット機能をサポートしていない画像フォーマットもあります。" +"そのようなフォーマットで保存した場合は、ここで指定した値は保存されません。" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "テキストフィールド(&T)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "行を追加(&A)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "最後の行を削除(&D)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "リセット(&R)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            テキストフィールドは画像に関する付加的な情報を提供します。これはおそら" +"く自由にテキストを書き込めるコメントフィールドです。

            ただし、フォーマッ" +"ト依存なので、コンピュータが解釈するフィールである可能性もあります。この場" +"合、変更するべきではありません。ただこの可能性はまれです。

            テキスト" +"フィールドをサポートしていない画像フォーマットもあります。そのようなフォー" +"マットで保存した場合は、テキストフィールドは保存されません。

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "キー" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "値" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "%2 行目のテキストの値 “%1” はキーを必要とします。" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"テキストキーはすべて一意でなければなりません。%2 行目と %3 行目でテキスト" +"キー “%1” が重複しています。" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "無効なテキストフィールド" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "画像サイズ" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "元の画像:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "プレビュー" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "更新(&U)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "サイズ変更 / 拡大・縮小" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "対象(&T):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "画像全体" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "選択範囲" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "テキストボックス" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "操作" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • サイズ変更: 右と下 (または片方) に背景色と同じ色の新しい領域を作" +"成して画像のサイズを大きくするか、右と下 (または片方) を切り取って画像のサイ" +"ズを小さくします。
            • 拡大・縮小: ピクセルを複製して画像を拡大するか、一" +"部のピクセルを破棄して画像を縮小します。
            • 滑らかな拡大・縮小: 「拡大・" +"縮小」と同じですが、より滑らかに見えるように隣接するピクセルを混ぜ合わせま" +"す。
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "サイズ変更(&R)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "拡大・縮小(&S)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "滑らかな拡大・縮小(&M)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "幅:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "高さ:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "変更後(&N):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "比率(&P):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "アスペクト比を保つ(&A)" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            テキストボックスのサイズを %1x%2 に変更すると、大量のメモリを消費しま" +"す。
            それによって、システムや他のアプリケーションの動きが鈍くなるかもし" +"れません。

            それでもサイズ変更しますか?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "テキストボックスのサイズを変更" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "テキストボックスのサイズを変更(&E)" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            画像サイズを %1x%2 に変更すると、大量のメモリを消費します。
            それ" +"によって、システムや他のアプリケーションの動きが鈍くなるかもしれません。

            それでもサイズ変更しますか?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "画像サイズを変更" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "画像サイズを変更(&E)" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            画像を %1x%2 に拡大すると、大量のメモリを消費します。
            それによっ" +"て、システムや他のアプリケーションの動きが鈍くなるかもしれません。

            それ" +"でも画像を拡大しますか?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "画像を拡大・縮小" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "画像を拡大・縮小(&E)" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            選択範囲を %1x%2 に拡大すると、大量のメモリを消費します。
            それに" +"よって、システムや他のアプリケーションの動きが鈍くなるかもしれません。

            " +"それでも選択範囲を拡大しますか?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "選択範囲を拡大・縮小" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "選択範囲を拡大・縮小(&E)" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            画像を滑らかに %1x%2 に拡大すると、大量のメモリを消費します。
            そ" +"れによって、システムや他のアプリケーションの動きが鈍くなるかもしれません。

            それでも画像を拡大しますか?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "画像を滑らかに拡大・縮小" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "画像を滑らかに拡大・縮小(&E)" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            選択範囲を滑らかに %1x%2 に拡大すると、大量のメモリを消費します。
            それによって、システムや他のアプリケーションの動きが鈍くなるかもしれません。" +"

            それでも選択範囲を拡大しますか?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "選択範囲を滑らかに拡大・縮小" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "選択範囲を滑らかに拡大・縮小(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "選択範囲を回転" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "画像を回転" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "回転後:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "方向" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "反時計回り(&N)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "時計回り(&L)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "角度" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 度(&D)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 度(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 度(&G)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "カスタム(&U):" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "度" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the selection?

            " +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            選択範囲を %1x%2 に回転すると、大量のメモリを消費します。
            それに" +"よって、システムや他のアプリケーションの動きが鈍くなるかもしれません。

            " +"それでも選択範囲を回転しますか?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "選択範囲を回転" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "選択範囲を回転(&E)" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the image?

            " +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            画像を %1x%2 に回転すると、大量のメモリを消費します。
            それによっ" +"て、システムや他のアプリケーションの動きが鈍くなるかもしれません。

            それ" +"でも画像を回転しますか?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "画像を回転" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "画像を回転(&E)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "選択範囲を傾斜させる" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "画像を傾斜させる" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "傾斜後:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "水平方向(&H):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "垂直方向(&V):" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the selection?

            " +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            選択範囲を %1x%2 に傾斜させると、大量のメモリを消費します。
            それ" +"によって、システムや他のアプリケーションの動きが鈍くなるかもしれません。

            それでも選択範囲を傾斜させますか?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "選択範囲を傾斜させる" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "選択範囲を傾斜させる(&E)" + +# skip-rule: resource +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the image?

            " +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            画像を %1x%2 に傾斜させると、大量のメモリを消費します。
            それに" +"よって、システムや他のアプリケーションの動きが鈍くなるかもしれません。

            " +"それでも画像を傾斜させますか?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "画像を傾斜させる" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "画像を傾斜させる(&E)" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "色の類似" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "RGB カラーキューブの相違(&R)" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "完全に一致" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "色の類似とは?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "保存プレビュー" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 バイト (およそ %2%)" +msgstr[1] "%1 バイト (およそ %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "‘%1’ を開けませんでした。" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"‘%1’ を開けませんでした。サポートしていない画像フォーマットです。\n" +"ファイルが壊れている可能性があります。" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "画像を保存できませんでした。情報が不十分です。" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"MIME タイプ: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<空>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "内部エラー" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            %1 フォーマットでは、すべての色情報を保存できない可能性がありま" +"す。

            それでもこのフォーマットで保存しますか?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "非可逆ファイルフォーマット" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            少ない色数の %1-bit で画像を保存すると、色情報が失われてしまいます。透" +"過性も失われる可能性があります。

            それでもこの色数で保存しますか?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "色数が足りません" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "画像を保存できませんでした。一時ファイルを作成できません。" + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "‘%1’ に保存できませんでした。" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "画像を保存できませんでした。アップロードに失敗しました。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "選択範囲の余白を除去(&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "選択範囲の余白を除去" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "自動トリミング(&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "自動トリミング" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "余白を見つけられないので、選択範囲の余白を除去できません。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "余白を除去できません。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "余白を見つけられないので、余白を除去して自動トリミングできません。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "自動トリミングできません。" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "画像にセットする" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "選択: 作成" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "KDE のペイントプログラム" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "プロジェクトの創始者" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "主任研究者" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "アイコン" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "入力メソッドのサポート" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "画像効果" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 への移植" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "KDE 4 への移植" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "このプログラムの開発を助けてくれた他の多くの方々にも感謝します。" + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "開く画像ファイル" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "表示(&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "画像(&I)" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "色(&C)" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "メインツールバー" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "書式ツールバー" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "選択ツールの右ボタンメニュー" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "編集(&E)" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "サムネイル" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "左ボタンでハンドルをドラッグして画像サイズを変更します。" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "画像サイズ変更: すべてのマウスボタンをはなしてください。" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "画像サイズ変更: 右クリックでキャンセルします。" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "テキスト" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "カラーパレット “%1” を開けませんでした。" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"カラーパレット “%1” を開けませんでした。サポートされていない画像フォーマット" +"です。\n" +"ファイルが壊れている可能性があります。" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "KDE カラーパレット “%1” を開けませんでした。" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "カラーパレットを ‘%1’ に保存できませんでした。" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "名前なし" + +# ACCELERATOR added by translator +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "KolourPaint の標準色を使う(&U)" + +# ACCELERATOR added by translator +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE の色を使う(&K)" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "開く(&O)..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "再読み込み(&D)" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "保存(&S)" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "名前を付けて保存(&A)..." + +# ACCELERATOR added by translator +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "行を追加(&R)" + +# ACCELERATOR added by translator +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "最後の行を削除(&L)" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "カラーボックス" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"カラーパレット “%1” が変更されています。\n" +"保存しますか?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE のカラーパレット “%1” が変更されています。\n" +"ファイルに保存しますか?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"標準のカラーパレットが変更されています。\n" +"ファイルに保存しますか?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "カラーパレットを開く" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"カラーパレット “%1” が変更されています。\n" +"再読み込みすると、最後に保存した以降のすべての変更が失われます。\n" +"本当に再読み込みしますか?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "再読み込み(&R)" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE のカラーパレット “%1” が変更されています。\n" +"再読み込みすると、すべての変更が失われます。\n" +"本当に再読み込みしますか?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"標準のカラーパレットが変更されています。\n" +"再読み込みすると、すべての変更が失われます。\n" +"本当に再読み込みしますか?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "名前を付けてカラーパレットを保存" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "新しいウィンドウに貼り付け(&N)" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "選択範囲を削除(&D)" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "ファイルにコピー(&O)..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "ファイルから貼り付け(&F)..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "テキスト: ボックスを作成" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "テキスト: 貼り付け" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "貼り付けできません" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "テキスト: ボックスを削除" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "選択: 削除" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "テキスト: 終了" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "選択: 選択解除" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "ファイルにコピー" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "ファイルから貼り付け" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "エクスポート(&X)..." + +# ACCELERATOR added by translator +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "スキャン(&K)..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "スクリーンショットを撮影" + +# ACCELERATOR added by translator +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "プロパティ(&E)" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "再読み込み(&D)" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "画像を開く" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " 秒" +msgstr[1] " 秒" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "遅れなし" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "メインウィンドウを隠す" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "文書のプロパティ" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "名前を付けて画像を保存" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "エクスポート" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"文書 “%1” は変更されています。\n" +"再読み込みすると、最後に保存した以降のすべての変更が失われます。\n" +"本当に再読み込みしますか?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"文書 “%1” は変更されています。\n" +"再読み込みすると、すべての変更が失われます。\n" +"本当に再読み込みしますか?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "画像の印刷" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"送信する前に画像を保存しなければなりません。\n" +"保存しますか?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"文書 “%1” は変更されています。\n" +"保存しますか?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "サイズ変更 / 拡大・縮小(&E)..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "新しい画像として切り取り(&T)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "上下反転(&F)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "左右反転" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "回転(&R)..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "左に回転(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "右に回転(&T)" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "傾斜(&K)..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "モノクロに減色 (ディザリング) (&N)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "グレースケールに減色(&G)" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "色を反転(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "クリア(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "詳細な効果(&M)..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "画像(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "選択(&I)" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "パスを表示(&P)" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "フォントファミリ" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "フォントサイズ" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "ボールド" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "イタリック" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "下線" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "取り消し線" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "ツールの前のオプション (グループ #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "ツールの次のオプション (グループ #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "ツールの前のオプション (グループ #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "ツールの次のオプション (グループ #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "不透過モード(&D)" + +# ACCELERATOR added by translator +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "色の類似を使って描画(&W)..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "ツールボックス" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "グリッドを表示(&G)" + +# ACCELERATOR changed by translator +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "サムネイルを表示(&S)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "画像全体のサムネイルを表示(&M)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "サムネイルに表示域を表示(&R)" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "ズーム(&Z)" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "画像全体" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "ブラシ" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "異なる形およびサイズのブラシを使用して描く" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "クリックで点を描き、ドラッグで線を描きます。" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "色消しゴム" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "前景色のピクセルを背景色に置換" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "クリックかドラッグで前景色のピクセルを消します。" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "消しゴム" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "こすって消す" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "クリックかドラッグで消します。" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "すべてのマウスボタンをはなしてください。" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "ペン" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "点または線をフリーハンドで描く" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "スプレー缶" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "落書きスプレー" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "クリックかドラッグで落書きスプレーを使います。" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "右クリックでキャンセルします。" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "左クリックでキャンセルします。" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "画像から色を選択" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "クリックで色を選択します。" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "画像内の領域を塗りつぶす" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "クリックで領域を塗りつぶします。" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "ズーム" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "画像のズーム率を変更" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "クリックで拡大/縮小、左ドラッグで指定範囲を拡大します。" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "曲線" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "曲線を描く" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "始点から終点までドラッグします。" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "左ドラッグして最初の制御点をセットするか、右クリックで終了します。" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "右ドラッグして最初の制御点をセットするか、左クリックで終了します。" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "左ドラッグして最後の制御点をセットするか、右クリックで終了します。" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "右ドラッグして最後の制御点をセットするか、左クリックで終了します。" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "線" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "線を引く" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "ドラッグして描画します。" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "多角形" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "多角形を描く" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "ドラッグで最初の線を描きます。" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "左ドラッグで他の線を描くか、右クリックで終了します。" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "右ドラッグで他の線を描くか、左クリックで終了します。" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "折れ線" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "折れ線を引く" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "楕円" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "楕円や円を描く" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "長方形" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "長方形と正方形を描く" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "角の丸い長方形" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "角の丸い長方形と正方形を描く" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "左ドラッグで領域を選択します。" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "左ドラッグで選択範囲を移動します。" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "左ドラッグで選択範囲を拡大・縮小します。" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "選択: 不透過" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "選択: 透過" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "選択: 透過色" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "選択: 透過・色の類似" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "選択 (楕円)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "楕円形または円形の領域を選択" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "選択 (自由形状)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "フリーハンドで自由に選択" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "選択 (長方形)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "長方形を選択" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "選択: 移動" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: こすってにじませる" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "テキストを書く" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "テキスト: バックスペース" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "テキスト: 削除" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "テキスト: 改行" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "テキスト: 書く" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "左ドラッグでテキストボックスを作成します。" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "左ドラッグでテキストボックスを移動します。" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "テキスト: ボックス移動" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "左ドラッグでテキストボックスのサイズを変更します。" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "左クリックでカーソル位置を変更します。" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "テキスト: 不透過の背景" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "テキスト: 透過の背景" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "テキスト: 色を入れ替え" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "テキスト: 前景色" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "テキスト: 背景色" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "テキスト: フォント" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "テキスト: フォントサイズ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "テキスト: ボールド" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "テキスト: イタリック" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "テキスト: 下線" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "テキスト: 取り消し線" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "ズームなし - サムネイル" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - サムネイル" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, fuzzy, kde-format +#| msgid "" +#| "

            Color Similarity is how similar the colors of " +#| "different pixels must be, for operations to consider them to be the same." +#| "

            If you set it to something other than Exact Match, you can " +#| "work more effectively with dithered images and photos, in a comparable " +#| "manner to the \"Magic Wand\" feature of other paint programs.

            This " +#| "feature applies to:

            • Selections: In Transparent " +#| "mode, any color in the selection that is similar to the background " +#| "color will be made transparent.
            • Flood Fill: For regions " +#| "with similar - but not identical - colored pixels, a higher " +#| "setting is likely to fill more pixels.
            • Color Eraser: Any " +#| "pixel whose color is similar to the foreground color will be " +#| "replaced with the background color.
            • Autocrop and Remove " +#| "Internal Border: For borders with similar - but not identical " +#| "- colored pixels, a higher setting is more likely to crop the whole " +#| "border.

            Higher settings mean that operations consider an " +#| "increased range of colors to be sufficiently similar so as to be " +#| "the same. Therefore, you should increase the setting if the above " +#| "operations are not affecting pixels whose colors you consider to be " +#| "similar enough.

            However, if they are having too much of an effect " +#| "and are changing pixels whose colors you do not consider to be similar (e." +#| "g. if Flood Fill is changing too many pixels), you should decrease " +#| "this setting.

            To configure it, click on the cube.

            " +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            画像を操作する際に異なるピクセルがどれくらい似ていれば同じ色と見なすか" +"が「色の類似」です。

            「完全に一致」以外に設定すると、他のペイントプログ" +"ラムにある「マジックワンド」機能と同様に、ディザリングされた画像や写真をより" +"効率的に扱うことができます。

            これは以下の操作に適用されます。

            • 選択: 透過モードの選択では、背景色に似た色のピクセルがすべて透過に" +"なります。
            • 流し込み: よく似た (完全に同じではない) 色のピクセルが対象" +"になります。値を大きくするほど、多くのピクセルに色が流し込まれます。
            • " +"色消しゴム: 前景色に似た色のピクセルが背景色に置き換えられます。
            • 自動" +"トリミング/余白除去: よく似た (完全に同じではない) 色の余白が対象になります。" +"値を大きくするほど、余白を完全に除去しやすくなります。

            値を大きく" +"するほど、より広い範囲の色が同じ色と見なされます。したがって、あなたが十分に" +"似ていると思った色のピクセルが上の操作によって変更されない場合は、値を増やし" +"てください。

            逆に、あなたが似ていないと思った色のピクセルにまで操作が及" +"ぶ場合は (例えば流し込みによって変更されるピクセルが多すぎる場合)、値を減らし" +"てください。

            この設定はカラーキューブをクリックして変更します。

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, fuzzy, kde-format +#| msgid "" +#| "

            Color Similarity is how similar the colors of " +#| "different pixels must be, for operations to consider them to be the same." +#| "

            If you set it to something other than Exact Match, you can " +#| "work more effectively with dithered images and photos, in a comparable " +#| "manner to the \"Magic Wand\" feature of other paint programs.

            This " +#| "feature applies to:

            • Selections: In Transparent " +#| "mode, any color in the selection that is similar to the background " +#| "color will be made transparent.
            • Flood Fill: For regions " +#| "with similar - but not identical - colored pixels, a higher " +#| "setting is likely to fill more pixels.
            • Color Eraser: Any " +#| "pixel whose color is similar to the foreground color will be " +#| "replaced with the background color.
            • Autocrop and Remove " +#| "Internal Border: For borders with similar - but not identical " +#| "- colored pixels, a higher setting is more likely to crop the whole " +#| "border.

            Higher settings mean that operations consider an " +#| "increased range of colors to be sufficiently similar so as to be " +#| "the same. Therefore, you should increase the setting if the above " +#| "operations are not affecting pixels whose colors you consider to be " +#| "similar enough.

            However, if they are having too much of an effect " +#| "and are changing pixels whose colors you do not consider to be similar (e." +#| "g. if Flood Fill is changing too many pixels), you should decrease " +#| "this setting.

            " +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            画像を操作する際に異なるピクセルがどれくらい似ていれば同じ色と見なすか" +"が「色の類似」です。

            「完全に一致」以外に設定すると、他のペイントプログ" +"ラムにある「マジックワンド」機能と同様に、ディザリングされた画像や写真をより" +"効率的に扱うことができます。

            これは以下の操作に適用されます。

            • 選択: 透過モードの選択では、背景色に似た色のピクセルがすべて透過に" +"なります。
            • 流し込み: よく似た (完全に同じではない) 色のピクセルが対象" +"になります。値を大きくするほど、多くのピクセルに色が流し込まれます。
            • " +"色消しゴム: 前景色に似た色のピクセルが背景色に置き換えられます。
            • 自動" +"トリミング/余白除去: よく似た (完全に同じではない) 色の余白が対象になります。" +"値を大きくするほど、余白を完全に除去しやすくなります。

            値を大きく" +"するほど、より広い範囲の色が同じ色と見なされます。したがって、あなたが十分に" +"似ていると思った色のピクセルが上の操作によって変更されない場合は、値を増やし" +"てください。

            逆に、あなたが似ていないと思った色のピクセルにまで操作が及" +"ぶ場合は (例えば流し込みによって変更されるピクセルが多すぎる場合)、値を減らし" +"てください。

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "

            色の類似: %1%

            クリックして設定します。

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            色の類似: 完全に一致

            クリックして設定します。

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "明るさ(&B):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "リセット(&S)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "コントラスト(&N):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "ガンマ(&G):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "リセット(&T)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "チャンネル(&H):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "すべて" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "赤" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "緑" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "青" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "すべての値をリセット(&A)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "設定" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "量(&A):" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "有効にする(&N)" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "色" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "色相(&H):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "彩度(&S):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "明度(&V):" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "赤(&R)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "緑(&G)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "青(&B)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "すべて(&A)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "チャンネル" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "モノクロ(&M)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "モノクロ (ディザリング) (&N)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 色(&L)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 色 (ディザリング) (&R)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24 ビットカラー(&B)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "減色" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "粒度(&G):" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            色のセルを左クリックして描画ツールが使用する前景色を選択します。背景色" +"を選択するときは右クリックします。

            セル自体の色を変更するときはセルをダ" +"ブルクリックします。

            ドラッグ&ドロップで二つのセルの色を入れ替えること" +"もできます。また、Ctrl キーを押しながらドラッグ&ドロップすると、入れ替えでは" +"なく行き先のセルが元のセルの色で上書きされます。

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "変換(&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "画質(&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "プレビュー(&P)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "モノクロ" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "モノクロ (ディザリング)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 色" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 色 (ディザリング)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24 ビットフルカラー" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "画像の位置(&M)" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "ページの中央(&C)" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "ページの左上(&L)" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "透過" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint の標準色" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "色: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "色: %1 [変更されました]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "円" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "正方形" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "スラッシュ" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "バックスラッシュ" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "塗りつぶさない" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "背景色で塗りつぶす" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "前景色で塗りつぶす" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "不透過" diff --git a/po/kk/kolourpaint.po b/po/kk/kolourpaint.po new file mode 100644 index 0000000..545fb73 --- /dev/null +++ b/po/kk/kolourpaint.po @@ -0,0 +1,3004 @@ +# translation of kolourpaint4.po to Kazakh +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Sairan Kikkarin , 2008. +# Sairan Kikkarin , 2010, 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2013-01-06 04:08+0600\n" +"Last-Translator: Sairan Kikkarin \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"\n" +"X-Generator: Lokalize 1.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Сайран Киккарин" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "sairan@computer.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Баланс" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Тегістеу" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Айқындату" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Тазалау" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Таңдалғаны: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Бедерлеу" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Жазылу" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Сұр реңктерімен шектелу" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Реңкі, Қанықтығы, Мәні" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Түстерді терістеу" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Терістеу" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Жалғыз түспен шектелу (нүктелеп)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Жалғыз түспен шектелу" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "256 түспен шектелу (нүктелеп)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "256 түспен шектелу" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Гистограмма эквалайзері" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Аудару" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Аунатып төңкеру" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Аунатып аудару" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Төңкеріп аудару" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Мәтін: Өрісінің өлшемін өзгерту" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Таңдау: Масштабын өзгерту" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Таңдау: Тегіс масштабтау" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Өлшемін өзгерту" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Масштабтау" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Тегіс масштабтау" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Бұру" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Қисайту" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "'%1' амалынан қа&йту" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "Амалдан қа&йту" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "'%1' амалын қ&айталау" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "Амалды қ&айталау" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "'%1' амалынан қайту" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Амалдан қайту" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "'%1' амалын қайталау" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Амалды қайталау" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 дегеннен артық нысан" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Түсті шұқып алғыш" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Құйып толтыру" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Кескін эффектілері (таңдау)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Кескін эффектілері" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "Эфф&екті:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Түстерді шектеу" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Тегістеу & Айқындату" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Құжаттың қасиеттері" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Дюймге &шаққан нүктелер (Н/Д)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Келтірілмеген" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Жатығынан:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Тігінен:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Нүкте/Дюйм (Н/Д)Кескінді басып шығарғанда бір дюймінде " +"(2,54см) қанша пиксел орналасатынын анықтайтын параметр.

            Бұл параметр " +"неғұрлым жоғары болса, соғұрлым кескін басып шығарылғанда шағын болады. " +"Бірақ ескеріңіз: бұны 300 не 600 Н/Д дегеннен артық қойсаңыз принтеріңіз " +"ондай жоғары сапаны қамтамасыз ете алмайтыны мүмкін.

            Егер кескінді " +"экрандағыдай өлшемімен басып шығарғыңыз келсе Н/Д парметрін экранның " +"айырымдылық қабілетіне тең қылыңыз.

            Н/Д параметрін Келтірілмеген деп қойса, ол экрандағы өлшемімен басылады.

            Н/Д параметрін барша " +"кескін пішімідер міндетті түрде қолданады деп күтпеңіз. Егер таңдалған " +"пішім бұны қолданбайтын болса - параметр сақталмайды.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Шегіну" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Шегіну деген басқа кескіндерден салыстырмалы шегіну орыны.

            Шегіну параметрін барша кескін пішімідер міндетті түрде " +"қолданады деп күтпеңіз. Егер таңдалған пішім бұны қолданбайтын болса - " +"параметр сақталмайды.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Мәтін өрістері" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Жолды қ&осу" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Жолды жою" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "Ысы&рып тастау" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Мәтін өрістері деген кескін туралы қосымша мәлімет. Бұны " +"қалаған мәтінмен толтыруға болады.

            Алайда, бұл пішімге тәуелді " +"параметрі болғандықтан мұнда тиюге болмайтын компьютерге арналған мәлімет " +"сақталуы мүмкін.

            Мәтін өрістері параметрін барша кескін " +"пішімідер міндетті түрде қолданады деп күтпеңіз. Егер таңдалған пішім бұны " +"қолданбайтын болса - параметр сақталмайды.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Кілт" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Мәні" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "\"%1\" деген мәтін (%2 жолдағы) кілтті қажет етеді." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Бүкіл мәтін кілттері қайталанбайтын болу керек. \"%1\" деген кілт %2 және %3 " +"жолдарында бірдей." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Мәтін өрістері қате" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Өлшемдері" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Бастапқысы:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Нобайы" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Жаңарту" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Өлшемін / Масштабын өзгерту" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Н&ысаны:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Бүкіл кескін" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Таңдалғаны" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Мәтін өрісі" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Әрекеті" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Өлшемін өзгерту: Суреттің өлшемі оң жақ және/не төменге " +"қарай (қосылған аумақтар аясының түсімен боялып) ұлғаяды не аталған " +"жақтарынан кесіліп қысқартылады.
            • Масштабын өзгерту: Сурет " +"пикселдері қосарланып/жоғалып ұлғаяды/кішірейеді.
            • Тегіс " +"масштабтау: Бұл Масштабын өзгерту дегенмен ұқсас, бірақ суретті " +"тегістеу үшін қосарланған пикселдерінің түстері араластырылады.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Ө&згерту" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Масштабтау" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Т&егіс масштабтау" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Ені:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Биіктігі:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Жаңасы:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Пайызы:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "&Ара қатынасы сақталсын" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Мәтін өрісінің өлшемін %1x%2 қылып өзгерту көп жадын талап етеді. Ол " +"жүйеңіздің жауап беру қабілетін кемітіп, басқа қолданбаларды ресурстар " +"тапшылығына ұшыратады.

            Сонда да өлшемін өзгертпексіз бе?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Өріс өлшемін өзгерту?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Өзг&ерту" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Кескіннің өлшемін %1x%2 қылып өзгерту көп жадын талап етеді.Ол " +"жүйеңіздің жауап беру қаблетін кемітіп, басқа қолданбаларды ресурстар " +"тапшылығына ұшыратады.

            Сонда да өлшемін өзгертпексіз бе?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Өлшемін өзгерту керек пе?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Ө&згерту" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Кескіннің масштабын %1x%2 қылып өзгерту көп жадын талап етеді. Ол " +"жүйеңіздің жауап беру қабілетін кемітіп, басқа қолданбаларды ресурстар " +"тапшылығына ұшыратады.

            Сонда да масштабын өзгертпексіз бе?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Кескінді масштабтау керек пе?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Масшта&бтау" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Таңдағанның масштабын %1x%2 қылып өзгерту көп жадын талап етеді. Ол " +"жүйеңіздің жауап беру қабілетін кемітіп, басқа қолданбаларды ресурстар " +"тапшылығына ұшыратады.

            Сонда да таңдағанның масштабын өзгертпексіз бе?" +"

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Таңдағанды масштабтау керек пе?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Масштабтау" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Кескіннің масштабын %1x%2 қылып тегіс өзгерту көп жадын талап етеді. " +"Ол жүйеңіздің жауап беру қабілетін кемітіп, басқа қолданбаларды ресурстар " +"тапшылығына ұшыратады.

            Сонда да кескіннің масштабын тегістеп " +"өзгертпексіз бе?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Таңдағанды тегістеп масштабтау керек пе?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Тегістеп мас&штабтау" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Таңдағанның масштабын %1x%2 қылып тегіс өзгерту көп жадын талап " +"етеді. Ол жүйеңіздің жауап беру қабілетін кемітіп, басқа қолданбаларды " +"ресурстар тапшылығына ұшыратады.

            Сонда да таңдағанның масштабын " +"тегістеп өзгертпексіз бе?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Таңдағанды тегістеп масштабтау керек пе?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "&Тегістеп масштабтау" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Таңдағанды бұру" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Кескінді бұру" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Бұрылған:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Қалай" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Сағат тіліне қ&арсы" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Сағат &жүрісімен" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Қаншаға" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &градусқа" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 г&радусқа" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 гр&адусқа" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Нақт&ы:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "градусқа" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the selection?

            " +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Таңдағанды %1x%2 қылып бұру көп жадын талап етеді. Ол жүйеңіздің " +"жауап беру қаблетін кемітіп, басқа қолданбаларды ресурстар тапшылығына " +"ұшыратады.

            Сонда да таңдағанды бұрмақсыз ба?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Таңдалғанды бұру керек пе?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "&Бұру" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the image?

            " +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Кескінді %1x%2 қылып бұру көп жадын талап етеді. Ол жүйеңіздің жауап " +"беру қабілетін кемітіп, басқа қолданбаларды ресурстар тапшылығына ұшыратады." +"

            Сонда да кескінді бұрмақсыз ба?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Кескінді бұру керек пе?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "&Бұру" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Таңдауды қисайту" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Кескінді қисайту" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Қисайтқан:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Жатығынан:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Тігінен:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the selection?

            " +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Таңдағанды %1x%2 қылып қисайту көп жадын талап етеді. Ол жүйеңіздің " +"жауап беру қабілетін кемітіп, басқа қолданбаларды ресурстар тапшылығына " +"ұшыратады.

            Сонда да таңдағанды қисайтпақсыз ба?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Таңдағанды қисайту керек пе?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Қ&исайту" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the image?

            " +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Кескінді %1x%2 қылып қисайту көп жадын талап етеді. Ол жүйеңіздің " +"жауап беру қабілетін кемітіп, басқа қолданбаларды ресурстар тапшылығына " +"ұшыратады.

            Сонда да кескінді қисайтпақсыз ба?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Кескінді қисайту керек пе?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Қ&исайту" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Түстің ұқсастығы" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB түстер текшедегі аралығы" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Нақты тең" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Түстің ұқсастығы деген не?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Нобайын сақтау" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 байт (%2% маңайында)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "\"%1\" ашылмады." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" ашылмады - танымайтын кескін пішімі.\n" +"Мүмкін бүлінген файл шығар." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Кескін сақталмады - мәліметтері жеткіліксіз." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL-і: %1\n" +"MIME түрі: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<жоқ>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Ішкі қатесі" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            %1 пішімі кескіннің барлық түстерін сақтай алмайды.

            Сонда да осы пішімінде сақтала берсін бе?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Шығынды файл пішімі" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Кескінді түстер байлығын %1-бит дейін төмендетіп сақтауы түстер " +"мәліметінің жоғалуына апарып соғуы мүмкін. Оның үстіне мөлдірлігі де жоғалуы " +"мүмкін.

            Осы түстер байлығымен сақтала берсін бе?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Төмен түстер байлығы" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Кескін сақталмады - уақытша файл құрылмады." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "\"%1\" деп сақталмады." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Кескін сақталмады - жүктеп беру жаңылысы." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "І&шкі шегін өшіру" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Ішкі шегін өшіру" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Авто &ойып алу" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Авто ойып алу" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "KolourPaint таңдалғанның ішкі шегін анықтай алмай оны өшірмеді." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Ішкі шегі өшірілмеді" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint кескіннің шегін анықтай алмай оны автоматты түрде ойып ала " +"алмады." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Авто ойып алу болмады" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Кескін қылу" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Таңдау: Құру" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "KDE-нің сурет салу бағдарламасы" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Жоба негізін қалаушысы" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Бас зерттеушісі" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Сканерді қолдау, Alpha-ні қолдау, қазіргі жетілдірушісі" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Таңбашалары" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Енгізу тәсілін қолдау" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Кескін эффектері" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 -ке бейімдеу" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "KDE 4 -ке бейімдеу" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Көп басқаларға көмек үшін алғысымызды білдіреміз." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "Ашатын кескін файлы" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Көрініс" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Кескін" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Түстері" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Негізгі құралдар" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Мәтін құралы" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Таңдау құралының контекстік мәзірі" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "Өң&деу" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Нобай" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Кескіннің өлшемін өзгерту үшін сол батырманы басып тартыңыз." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Өлшемін өзгерту: Тышқанның барлық батырмаларымен." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Өлшемін өзгерту: Қайту үшін оң жағын түртіңіз." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Мәтін" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "\"%1\" түстер палитрасы ашылмады." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" түстер палитрасы ашылмады - танымайтын пішім.\n" +"Файл бүлінген болу мүмкін." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "\"%1\" KDE түстер палитрасы ашылмады." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Түстер палитрасы \"%1\" деп сақталмады." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Аталмаған" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "KolourPaint-тің әдеттегісін қолдану" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE-нікін қолдану" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Ашу..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Қайта жүкт&еу" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Сақтау" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "&Былай сақтау..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Жолды қосу" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Соңғы жолды жою" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Түстер" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"\"%1\" түстер палитрасы өзгертілген.\n" +"Сақтауды қалайсыз ба?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE-нің \"%1\" түстер палитрасы өзгертілген.\n" +"Сақтауды қалайсыз ба?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Әдеттегі түстер палитрасы өзгертілген.\n" +"Сақтауды қалайсыз ба?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Түс палитраны ашу" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"\"%1\" түстер палитрасы өзгертілген.\n" +"Қайта жүктеу соңғы сақталғаннан кейінгі өзгерістерді жоғалтады.\n" +"Қайта жүктейік пе?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Қ&айта жүктеу" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE-нің \"%1\" түстер палитрасы өзгертілген.\n" +"Қайта жүктеу өзгерістерді жоғалтады.\n" +"Қайта жүктейік пе?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Әдеттегі түстер палитрасы өзгертілген.\n" +"Қайта жүктеу өзгерістерді жоғалтады.\n" +"Қайта жүктейік пе?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Түс палитрасын былай сақтау" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "&Жаңа терезеге" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Таңдағанды ө&шіру" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "Файлға &көшірмелеу..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "&Файлдан алу..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Мәтін: Өрісін құру" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Мәтін: Орналастыру" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint алмасу буферінің мазмұнын орналастыра алмайды, өйткені ол " +"беймәлім пішімінде." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Орналастыру болмады" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Мәтін: Өрісін өшіру" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Таңдау: Өшіру" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Мәтін: Аяқтау" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Таңдау: Айну" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Файлға көшірмелеу" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Файлдан алып орналастыру" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "Эк&спорт ету..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Сканерлеу..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Экраннан түсіру" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Қасиеттері" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Қайта жүкт&еу" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Кескінді ашу" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Түсірудің кідіртуі" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " секунд" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Кідірусіз" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Негізгі терезені жасыру" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Құжаттың қасиеттері" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Кескінді былай сақтау" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Экспорт" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"\"%1\" құжаты өзгертілген.\n" +"Қайта жүктеу соңғы сақталғаннан кейінгі өзгерістерді жоғалтады.\n" +"Қайта жүктейік пе?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"\"%1\" құжаты өзгертілген.\n" +"Қайта жүктеу барлық өзгерістерді жоғалтады.\n" +"Қайта жүктейік пе?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Кескінді басып шығару" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Кескінді жіберу алдында сақтау керек.\n" +"Сақтауды қалайсыз ба?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"\"%1\" құжаты өзгерген.\n" +"Сақталсын ба?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Өл&шемін / масштабын өзгерту..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "&Ойып алу" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Төңкеру (үстін-төмен)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Аунатып аудару" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Бұру..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "&Солға бұру" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "&Оңға бұру" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Қ&исайту..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "&Жалғыз түспен шектелу (нүктелеп)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "&Сұр реңктерімен шектелу" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Түстерді терістеу" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Та&залау" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Қ&осымша эффектері..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "Кескін&ді" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Таң&дауды" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&Жолын көрсету" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1б/н" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Қаріп шоғыры" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Қаріптің өлшемі" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Қалың" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Көлбеу" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Асты сызылған" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Сызып тастаған" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Алдыңғы құрал параметрі (#1 топ)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Келесі құрал параметрі (#1 топ)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Алдыңғы құрал параметрі (#2 топ)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Келесі құрал параметрі (#2 топ)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Мөлдірсіздігін салу" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Ұқсас түспен салу..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Құралдар" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "&Тор сызықтарын көрсету" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "&Нобайын көрсету" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Нобайын ұлғайту/&кішірейту режімі" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Нобайдың қо&ршауы болсын" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "Ұлғайт&у/кішірейту" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Бүкіл кескін" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Қылқалам" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Алуан түрлі мен өлшемді қылқаламдармен сурет салу" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Нүктені түртіп қойыңыз, сызу үшін басып жүргізіңіз." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Түс өшіргіші" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Нысан пикселдерінің түсін өшіріп аясының түсімен ауыстырады" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Өшіру үшін түртіңіз не басып жүргізіңіз." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Өшіргіш" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Қателерді өшіру" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Өшіру үшін түртіңіз не басып жүргізіңіз." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Тышқанның барлық батырмаларымен." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Қалам" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Нүктелерді қою не қолжазба сызықтарды салу" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Бүріккіш" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Бүрікпе дақ салу" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Бүрікпе дақ салу үшін түртіңіз не басып жүргізіңіз." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Қайту үшін оң батырманы түртіңіз." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Қайту үшін сол батырманы түртіңіз." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Кескіннен керек түсті шұқып алу құралы" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Түсті таңдап алу үшін түртіңіз." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Кескіннің аумақтарын бояумен толтыру" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Толтыру үшін аумаққа меңзеп түртіңіз." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Ұлғайту/Кішірейту" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Кескінді ұлғайту/кішірейту" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Түртіп ұлғайт/кішрейтіңіз не аумақты меңзеп сол батырманы басып тартыңыз." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Қисық сызық" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Қисық сызықтарды салу" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Бастапқы және соңғы нүктелерін салу үшін басып жүргізіңіз." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Сол жаққа басып бірінші басқару нүктені салып, оң жағын түртіп аяқтаңыз." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Оң жаққа басып бірінші басқару нүктені салып, сол жағын түртіп аяқтаңыз." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "Сол жаққа басып соңғы басқару нүктені салып, оң жағын түртіп аяқтаңыз." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "Оң жаққа басып соңғы басқару нүктені салып, сол жағын түртіп аяқтаңыз." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Түзу сызық" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Түзу сызықтарды салу" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Салу үшін басып жүргізіңіз." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Көпбұрыш" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Көпбұрышты салу" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Бірінші сызығын салу үшін басып жүргізіңіз." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Сол жаққа басып сызықтарын салып, оң жағын түртіп аяқтаңыз." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Оң жаққа басып сызықтарын салып, сол жағын түртіп аяқтаңыз." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Ілескен сызықтар" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Ілескен сызықтарды салу" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Эллипс" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Эллипстер мен шеңберлерді салу" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Төртбұрыш" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Төртбұрыштар мен шаршыларды салу" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Дөңгеленген төртбұрыш" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Дөңгеленген бұрышты төртбұрыштар мен шаршыларды салу" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Таңдауды құру үшін сол батырманы басып тартыңыз." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Таңдағанды жылжыту үшін сол батырманы басып тартыңыз." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Таңдағанның масштабын өзгерту үшін сол батырманы басып тартыңыз." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Таңдау: Мөлдірсіз" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Таңдау: Мөлдір" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Таңдау: Мөлдірлік түсі" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Таңдау: Мөлдірлік түсінің ұқсастығы" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Таңдау (эллипстік)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Дөңгеленген аумақты таңдау" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Таңдау (кез келген аумақты)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Кез келген қалыпты аумақты таңдау" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Таңдау (төртбұрыш)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Төртбұрыш аумақты таңдау" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Таңдау: жылжыту" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Дақ" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Мәтінді жазу" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Мәтін: Шегініп өшіру" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Мәтін: Өшіру" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Мәтін: Жаңа жол" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Мәтін: Жазу" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Мәтін өрісін құру үшін сол батырманы басып тартыңыз." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Мәтін өрісін жылжыту үшін сол батырманы басып тартыңыз." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Мәтін: Өрісін жылжыту" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Мәтін өрісін өзгерту үшін сол батырманы басып тартыңыз." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Меңзер орнын өзгерту үшін сол батырманы түртіңіз." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Мәтін: Аясы мөлдірсіз" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Мәтін: Аясы мөлдір" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Мәтін: Түстерін алмастыру" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Мәтін: Жазудың түсі" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Мәтін: Аясының түсі" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Мәтін: Қаріпі" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Мәтін: Қаріптің өлшемі" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Мәтін: Қалың" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Мәтін: Көлбеу" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Мәтін: Асты сызылған" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Мәтін: Сызып тасталған" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Ұлғайту/Кішірейтусіз - Нобайы" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - нобайы" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Түстің ұқсастығы дегені қандай түсті ұқсас деп " +"табылатынының анықтамасы.

            Егер бұны Нақты тең дегеннен басқа " +"қылсаңыз, дизеринг (нүктелеу) тәсілімен боялған кескіндер мен фотолармен " +"ыңғайлы түрде айналыса аласыз. Бұл басқа сурет салу бағдарламалардағы " +"\"Сиқырлы таяқша\" (\"Magic Wand\") деген мүмкіндігі тәрізді.

            Бұл " +"мүмкіндік

            • Таңдаулар дегеннің Мөлдір режімінде " +"қолданылады, таңдаудағы ая түсіне ұқсас түстер мөлдір қылынады.
            • Құйып толтыру дегенде: тең емес бірақ ұқсас түсті " +"пикселдерді бояуға қолданылады.
            • Түс өшіргіші дегенде: түсі " +"ұқсас кез келген нысан пикселдер ая түсіне боялады.
            • Авто " +"ойып алу және Ішкі шегін өшіру дегендерде: тең емес бірақ " +"ұқсастығы түсті шектерді ойып алады.

            Параметр пикселдің " +"түсінің ұқсастығы оны бірдей деп санау үшін жеткілікті деген түстер " +"аумағын кеңейтуге мүмкіндік береді.

            Сонымен аталған аумақ қисынды " +"шектерден шығып кетсе (мысалы, Құйып толтыру деген тым көп ауданды " +"бояп кететіндей) - оны тарлытуға дәл келеді.

            Баптау үшін текшені " +"түртіңіз.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Түстің ұқсастығы дегені қандай түсті ұқсас деп " +"табылатының анықтамасы.

            Егер бұны Нақты тең дегеннен басқа " +"қылсаңыз, дизеринг (нүктелеу) тәсілімен боялған кескіндер мен фотолармен " +"ыңғайлы түрде айналыса аласыз. Бұл басқа сурет салу бағдарламалардағы " +"\"Сиқырлы таяқша\" (\"Magic Wand\") деген мүмкіндігі тәрізді.

            Бұл " +"мүмкіндік

            • Таңдаулар дегеннің Мөлдір режімінде " +"қолданылады, таңдаудағы ая түсіне ұқсас түстер мөлдір қылынады.
            • Құйып толтыру дегенде: тең емес бірақ ұқсас түсті " +"пикселдерді бояуға қоданылады.
            • Түс өшіргіші дегенде: түсі " +"ұқсас кез келген нысан пикселдер ая түсіне боялады.
            • Авто " +"ойып алу және Ішкі шегін өшіру дегендерде: тең емес бірақ " +"ұқсастығы түсті шектерді ойып алады.

            Параметр пикселдің " +"түсінің ұқсастығы оны бірдей деп санау үшін жеткілікті деген түстер " +"аумағын кеңейтуге мүмкіндік береді.

            Сонымен аталған аумақ қисынды " +"шектерден шығып кетсе (мысалы, Құйып толтыру деген тым көп ауданды " +"бояп кететіндей) - оны тарлытуға дәл келеді.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "

            Түс ұқсастығы: %1%

            Баптау үшін түртіңіз.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Түс ұқсастығы: Нақты тең

            Баптау үшін түртіңіз.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Жарықтық:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Ысырып тастау" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ко&нтрастық:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Гамма:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Ысыры&п тастау" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Арналары:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Барлығы" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Қызыл" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Жасыл" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Көк" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Б&арлығын ысыру" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Баптаулары" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "М&өлшері:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Б&олсын" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Түстер" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Реңкі:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "Қ&анықтығы:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Мәні:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "Қ&ызыл" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Жасыл" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Көк" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Бәрін" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Арналары" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Ақ-қара" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Жалғ&ыз түсті (нүктелеп)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 т&үс" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 тү&с (нүктелеп)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24 &биттік түс" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Келесімен шектелу" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Түйіршіктілігі:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Құрал суретті салуға қолданатын бояуды таңдау үшін керек түсті торды " +"тышқанның сол жақ батырмасын түртіп қалыңыз. Аясын бояуға қолданатын түсті " +"таңдау үшін оны тышқанның оң жақ батырмасын түртіп қалыңыз.

            Тордағы " +"түсті өзгерту үшін оның үстінде қос түртім жасаңыз.

            Тордағы түсті " +"басқа тордан сүреп әкеліп ауыстыруға да болады. Сонда Control пернені " +"басып тұрсаңыз, қалаған түс торға көшірмеленеді, әйтпесе екі тордың түстері " +"алмастырылады.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Келесіге &аудару:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Сапасы:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Нобайы" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Жалғыз түсті" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Жалғыз түсті (нүктелеп)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 түс" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 түс (нүктелеп)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-биттік түс" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "&Кескінің орналасуы" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Беттің &ортасында" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Беттің &сол жақ жоғарында" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Мөлдір" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint әдеттегілері" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Палитра: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Палитра: %1 [өзгертілген]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Шеңбер" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Шаршы" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Көлбеу сызық" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Кері көлбеу сызық" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Толтырусыз" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Ая түсімен толтыру" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Нысан түсімен толтыру" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Мөлдірсіз" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" деп аталған құжат бар ғой.\n" +#~ "Үстінен жазыла берсін бе?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" деген түстер палитрасы бар ғой.\n" +#~ "Оның үстінен жаза берейік пе?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "100% еселеп ұлғайту ғана тегіс түрлендіріледі. Өзге өлшемдерге ұлғайту " +#~ "бірқалыпты болмауы мүмкін.\n" +#~ "Сонда да %1% ұлғайтуды қалайсыз ба?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "%1% ұлғайту/кішірейту" + +#~ msgid "None" +#~ msgstr "Жоқ" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Кескіннің өлшемін %1x%2 қылып өзгерту көп жадын талап етеді.Ол " +#~ "жүйеңіздің жауап беру қабілетін кемітіп, басқа қолданбаларды ресурстар " +#~ "тапшылығына ұшыратады.

            Сонда да өлшемін өзгертпексіз бе?

            " + +#~ msgid "Overwrite" +#~ msgstr "Үстінен жазу" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "\"%1\" ашылмады - беймәлім MIME түрі." + +#~ msgid "Save Preview" +#~ msgstr "Нобайын сақтау" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Қолдауды табу үшін вебсайтына жолығыңыз." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Сканер диалогын ұсынатын плагині табылмады.\n" +#~ "Көбінде, бұл ksanepluginді орнататын десте орнатылмаған дегені." + +#~ msgid "No Scanning Support" +#~ msgstr "Сканерлеудің қолдауы жоқ" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Сканерлеудің қолдауы орнатылмаған." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            KolourPaint алмасу буферінің мазмұнын орналастыра алмайды, өйткені " +#~ "ол кенеттен ғайып болды.

            Көбінде бұндай алмасу буферіне мазмұнын " +#~ "бермек қолданба жабылып қалғанда болады.

            " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Экраннан тү&сіру" + +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            Экраннан түсіру үшін %1 тіркесімін басыңыз. Сурет алмасу " +#~ "буферіне түсіріледі де, оны одан KolourPaint-ке орналастыруға болады.

            KDE Жүйе параметрлері Перне " +#~ "тіркесімдер бөліміндегі Үстелді түсіріп алу перне тіркесімін " +#~ "ыңғайлап алуға болады.

            Сонымен қатар, экраннан түсіру үшін KSnapshot бағдарламасын да қолдануға болады.

            " + +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            KDE жегілмеген сияқты.

            KDE жегілген соң:

            Экраннан " +#~ "түсіру үшін %1 тіркесімін басыңыз. Сурет алмасу буферіне " +#~ "түсіріледі де, оны одан KolourPaint-ке орналастыруға болады.

            Сонымен қатар, экраннан түсіру үшін KSnapshot бағдарламасын да қолдануға болады.

            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Тұ&сқағаз қылу (ортаға)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Тұсқағаз қылу (қата&рлап)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Кескінді тұсқағаз қылудың алдында жергілікті файл қылып сақтау керек.\n" +#~ "Сақтауды қалайсыз ба?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Кескінді тұсқағаз қылудың алдында сақтау керек.\n" +#~ "Сақтауды қалайсыз ба?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Тұсқағазы ауыстырылмады." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Таңдалғанды аудару" + +#~ msgid "Flip Image" +#~ msgstr "Кескінді аудару" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Төңкеріп (үстін-төмен)" + +#~ msgid "&Horizontal" +#~ msgstr "&Аунатып (оңды-солға)" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Түстер мен бұлдырлық мәліметінің жоғалуы" + +#~ msgid "Loss of Color Information" +#~ msgstr "Түстер мәліметінің жоғалуы" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Бұлдырлық мәліметінің жоғалуы" + +#~ msgid "" +#~ "

            KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

            To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

            " +#~ msgstr "" +#~ "

            KolourPaint қолданыстағы %1б/н экран режімін қолдамайды. " +#~ "KolourPaint бұл режімде істеп көреді, бірақ ісі тұрақсыз болуға мүмкін.

            Мәселені шешу үшін экранның түстер байлығын 24б/н режіміне ауыстырып " +#~ "KolourPaint-ті қайта жегу керек.

            " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Қолданбайтын экран режімі" + +#~ msgid "" +#~ "

            This effect does not support the current screen depth of %1bpp.

            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Қолданыстағы %1б/н экран режімі эффектіне керек түстер байлығын " +#~ "қамтамасыз ете алмайды.

            Мәселені шешу үшін экранның түстер байлығын " +#~ "24б/н режіміне ауыстырып KolourPaint-ті қайта жегу керек.

            " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Сканерлеу болмады - графикалық жады тапшылығы." + +#~ msgid "Cannot Scan" +#~ msgstr "Сканерлеу болмады" + +#~ msgid "&Flip..." +#~ msgstr "&Аудару..." + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Орналастырмақ кескінің түстер байлығы қолданыстағы экран режімі " +#~ "қамтамасыз ететінен артық. Сондықтан бұны көрсеткенде кейбір түстер дұрыс " +#~ "көрсетілмеуі мүмкін.

            Кескінді сақтасаңыз, кейбір түстер мүлдем " +#~ "жоғалуы әбден мүмкін.

            Мәселені шешу үшін экранның түстер " +#~ "байлығын кемінде %1б/н дейін көтеретін режіміне ауысып KolourPaint-ті " +#~ "қайта жегуі жөн.


            Оның үстіне кескінінде мұнда толық қолдауы " +#~ "жоқ бұлдырлық қолданылады. Бұлдырлығы 1-биттік мөлдірлік қалқамен " +#~ "жуықталмақ.

            Кескінді сақтасаңыз бұлдырлық мәліметін мүлдем " +#~ "жоғалтасыз.

            " + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Орналыстырмақ кескінінің түстер байлығы қолданыстағы экран режімі " +#~ "қамтамасыз ететінен артық. Сондықтан бұны көрсеткенде кейбір түстер дұрыс " +#~ "көрсетілмеуі мүмкін.

            Кескінді сақтасаңыз, кейбір түстер мүлдем " +#~ "жоғалуы әбден мүмкін.

            Мәселені шешу үшін экранның түстер " +#~ "байлығын кемінде %1б/н дейін көтеретін режіміне ауыстырып KolourPaint-ті " +#~ "қайта жегу жөн.

            " + +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Орналастырмақ кескінінде мұнда толық қолдауы жоқ бұлдырлық " +#~ "қолданылады. Бұлдырлығы 1-биттік мөлдірлік қалқамен жуықталмақ.

            Кескінді сақтасаңыз бұлдырлық мәліметін мүлдем жоғалтасыз." + +#~ msgid "

            There is nothing in the clipboard to paste.

            " +#~ msgstr "

            Алмасу буферінде ештеңе жоқ.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            \"%1\" кескінің түстер байлығы қолданыстағы экран режімі " +#~ "қамтамасыз ететінен артық. Сондықтан бұны көрсеткенде кейбір түстер дұрыс " +#~ "көрсетілмеуі мүмкін.

            Кескінді сақтасаңыз, кейбір түстер мүлдем " +#~ "жоғалуы әбден мүмкін.

            Мәселені шешу үшін экранның түстер " +#~ "байлығын кемінде %2б/н дейін көтеретін режіміне ауысып KolourPaint-ті " +#~ "қайта жегуі жөн.


            Оның үстіне кескінінде мұнда толық қолдауы " +#~ "жоқ бұлдырлық қолданылады. Бұлдырлығы 1-биттік мөлдірлік қалқамен " +#~ "жуықталмақ.

            Кескінді сақтасаңыз бұлдырлық мәліметін мүлдем " +#~ "жоғалтасыз.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            \"%1\" кескінің түстер байлығы қолданыстағы экран режімі " +#~ "қамтамасыз ететінен артық. Сондықтан бұны көрсеткенде кейбір түстер дұрыс " +#~ "көрсетілмеуі мүмкін.

            Кескінді сақтасаңыз, кейбір түстер мүлдем " +#~ "жоғалуы әбден мүмкін.

            Мәселені шешу үшін экранның түстер " +#~ "байлығын кемінде %2б/н дейін көтеретін режіміне ауысып KolourPaint-ті " +#~ "қайта жегуі жөн.

            " + +#~ msgid "" +#~ "

            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            \"%1\" кескінінде мұнда толық қолдауы жоқ бұлдырлық қолданылады. " +#~ "Бұлдырлығы 1-биттік мөлдірлік қалқамен жуықталмақ.

            Кескінді " +#~ "сақтасаңыз бұлдырлық мәліметін жоғалтасыз.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "\"%1\" ашылмады - графикалық жад тапшылығы." + +#~ msgid "Scanning Support" +#~ msgstr "Сканерлеу қолдауы" + +#~ msgid "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" +#~ msgstr "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" diff --git a/po/km/kolourpaint.po b/po/km/kolourpaint.po new file mode 100644 index 0000000..aa12501 --- /dev/null +++ b/po/km/kolourpaint.po @@ -0,0 +1,2758 @@ +# translation of kolourpaint.po to Khmer +# Auk Piseth , 2008. +# Khoem Sokhem , 2008, 2009, 2010, 2011, 2012. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2012-06-11 14:07+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: Khmer\n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: KBabel 1.11.4\n" +"X-Language: km-KH\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "ខឹម សុខែម, ​អេង វណ្ណៈ, អោក ពិសិដ្ឋ​" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "khoemsokhem@khmeros.info,​​evannak@khmeros.info,piseth_dv@khmeros.info" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "តុល្យភាព" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "ធ្វើឲ្យ​ព្រិល" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "ធ្វើ​ឲ្យ​ច្បាស់" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "ជម្រះ" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "ជម្រើស ៖ %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "ផុស" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "រាបស្មើ" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "បន្ថយ​ទៅ​មាត្រដ្ឋាន​ប្រផេះ" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "ភាព​លាំៗ​នៃ​ពណ៌ តិត្ថិភាព តម្លៃ" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "បញ្ច្រាស​ពណ៌" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "ដាក់​បញ្ច្រាស" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "បន្ថយ​នៅ​ត្រឹម​មួយ​ពណ៌ (ច្របល់)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "បន្ថយ​នៅ​ត្រឹម​មួយ​ពណ៌" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "បន្ថយ​ត្រឹម ២៥៦ ពណ៌ (ច្របល់)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "បន្ថយ​​ត្រឹម ២៥៦ ពណ៌" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "អ៊ីស្តូក្រាម​ស្មើ​គ្នា" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "ត្រឡប់" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "ត្រឡប់​ផ្ដេក និង​បញ្ឈរ" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "ត្រឡប់​ផ្ដេក" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "ត្រឡប់​បញ្ឈរ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "អត្ថបទ ៖ ប្ដូរ​ទំហំ​ប្រអប់" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "ជម្រើស ៖ ធ្វើ​មាត្រដ្ឋាន" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "ជម្រើស ៖ ធ្វើ​មាត្រដ្ឋាន​រលូន" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "ប្តូរ​ទំហំ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "មាត្រដ្ឋាន" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "ធ្វើ​មាត្រដ្ឋាន​រលូន" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "បង្វិល" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "ឆៀង" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "មិន​ធ្វើ​វិញ ៖ %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "មិន​ធ្វើ​វិញ" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "ធ្វើ​វិញ ៖ %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "ធ្វើ​វិញ" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "មិនធ្វើ​វិញ ៖ %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "មិន​ធ្វើ​វិញ" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "ធ្វើ​វិញ ៖ %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "ធ្វើ​វិញ" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1 ៖ %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 ធាតុ​បន្ថែម​ទៀត" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "ឧបករណ៍​ជ្រើស​ពណ៌" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "បំពេញ​ទាំងមូល" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "បែបផែន​រូបភាព​ផ្សេង​ទៀត (ជម្រើស)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "បែបផែន​រូបភាព​ផ្សេង​ទៀត" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "បែបផែន ៖" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "បន្ថយ​ពណ៌" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "ធ្វើ​ឲ្យ​ព្រិល និង​​ច្បាស់" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "លក្ខណសម្បត្តិ​ឯកសារ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "ចំណុច​ក្នុង​មួយ​អ៊ិន្ឈ៍ (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "មិនបាន​បញ្ជាក់" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "ផ្ដេក ៖" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "បញ្ឈរ ៖" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            ចំណុច​ក្នុង​មួយ​អ៊ិន្ឈ៍ (DPI) បញ្ជាក់​ចំនួន​ភីកសែល​នៃ​រូបភាព​ដែល​គួរតែ​ត្រូវ​បោះពុម្ព​​ក្នុង​មួយ​អ៊ិន្ឈ៍ " +"(២,៥៤ ស.ម.) ។

            DPI របស់​រូបភាព​កាន់តែ​ខ្ពស់ រូបភាព​ដែល​បាន​បោះពុម្ព​គឺ​កាន់​តែ​តូច ។ ចំណាំ​ថា " +"ម៉ាស៊ីន​បោះពុម្ព​របស់​អ្នក មិនទំនង​ជា​ធ្វើការ​បោះពុម្ព​គុណភាព​ខ្ពស់​ទេ ប្រសិន​បើ​អ្នក​បង្កើន​វា​ដល់​ច្រើន​ជាង ៣០០ " +"ឬ ៦០០ DPI ដោយ​អាស្រ័យលើ​ម៉ាស៊ីន​បោះពុម្ព ។

            ប្រសិន​បើ​អ្នក​ចង់​បោះពុម្ព​រូបភាព ដូច្នេះ​វា​មាន​ទំហំ​" +"ដូចគ្នា​នឹង​ទំហំ​ដែល​បង្ហាញ​លើ​អេក្រង់ គឺ​កំណត់​តម្លៃ DPI របស់​រូបភាពឲ្យ​ដូចគ្នា​នៅលើ​អេក្រង់ ។

            ប្រសិន​បើ​" +"មិនបាន​បញ្ជាក់​តម្លៃ DPI នោះ​រូបភាព​នឹង​ត្រូវ​បាន​បោះពុម្ព​ដូច​នឹង​ទំហំ​នៅលើ​អេក្រង់​ដែរ ។

            មិនមែន​ប្រភេទ​រូបភាព​ទាំងអស់ទេ ​ដែល​គាំទ្រ​តម្លៃ DPI ។ ប្រសិន​បើ​ទ្រង់ទ្រាយ​ដែល​អ្នក​រក្សាទុក​មិនគាំទ្រ​" +"ពួកវា​នោះ ពួកវា​នឹង​មិនត្រូវ​បាន​រក្សាទុក​ឡើយ ។

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "អុហ្វសិត" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            អុហ្វសិត គឺ​ជា​ទីតាំង​ប្រែប្រួល ដែល​ដាក់​រូបភាព​នេះ ដែល​បាន​ប្រៀបធៀប​ទៅ​នឹង​រូបភាព​" +"ផ្សេងទៀត ។

            មិនមែន​ទ្រង់ទ្រាយ​ទាំងអស់​ទេ ដែល​គាំទ្រ​លក្ខណៈ​ពិសេស​របស់ អុហ្វសិត ។ ប្រសិន​បើ​" +"ទ្រង់ទ្រាយ​ដែល​អ្នក​រក្សាទុក មិន​គាំទ្រ​វា​ទេ តម្លៃ​ដែល​បាន​បញ្ជាក់​នៅ​ទីនេះ នឹង​មិនត្រូវបាន​រក្សាទុក​ឡើយ ។" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "វាល​អត្ថបទ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "បន្ថែម​ជួរ​ដេក" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "លុប​ជួរ​ដេក" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "កំណត់​ឡើង​វិញ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            វាល​អត្ថបទ ផ្ដល់​ព័ត៌មាន​បន្ថែម​អំពី​រូបភាព ។ វា​ប្រហែល​ជា​ផ្ទៃ​សេចក្ដី​អធិប្បាយ ដែល​អ្នក​" +"អាច​សរសេរ​អត្ថបទ​ចូល​​បាន​ដោយ​សេរី ។

            ទោះ​យ៉ាងណា នេះ​ជាទ្រង់ទ្រាយ​ជាក់លាក់ ដូច្នេះ​វាល​អាច​ជា​" +"ទិន្នន័យ​កុំព្យូទ័រ​ដែល​បាន​បកប្រែ​តាម​ទ្រឹស្ដី ដែល​អ្នក​មិនគួរ​កែប្រែ​ទេ តែ​ដូចជា​មិនទំនង​សោះ ។

            មិនមែន​" +"ទ្រង់ទ្រាយ​រូបភាព​ទាំងអស់​ទេ ដែល​គាំទ្រ វាល​អត្ថបទ​នោះ ។ ប្រសិន​បើ​ទ្រង់ទ្រាយ​ដែល​អ្នក​រក្សាទុក មិន​" +"គាំទ្រ​ពួកវាទេ​នោះ ពួកវា​នឹង​មិនត្រូវបាន​រក្សាទុក​ទេ ។

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "សោ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "តម្លៃ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "តម្លៃ​អត្ថបទ \"%1\" នៅ​បន្ទាត់ %2 ត្រូវការ​សោ ។" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"កូន​សោ​អត្ថបទ​ទ៿ងអស់​ត្រូវ​តែ​មាន​តែ​មួយ ។ កូន​សោ​អត្ថបទ \"%1\" នៅ​បន្ទាត់​ទី %2 និង %3 គឺ​ដូច​គ្នា​បេះបិទ ។" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "វាល​អត្ថបទ​មិនត្រឹមត្រូវ" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "វិមាត្រ" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "ដើម ៖" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "មើល​ជាមុន" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "ធ្វើបច្ចុប្បន្នភាព" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "ប្ដូរ​ទំហំ/ធ្វើ​មាត្រដ្ឋាន" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "ធ្វើ​នៅ ៖" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "រូបភាព​ទាំង​មូល" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "ជម្រើស" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "ប្រអប់​អត្ថបទ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "ប្រតិបត្តិការ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • ប្ដូរ​ទំហំ ៖ ទំហំ​រូបភាព​នឹង​ត្រូវ​បាន​បង្កើន ដោយ​បង្កើត​តំបន់​ថ្មី​នៅ​ផ្នែក​ខាង​ស្ដាំ និង/" +"ឬ​បាត (បំពេញ​ដោយ​ពណ៌​ផ្ទៃ​ខាង​ក្រោយ) ឬ បន្ថយ​ដោយ​កាត់​ផ្នែក​ខាង​ស្ដាំ និង/ឬ​បាត​ចេញ ។
            • ធ្វើ​" +"មាត្រដ្ឋាន ៖ រូបភាព​នឹង​ត្រូវ​បាន​ពង្រីក​ដោយ​ស្ទួន​ភីកសែល ឬ បំផ្លាញ​ដោយ​ចោល​ភីកសែល ។
            • ធ្វើ​មាត្រដ្ឋាន​ដោយ​រលូន ៖ វា​មាន​លក្ខណៈ​ដូច​គ្នា​នឹង ធ្វើ​មាត្រដ្ឋាន​ដែរ តែ​" +"ខុសគ្នា​ត្រង់​ថា វា​លាយ​ភីកសែល​ជាប់​គ្នា ដើម្បី​បង្កើត​រូបភាព​ដែល​មាន​លក្ខណៈ​ស្អាត​ជាង ។
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "ប្ដូរ​ទំហំ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "ធ្វើ​មាត្រដ្ឋាន" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "ធ្វើ​មាត្រដ្ឋាន​រលូន" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "ទទឹង ៖" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "កម្ពស់​ ៖" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "ថ្មី ៖" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "ភាគរយ ៖" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "រក្សា​សមាមាត្រ​ទិដ្ឋភាព" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            ការ​ប្ដូរ​ទំហំ​ប្រអប់​អត្ថបទ​ទៅ​ជា %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរ​សម​ដែរ ។ វា​អាច​នឹង​ធ្វើ​ឲ្យ​ភាព​" +"ទទួល​ខុសត្រូវ​របស់​ប្រព័ន្ធ​ថយចុះ ហើយ​អាច​នឹង​បណ្ដាល​ឲ្យ​មាន​បញ្ហា​ជាមួយ​ធនធាន​របស់​កម្មវិធី​ផ្សេង​ទៀត ។

            តើ​អ្នក​ពិត​ជា​ចង់​ប្ដូរ​ទំហំ​ប្រអប់​អត្ថបទ​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "ប្ដូរ​ទំហំ​ប្រអប់​អត្ថបទឬ ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "ប្ដូរ​ទំហំ​ប្រអប់​អត្ថបទ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            ការ​ប្ដូរ​ទំហំ​រូបភាព​ទៅ​ជា %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរ​សម​ដែរ ។ វា​អាច​នឹង​ធ្វើ​ឲ្យ​ភាព​ទទួល​" +"ខុសត្រូវ​របស់​ប្រព័ន្ធ​ថយចុះ ហើយ​អាច​នឹង​បណ្ដាល​ឲ្យ​មាន​បញ្ហា​ជាមួយ​ធនធាន​របស់​កម្មវិធី​ផ្សេង​ទៀត ។

            តើ​" +"អ្នក​ពិត​ជា​ចង់​ប្ដូរ​ទំហំ​រូបភាព​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "ប្ដូរ​ទំហំ​រូបភាពឬ ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "ប្ដូរ​ទំហំ​រូបភាព" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            ការ​ធ្វើមាត្រដ្ឋាន​រូបភាព​ទៅ %1x%2 អាច​​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរសម​ដែរ ។ វា​អាច​កាត់​បន្ថយ​ភាព​" +"ទទួល​ខុសត្រូវ​របស់​ប្រព័ន្ធ ហើយ​អាច​ធ្វើ​ឲ្យ​មាន​បញ្ហា​ដល់​ធនធាន​កម្មវិធី​ផ្សេងទៀត ។

            តើ​អ្នក​ពិតជា​ចង់​ធ្វើ​" +"មាត្រដ្ឋាន​រូបភាព​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "ធ្វើ​មាត្រដ្ឋាន​រូបភាពឬ ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "ធ្វើ​មាត្រដ្ឋាន​រូបភាព" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            ការ​ធ្វើ​មាត្រដ្ឋាន​ជម្រើស​ទៅ​ជា %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរ​សម​ដែរ ។ វា​អាច​នឹង​ធ្វើ​ឲ្យ​" +"ភាព​ទទួល​ខុសត្រូវ​របស់​ប្រព័ន្ធ​ថយចុះ ហើយ​អាច​នឹង​បណ្ដាល​ឲ្យ​មាន​បញ្ហា​ជាមួយ​ធនធាន​របស់​កម្មវិធី​ផ្សេង​ទៀត ។

            តើ​អ្នក​ពិត​ជា​ចង់​ធ្វើ​មាត្រដ្ឋាន​ជម្រើស​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "ធ្វើ​មាត្រដ្ឋាន​ជម្រើស ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "ធ្វើ​មាត្រដ្ឋាន​ជម្រើស" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            ការ​ធ្វើ​មាត្រដ្ឋាន​រូបភាព​រលូន​ទៅ​ជា %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរ​សម​ដែរ ។ វា​អាច​នឹង​ធ្វើ​" +"ឲ្យ​ភាព​ទទួល​ខុសត្រូវ​របស់​ប្រព័ន្ធ​ថយចុះ ហើយ​អាច​នឹង​បណ្ដាល​ឲ្យ​មាន​បញ្ហា​ជាមួយ​ធនធាន​របស់​កម្មវិធី​ផ្សេង​ទៀត ។

            តើ​អ្នក​ពិត​ជា​ចង់​ធ្វើ​មាត្រដ្ឋាន​រូបភាព​រលូន​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "ធ្វើ​មាត្រដ្ឋាន​រូបភាព​រលូនឬ ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "ធ្វើ​មាត្រដ្ឋាន​រលូន" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            ការ​ធ្វើ​មាត្រដ្ឋាន​ជម្រើស​ដោយ​រលូន​ទៅ​ជា %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរ​សម​ដែរ ។ វា​អាច​នឹង​" +"ធ្វើ​ឲ្យ​ភាព​ទទួល​ខុសត្រូវ​របស់​ប្រព័ន្ធ​ថយចុះ ហើយ​អាច​នឹង​បណ្ដាល​ឲ្យ​មាន​បញ្ហា​ជាមួយ​ធនធាន​របស់​កម្មវិធី​ផ្សេង​ទៀត ។" +"

            តើ​អ្នក​ពិត​ជា​ចង់​ធ្វើ​មាត្រដ្ឋាន​ជម្រើស​ដោយ​រលូន​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "ធ្វើ​មាត្រដ្ឋាន​ជម្រើស​​រលូនឬ ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "ធ្វើ​មាត្រដ្ឋាន​ជម្រើស​រលូន" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "បង្វិល​ជម្រើស" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "បង្វិល​រូបភាព" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "បន្ទាប់​ពី​បង្វិល ៖" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "ទិស" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "ច្រាស​ទ្រនិច​នាឡិកា" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "ស្រប​ទ្រនិច​នាឡិកា" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "មុំ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "៩០ ដឺក្រេ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "១៨០ ដឺក្រេ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "២៧០ ដឺក្រេ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "ផ្ទាល់ខ្លួន ៖" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "ដឺក្រេ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the selection?

            " +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            ការ​បង្វិល​ជម្រើស​ទៅ %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរ​សមដែរ ។ វា​អាច​ធ្វើកាត់​បន្ថយ​ភាព​ទទួល​" +"ខុសត្រូវ​របស់​ប្រព័ន្ធ ហើយ​អាច​ធ្វើ​ឲ្យ​មាន​បញ្ហា​ដល់​ធនធាន​កម្មវិធី​ផ្សេងទៀត​បាន ។

            តើ​អ្នក​ពិតជា​ចង់​" +"បង្វិល​ជម្រើស​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "បង្វិល​ជម្រើស​ឬ ?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "បង្វិល​ជម្រើស" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the image?

            " +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            ការ​បង្វិល​រូបភាព​ទៅ %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរ​សមដែរ ។ វា​អាច​ធ្វើកាត់​បន្ថយ​ភាព​ទទួល​" +"ខុសត្រូវ​របស់​ប្រព័ន្ធ ហើយ​អាច​ធ្វើ​ឲ្យ​មាន​បញ្ហា​ដល់​ធនធាន​កម្មវិធី​ផ្សេងទៀត​បាន ។

            តើ​អ្នក​ពិតជា​ចង់​" +"បង្វិល​រូបភាព​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "បង្វិល​រូបភាព​ឬ ?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "បង្វិល​រូបភាព" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "បញ្ឆៀង​ជម្រើស" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "បញ្ឆៀង​រូបភាព" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "បន្ទាប់ពី​បញ្ឆៀង ៖" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "ផ្ដេក ៖" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "បញ្ឈរ ៖" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the selection?

            " +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            ការ​បញ្ឆៀង​ជម្រើស​ទៅ %1x%2 អាច​ចំណាយ​អស់​សតិ​ច្រើន​គួរសម​ដែរ ។ វា​អាច​កាត់​បន្ថយ​​ភាព​ទទួល​ខុសត្រូវ​" +"របស់​ប្រព័ន្ធ ហើយ​អាច​ធ្វើ​ឲ្យ​មាន​បញ្ហា​ដល់​ធនធាន​កម្មវិធី​ផ្សេងទៀត ។

            តើ​អ្នក​ពិតជា​ចង់​បញ្ឆៀង​ជម្រើស​" +"ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "បញ្ឆៀង​ជម្រើស​ឬ ?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "បញ្ឆៀង​ជម្រើស" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the image?

            " +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            ការ​បញ្ឆៀង​រូបភាព​ទៅ %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរសម​ដែរ ។ វា​អាច​កាត់​បន្ថយ​ភាព​ទទួល​" +"ខុសត្រូវ​របស់​ប្រព័ន្ធ ហើយ​អាច​ធ្វើឲ្យ​មាន​បញ្ហា​ដល់​ប្រភព​កម្មវិធី​ផ្សេងទៀត ។

            តើ​អ្នក​ពិតជា​ចង់​បញ្ឆៀង​" +"រូបភាព​ឬ ?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "បញ្ឆៀង​រូបភាព​ឬ ?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "បញ្ឆៀង​រូបភាព" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "ភាពស្រដៀង​គ្នា​នៃ​ពណ៌" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "ចម្ងាយ​គូប​ពណ៌ RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "ដូច​បេះបិទ" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "តើ​ភាព​ស្រដៀងគ្នា​នៃ​ពណ៌​ជា​អ្វី ?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "រក្សាទុក​ទិដ្ឋភាព​ជាមុន" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 បៃ (ប្រហែល %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "មិន​អាច​បើក \"%1\" បាន​ឡើយ ។" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"មិន​អាច​បើក \"%1\" បាន​ឡើយ ព្រោះ​មិន​គាំទ្រ​ទ្រង់ទ្រាយ​រូបភាព​ប្រភេទ​នោះ​ឡើយ ។\n" +"ឯកសារ​អាច​នឹង​ខូច ។" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "មិន​អាច​រក្សាទុក​រូបភាព​បាន​ឡើយ ព្រោះ​ព័ត៌មាន​មិន​គ្រប់គ្រាន់ ។" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL ៖ %1\n" +"ប្រភេទ Mime ៖ %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<ទទេ>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "កំហុស​ខាងក្នុង" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            ទ្រង់ទ្រាយ %1 ប្រហែល​ជា​មិន​អាចរក្សា​ព័ត៌មាន​អំពី​ពណ៌​ទាំងអស់​របស់​រូបភាព​បាន​ឡើយ ។

            តើ​អ្នក​ពិត​ជា​ចង់​រក្សាទុក​ក្នុង​ទ្រង់ទ្រាយ​នេះ​ឬ ?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "ទ្រង់ទ្រាយ​ឯកសារ​ដែល​បាត់បង់" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            ការ​រក្សាទុក​រូបភាព​នៅ​ជម្រៅ​ពណ៌​ទាប %1 ប៊ីត អាច​បង្ហាញ​លទ្ធផល​នៅ​ក្នុង​ព័ត៌មាន​អំពី​ការ​បាត់​ពណ៌ ។ " +"ភាពថ្លា ក៏​អាច​ត្រូវបាន​យកចេញ​បានដែរ ។

            តើ​អ្នក​ពិតជា​ចង់​រក្សាទុក​នៅ​ជម្រៅ​ពណ៌​នេះ​ឬ ?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "ជម្រៅ​ពណ៌​ទាប" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "មិន​អាច​រក្សាទុក​រូបភាព​បាន​ឡើយ ព្រោះ​មិន​អាច​បង្កើត​ឯកសារ​បណ្ដោះអាសន្នបាន ។" + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "មិន​អាច​រក្សាទុក​ជា \"%1\" បាន​ឡើយ ។" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "មិន​អាច​រក្សាទុក​រូបភាព​បាន​ឡើយ ព្រោះ​មិន​អាច​ផ្ទុក​ឡើង ។" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "យក​ស៊ុម​ខាង​ក្នុង​ចេញ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "យក​ស៊ុម​ខាង​ក្នុង​ចេញ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "ច្រិប​ស្វ័យប្រវត្តិ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "ច្រិប​ស្វ័យប្រវត្តិ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "KolourPaint មិន​អាច​យក​ស៊ុម​ខាង​ក្នុង​របស់​ជម្រើស​ចេញ​បាន​ឡើយ ដោយ​សារ​តែ​មិនអាច​ដាក់​ទីតាំង​បាន ។" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "មិន​អាច​យក​ស៊ុម​ខាង​ក្នុង​ចេញ​បាន​ឡើយ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint មិន​អាច​ច្រិប​រូបភាព​ដោយ​ស្វ័យប្រវត្តិ​បាន​ឡើយ ដោយ​សារ​តែ​មិន​អាច​ដាក់​ទីតាំង​ស៊ុម​របស់វា​បាន ។" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "មិន​អាច​ច្រិប​ស្វ័យប្រវត្តិ​បាន​ឡើយ" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "កំណត់​ជា​រូបភាព" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "ជម្រើស ៖ បង្កើត" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "កម្មវិធី​គំនូរ​របស់ KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "អ្នក​បង្កើត​គម្រោង" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "ប្រធាន​អ្នក​បង្កើត" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "គាំទ្រ​ការ​ស្កេន គាំទ្រ​អាល់ហ្វា អ្នក​ថែទាំ​បច្ចុប្បន្ន" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "រូបតំណាង" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "គាំទ្រ​វិធីសាស្ដ្រ​បញ្ចូល" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "បែបផែន​រូបភាព" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "រួមបញ្ចូល​ក្នុង KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "រួមបញ្ចូល​ក្នុង KDE 4" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "សូម​ថ្លែង​អំណរគុណ​ចំពោះ​អ្នក​ចូល​រួម​ផ្សេងទៀត ដែល​បាន​ជួយ​ធ្វើ​ឲ្យ​កម្មវិធី​នេះ​ដំណើរការ​បាន ។" + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "ឯកសារ​រូបភាព​ដែល​ត្រូវ​បើក" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "មើល" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "រូបភាព" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "ពណ៌" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "របារ​ឧបករណ៍​មេ" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "របារ​ឧបករណ៍​អត្ថបទ" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "ម៉ឺនុយ RMB របស់​ឧបករណ៍​ជម្រើស" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "កែសម្រួល" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "រូបភាព​តូច" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "ចុច​អូស​កណ្ដុរ​ឆ្វេង​លើ​ចំណុច​ទាញ ដើម្បី​ប្ដូរ​ទំហំ​រូបភាព ។" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "ប្ដូរ​ទំហំ​រូបភាព ៖ ប្រើ​ប៊ូតុង​កណ្ដុរ​ទាំងអស់ ។" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "ប្ដូរ​ទំហំ​រូបភាព ៖ ចុច​កណ្ដុរ​ស្ដាំ ដើម្បី​បោះបង់ ។" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "អត្ថបទ" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "មិនអាច​បើក​ក្ដារ​លាយ​ពណ៌ \"%1\" បានទេ ។" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"មិនអាច​បើក​ក្ដារ​លាយ​ពណ៌ \"%1\" បានទេ ដោយសារ​មិនគាំទ្រ​ទ្រង់ទ្រាយ ។\n" +"ឯកសារ ប្រហែល​ជា​ខូច ។" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "មិនអាច​បើក​ក្ដារ​លាយពណ៌ \"%1\" របស់ KDE បានទេ ។" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "មិនអាច​រក្សាទុក​ក្ដារ​លាយ​ពណ៌​ជា \"%1\" បានទេ ។" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "គ្មាន​ចំណង​ជើង" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "ប្រើ​លំនាំដើម​របស់ KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "ប្រើ​របស់ KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "បើក..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "ផ្ទុក​ឡើង​វិញ" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "រក្សាទុក" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "រក្សាទុក​ជា..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "បន្ថែម​ជួរ​ដេក" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "លុប​ជួរដេក​ចុងក្រោយ" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "ប្រអប់​ពណ៌" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"ក្ដារ​លាយ​ពណ៌ \"%1\" ត្រូវបាន​កែប្រែ ។\n" +"តើ​អ្នក​ចង់​រក្សាទុក​វា​ឬ ?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"ក្ដារលាយ​ពណ៌​ \"%1\" របស់ KDE ត្រូវបាន​កែប្រែ ។\n" +"តើ​អ្នក​ចង់​រក្សាទុក​វា​ទៅកាន់​ឯកសារ​ឬ ?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"ក្ដារ​លាយពណ៌​លំនាំដើម ត្រូវបាន​កែប្រែ ។\n" +"តើ​អ្នក​ចង់​រក្សាទុក​វា​ទៅ​ឯកសារ​ឬ ?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "បើក​ក្ដារ​លាយ​ពណ៌" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"ក្ដារលាយពណ៌ \"%1\" ត្រូវបាន​កែប្រែ ។\n" +"ការ​ផ្ទុកឡើងវិញ នឹង​បាត់បង់​រាល់ការ​ផ្លាស់ប្ដូរ​ទាំងអស់ នៅពេល​ដែល​អ្នក​បាន​រក្សាទុកវា​ចុងក្រោយ ។\n" +"តើ​អ្នក​ពិតជា​ចង់​ផ្ទុកឡើងវិញ​ឬ ?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "ផ្ទុក​ឡើង​វិញ" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"ក្ដារលាយពណ៌ \"%1\" របស់ KDE ត្រូវបាន​កែប្រែ ។\n" +"ការ​ផ្ទុកឡើងវិញ​នឹង​ធ្វើ​ឲ្យ​បាត់បង់​រាល់ការ​ផ្លាស់ប្ដូរ​ទាំងអស់ ។\n" +"តើ​អ្នក​ពិតជា​ចង់​ផ្ទុក​ឡើងវិញ​ឬ ?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"ក្ដារ​លាយពណ៌​លំនាំដើម​ត្រូវបាន​កែប្រែ ។\n" +"ការ​ផ្ទុកឡើង​នឹង​ធ្វើ​ឲ្យ​បាត់បង់​រាល់​ការ​ផ្លាស់ប្ដូរ​ទាំងអស់ ។\n" +"តើ​អ្នក​ពិតជា​ចង់ផ្ទុកឡើង​ឬ ?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "រក្សាទុក​ក្ដារ​លាយ​ពណ៌​ជា" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "បិទភ្ជាប់​ក្នុង​បង្អួច​ថ្មី" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "លុប​ជម្រើស" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "ចម្លង​ទៅ​ឯកសារ..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "បិទភ្ជាប់​ពី​ឯកសារ..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "អត្ថបទ ៖ បង្កើត​ប្រអប់" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "អត្ថបទ ៖ បិទភ្ជាប់" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint មិន​អាច​បិទភ្ជាប់​មាតិកា​ក្ដារតម្បៀតខ្ទាស់​​បាន​ទេ ព្រោះ​ថា​វា​មាន​ទ្រង់ទ្រាយ​ដែលមិន​" +"ស្គាល់ ។" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "មិន​អាច​បិទភ្ជាប់​បាន​ឡើយ" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "អត្ថបទ ៖ លុប​ប្រអប់" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "ជម្រើស ៖ លុប" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "អត្ថបទ ៖ បញ្ចប់" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "ជម្រើស ៖ ដោះ​ជម្រើស" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "ចម្លង​ទៅ​ឯកសារ" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "បិទភ្ជាប់​ពី​ឯកសារ" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "នាំចេញ..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "ស្កេន..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "ទទួល​រូបថត​អេក្រង់" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "លក្ខណៈ​សម្បត្តិ" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "ផ្ទុក​ឡើង​វិញ" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "បើក​រូបភាព" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "ពន្យារ​ពេល​កា​រថតរូប" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "វិនាទី" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "គ្មាន​ការ​ពន្យារ" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "បិទភ្ជាប់​ក្នុង​បង្អួច​ថ្មី" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "លក្ខណៈ​សម្បត្តិ​ឯកសារ" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "រក្សាទុក​រូបភាព​ជា" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "នាំចេញ" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"ឯកសារ \"%1\" ត្រូវ​បាន​កែប្រែ ។\n" +"ការ​ផ្ទុកឡើង​វិញ នឹង​បណ្ដាល​ឲ្យ​បាត់បង់​រាល់​ការ​ផ្លាស់ប្ដូរ​ដែល​អ្នក​បាន​រក្សាទុក​ចុងក្រោយ ។\n" +"តើ​អ្នក​ច្បាស់​ហើយ​ឬ ?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"ឯកសារ \"%1\" ត្រូវ​បាន​កែប្រែ ។\n" +"ការ​ផ្ទុកឡើង​វិញ នឹង​បណ្ដាល​ឲ្យ​បាត់បង់​រាល់​ការ​ផ្លាស់ប្ដូរ​ទាំងអស់ ។\n" +"តើ​អ្នក​ច្បាស់​ហើយ​ឬ ?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "បោះពុម្ព​រូបភាព" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"អ្នក​ត្រូវ​តែ​រក្សាទុក​រូបភាព​នេះ​សិន មុន​នឹង​ផ្ញើ​វា ។\n" +"តើ​អ្នក​ចង់​រក្សាទុក​វា​ឬ​ទេ ?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"ឯកសារ \"%1\" ត្រូវ​បាន​កែប្រែ ។\n" +"តើ​អ្នក​ចង់​រក្សាទុក​វា​ឬ​ទេ ?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "ប្ដូរ​ទំហំ / ធ្វើ​មាត្រដ្ឋាន..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "កំណត់​ជា​រូបភាព (ច្រឹប)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "ត្រឡប់ (ត្រឡប់​ចុះក្រោម)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "កញ្ចក់ (ត្រឡប់​ផ្ដេក)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "បង្វិល..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "បង្វិល​ឆ្វេង" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "បង្វិល​ស្ដាំ" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "បញ្ឆៀង..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "បន្ថយ​ត្រឹម​មួយ​ពណ៌ (ច្របល់)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "បន្ថយ​ជា​មាត្រដ្ឋាន​ប្រផេះ" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "បញ្ច្រាស​ពណ៌" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "ជម្រះ" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "បែបផែន​ផ្សេត​ទៀត..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "រូបភាព" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "ជម្រើស" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "បង្ហាញ​ផ្លូវ" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "គ្រួសារ​ពុម្ពអក្សរ" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "ទំហំ​ពុម្ព​អក្សរ" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "ដិត" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "ទ្រេត" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "គូស​បន្ទាត់​ពី​ក្រោម" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "បន្ទាត់​ឆូត" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "ជម្រើស​ឧបករណ៍​មុន (ក្រុម #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "ជម្រើស​ឧបករណ៍​បន្ទាប់ (ក្រុម #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "ជម្រើស​ឧបករណ៍​មុន (ក្រុម #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "ជម្រើស​ឧបករណ៍​បន្ទា​ប់ (ក្រុម #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "គូរ​ភាពស្រអាប់" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "គូរ​ដោយប្រើ​ភាព​ស្រដៀង​គ្នា​នៃ​ពណ៌..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "ប្រអប់​ឧបករណ៍" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "បង្ហាញ​ក្រឡាចត្រង្គ" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "បង្ហាញ​រូបភាព​តូច" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "របៀប​រូបភាព​តូច​ពង្រីក" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "អនុញ្ញាត​ឲ្យ​មាន​ចតុកោណកែង​រូបភាព​តូច" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "ពង្រីក" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "រូបភាព​ទាំង​មូល" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "ជក់" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "គូរ​ដោយ​ប្រើ​ជក់​ដែល​មាន​រាង និង​ទំហំ​ខុសៗ​គ្នា" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "ចុច​ដើម្បី​គូរ​ចំណុច ឬ​អូស​ដើម្បី​គូរ​ខ្វាច់ ។" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "ជ័រលុប​ពណ៌" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "ជំនួស​ភីកសែល​ពណ៌​ផ្ទៃ​ខាង​មុខ​ដោយ​ពណ៌​ផ្ទៃ​ខាង​ក្រោយ" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "ចុច ឬ​អូស ដើម្បី​លុប​ភីកសែល​ពណ៌​ផ្ទៃ​ខាងមុខ ។" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "ជ័រលុប" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "អនុញ្ញាត​ឲ្យ​អ្នក​លុប​កំហុស" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "ចុច ឬ​អូស​ដើម្បី​លុប ។" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "ប្រើ​ប៊ូតុង​កណ្ដុរ​ទាំងអស់ ។" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "ប៊ិក" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "គូរ​ចំណុច ឬ​ខ្វាច់" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "កំប៉ុង​បាញ់​ថ្នាំ" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "បាញ់​ហ្គ្រាហ្វ៊ីទី" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "ចុច ឬ​អូស​ដើម្បី​បាញ់​ហ្គ្រាហ្វ៊ីទី ។" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "ចុច​កណ្ដុរ​ស្ដាំ ដើម្បី​បោះបង់ ។" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "ចុច​កណ្ដុរ​ឆ្វេង ដើម្បី​បោះបង់ ។" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1 ៖ " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "អនុញ្ញាត​ឲ្យ​អ្នក​ជ្រើស​ពណ៌​ពី​រូបភាព" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "ចុច​ដើម្បី​ជ្រើស​ពណ៌ ។" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "បំពេញ​តំបន់​នៅ​ក្នុង​រូបភាព" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "ចុច ដើម្បី​បំពេញ​តំបន់​មួយ ។" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "ពង្រីក" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "ពង្រីក និង​បង្រួម​រូបភាព" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "ចុច​ដើម្បី​ពង្រីក/​បង្រួម ឬ​ចុច​អូស​កណ្ដុរ​ខាងឆ្វេង​ដើម្បី​ពង្រីក ឬ​បង្រួម​ទៅ​ផ្ទៃ​ជាក់លាក់ ។" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "ខ្សែ​កោង" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "គូរ​ខ្សែកោង" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "អូស​ចំណុច​ចាប់ផ្ដើម និង​ចំណុច​បញ្ចប់ ។" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "ចុច​អូស​កណ្ដុរ​ខាងឆ្វេង ដើម្បី​កំណត់​ចំណុច​បញ្ជា​ទីមួយ ឬ​ចុច​កណ្ដុរ​ស្ដាំ​ដើម្បី​បញ្ចប់ ។" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "ចុច​អូស​កណ្ដុរ​ខាងស្ដាំ ដើម្បី​កំណត់​ចំណុច​បញ្ជា​ទីមួយ ឬ​ចុច​កណ្ដុរ​ឆ្វេង​ដើម្បី​បញ្ចប់ ។" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "ចុច​អូស​កណ្ដុរ​ខាង​ឆ្វេង ដើម្បី​កំណត់​ចំណុច​បញ្ជា​ចុងក្រោយ ឬ​ចុច​កណ្ដុរ​ស្ដាំ​ដើម្បី​បញ្ចប់ ។" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "ចុច​អូស​កណ្ដុរ​ខាង​ស្ដាំ ដើម្បី​កំណត់​ចំណុច​បញ្ជា​ចុងក្រោយ ឬ​ចុច​កណ្ដុរ​ឆ្វេង​ដើម្បី​បញ្ចប់ ។" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "បន្ទាត់" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "គូរ​បន្ទាត់" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "អូស​ដើម្បី​គូរ ។" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "ពហុកោណ" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "គូរ​ពហុកោណ" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "អូស ដើម្បី​គូរ​បន្ទាត់​ទីមួយ ។" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "ចុច​អូស​បន្ទាត់​ផ្សេងទៀត​ដោយ​កណ្ដុរ​ឆ្វេង ឬ​ចុច​កណ្ដុរ​ស្ដាំ​ដើម្បី​បញ្ចប់ ។" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "ចុច​អូស​បន្ទាត់​ផ្សេងទៀត​ដោយ​កណ្ដុរ​ស្ដាំ ឬ​ចុច​កណ្ដុរ​ឆ្វេង​ដើម្បី​បញ្ចប់ ។" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "បន្ទាត់​តភ្ជាប់" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "គូរ​បន្ទាត់​តភ្ជាប់" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "ពងក្រពើ" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "គូរ​រាង​ពងក្រពើ និង​រង្វង់" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "ចតុកោណកែង" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "គូរ​ចតុកោណកែង និង​ការេ" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "ចតុកោណកែង​ជ្រុង​មូល" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "គូរ​ចតុកោណកែង និង​ការេ​ជ្រុង​មូល" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "ចុច​អូស​កណ្ដុរ​ខាងឆ្វេង ដើម្បី​បង្កើត​ជម្រើស ។" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "ចុច​កណ្ដុរ​ខាងឆ្វេង ដើម្បី​ផ្លាស់ទី​ជម្រើស ។" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "ចុច​កណ្ដុរ​ខាងឆ្វេង ដើម្បី​ធ្វើ​មាត្រដ្ឋាន​ជម្រើស ។" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "ជម្រើស ៖ ស្រអាប់" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "ជម្រើស ៖ ថ្លា" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "ជម្រើស ៖ ពណ៌​ថ្លា" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "ជម្រើស ៖ ភាព​ស្រដៀង​ពណ៌​ថ្លា" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "ជម្រើស (រាង​ពងក្រពើ)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "បង្កើត​ជម្រើស​រាង​ពងក្រពើ ឬ​រាង​រង្វង់" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "ជម្រើស (ទម្រង់​សេរី)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "បង្កើត​ជម្រើស​ទម្រង់​សេរី" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "ជម្រើស (រាង​ចតុកោណកែង)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "បង្កើត​ជម្រើស​រាង​ចតុកោណកែង" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "ជម្រើស ៖ ផ្លាស់ទី" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1 ៖ លាប" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "សរសេរ​អត្ថបទ" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "អត្ថបទ ៖ លុប​ថយ​ក្រោយ" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "អត្ថបទ ៖ លុប" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "អត្ថបទ ៖ បន្ទាត់​ថ្មី" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "អត្ថបទ ៖ សរសេរ" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "ចុច​អូស​កណ្ដុរ​ខាងឆ្វេង ដើម្បី​បង្កើត​ប្រអប់​អត្ថបទ ។" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "ចុច​អូស​កណ្ដុរ​ខាង​ឆ្វេង ដើម្បី​ផ្លាស់ទី​ប្រអប់​អត្ថបទ ។" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "អត្ថបទ ៖ ផ្លាស់ទី​ប្រអប់" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "ចុច​អូស​កណ្ដុរ​ខាងឆ្វេង ដើម្បី​ប្ដូរ​ទំហំ​ប្រអប់​អត្ថបទ ។" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "ចុច​កណ្ដុរ​ឆ្វេង ដើម្បី​ផ្លាស់ប្ដូរ​ទីតាំង​ទស្សន៍​ទ្រនិច ។" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "អត្ថបទ ៖ ផ្ទៃ​ខាង​ក្រោយ​ស្រអាប់" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "អត្ថបទ ៖ ផ្ទៃ​ខាងក្រោយ​ថ្លា" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "អត្ថបទ ៖ ដូរ​ពណ៌" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "អត្ថបទ ៖ ពណ៌​ផ្ទៃ​ខាង​មុខ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "អត្ថបទ ៖ ពណ៌​ផ្ទៃ​ខាង​ក្រោយ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "អត្ថបទ ៖ ពុម្ពអក្សរ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "អត្ថបទ ៖ ទំហំ​ពុម្ពអក្សរ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "អត្ថបទ ៖ ដិត" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "អត្ថបទ ៖ ទ្រេត" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "អត្ថបទ ៖ គូស​បន្ទាត់​ពីក្រោម" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "អត្ថបទ ៖ បន្ទាត់​ឆូត" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "រៀប​មិន​បាន​ពង្រីក - រូបភាព​តូច" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - រូបភាព​តូច" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            ភាព​ស្រដៀងគ្នា​នៃ​ពណ៌ គឺ​ជា​ភាព​ស្រដៀងគ្នា​នៃ​ពណ៌​របស់​ភីកសែល​ផ្សេងគ្នា គឺ​សម្រាប់​" +"ប្រតិបត្តិការ​ដើម្បី​កំណត់​ពួកវា​ឲ្យ​ដូចគ្នា ។

            ប្រសិន​បើ​អ្នក​កំណត់​វា​ទៅ​អ្វី​ផ្សេង​ក្រៅពី ដូចគ្នា​" +"បេះបិទ អ្នក​អាច​ធ្វើការ​កាន់តែ​មាន​ប្រសិទ្ធិភាព​ជាមួយ​នឹង​រូបភាព និង​រូបថត​ច្របល់​ចូលគ្នា តាម​លក្ខណៈ​" +"ប្រៀបធៀប​ចំពោះ​លក្ខណៈ​ពិសេស \"ដំបង​វេទមន្ត\" នៃ​កម្មវិធី​គំនូរ​ផ្សេងទៀត ។

            លក្ខណៈពិសេស​" +"នេះអនុវត្ត​ទៅ ៖

            • ជម្រើស ៖ នៅ​ក្នុង​របៀប​ថ្លា ពណ៌​នៅ​ក្នុង​ជម្រើស​ដែល​" +"ស្រដៀងគ្នា​​ទៅនឹង​ពណ៌​ផ្ទៃ​ខាងក្រោយ​នឹង​ត្រូវ​បាន​ធ្វើ​ឲ្យ​ថ្លា ។
            • បំពេញ​ទាំងមូល ៖ " +"ចំពោះ​តំបន់​ដែល​មាន​ភីកសែលពណ៌​ស្រដៀងគ្នា - ប៉ុន្តែ​មិនដូចគ្នា​បេះបិទ ការ​កំណត់​កាន់តែ​ខ្ពស់​​គឺ​​បំពេញ​" +"ភីកសែល​កាន់តែច្រើន ។​
            • ជ័រ​លុប​ពណ៌ ៖ ភីកសែល​របស់​ពណ៌​ដែល​ស្រដៀង​គ្នា​នឹង​ពណ៌​ផ្ទៃ​" +"ខាងមុខ នឹង​ត្រូវ​បាន​ជំនួស​ដោយ​ពណ៌​ផ្ទៃ​ខាងក្រោយ ។
            • ច្រិប​ស្វ័យប្រវត្តិ និង យក​ស៊ុម​" +"ខាងក្នុង​ចេញ ៖ សម្រាប់​ស៊ុម​ដែល​មាន​ភីកសែល​ពណ៌​ស្រដៀងគ្នា ប៉ុន្តែ​មិនដូចគ្នា​បេះបិទ នោះ​ការ​" +"កំណត់​កាន់តែ​ខ្ពស់​គឺ​ត្រូវ​ច្រិប​ស៊ុម​ទាំងមូល ។

            ការ​កំណត់​កាន់តែ​ខ្ពស់ មានន័យថា​ប្រតិបត្តិការ​កំណត់​ជួរ​" +"ពណ៌​ដែលបាន​បង្កើន​ឲ្យ​ស្រដៀងគ្នា​គ្រប់គ្រាន់​គឺ​ដូចគ្នា ។ ដូច្នេះ អ្នក​គួរតែ​បង្កើន​ការ​កំណត់ ប្រសិន​បើ​" +"ប្រតិបត្តិការ​ខាងលើ គឺ​មិនមែន​ជា​ភីកសែល​ដែល​មាន​ប្រសិទ្ធិភាព ដែល​អ្នក​កំណត់​ពណ៌​របស់វា​ឲ្យ​ស្រដៀងគ្នា ។

            ទោះយ៉ាងណា ប្រសិន​បើ​ពួកវាមានប្រសិទ្ធិភាព​ច្រើនពេក ហើយ​ប្ដូរ​ភីកសែល​ដែល​អ្នក​មិន​កំណត់​ពណ៌​របស់​វា​ឲ្យ​" +"ស្រដៀងគ្នា (ឧទាហរណ៍ ប្រសិន​បើ ការ​បំពេញ​ទាំង​ស្រុង ប្ដូរ​ភីកសែល​ច្រើន​ពេក) អ្នក​គួរតែ​បន្ថយ​ការ​" +"កំណត់​នេះ ។

            ដើម្បី​កំណត់​រចនា​សម្ព័ន្ធ​វា សូម​ចុច​នៅលើ​គូប ។

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            ភាព​ស្រដៀងគ្នា​នៃ​ពណ៌គឺ​ជា​របៀប​ដែល​ភាព​ស្រដៀងគ្នា​នៃ​ពណ៌​របស់​ភីកសែល​ផ្សេងគ្នា " +"គឺ​សម្រាប់​ប្រតិបត្តិការ​ដើម្បី​កំណត់​ពួកវា​ឲ្យ​ដូចគ្នា ។

            ប្រសិន​បើ​អ្នក​កំណត់​វា​ទៅ​អ្វី​ផ្សេង​ក្រៅពី ដូចគ្នា​" +"បេះបិទ អ្នក​អាច​ធ្វើការ​កាន់តែ​មាន​ប្រសិទ្ធិភាព​ជាមួយ​នឹង​រូបភាព និង​រូបថត​ច្របល់​ចូលគ្នា តាម​លក្ខណៈ​" +"ប្រៀបធៀប​ចំពោះ​លក្ខណៈ​ពិសេស \"ដំបង​វេទមន្ត\" នៃ​កម្មវិធី​គំនូរ​ផ្សេងទៀត ។

            លក្ខណៈពិសេស​នេះ​" +"អនុវត្ត​ចំពោះ ៖

            • ជម្រើស ៖ ជា​របៀបថ្លា ពណ៌​នៅ​ក្នុង​ជម្រើស​ដែល​" +"ស្រដៀងគ្នា​​ទៅនឹង​ពណ៌​ផ្ទៃ​ខាងក្រោយ​នឹង​ត្រូវ​បាន​ធ្វើ​ឲ្យ​ថ្លា ។
            • បំពេញ​ទាំង​មូល ៖ " +"ចំពោះ​តំបន់​ដែល​មាន​ភីកសែលពណ៌​ស្រដៀងគ្នា ប៉ុន្តែ​មិនដូចគ្នា​បេះបិទ ការ​កំណត់​កាន់តែ​ខ្ពស់​​គឺ​​បំពេញ​ភីកសែល​" +"កាន់តែច្រើន ។
            • ជ័រ​លុប​ពណ៌ ៖ ភីកសែល​របស់​ពណ៌​ដែល​ស្រដៀង​គ្នា​នឹង​ពណ៌​ផ្ទៃ​ខាងមុខ " +"នឹង​ត្រូវ​បាន​ជំនួស​ដោយ​ពណ៌​ផ្ទៃ​ខាងក្រោយ ។
            • ច្រិប​ស្វ័យប្រវត្តិ និង យក​ស៊ុម​ខាងក្នុង​ចេញ ៖ សម្រាប់​ស៊ុម​ដែល​មាន​ភីកសែល​ពណ៌​ស្រដៀងគ្នា ប៉ុន្តែ​មិនដូចគ្នា​បេះបិទ នោះ​ការ​កំណត់​កាន់តែ​ខ្ពស់​គឺ​" +"ត្រូវ​ច្រិប​ស៊ុម​ទាំងមូល ។

            ការ​កំណត់​កាន់តែ​ខ្ពស់ មានន័យថា​ប្រតិបត្តិការ​កំណត់​ជួរ​ពណ៌​ដែលបាន​បង្កើន​" +"ឲ្យ​ស្រដៀងគ្នា​គ្រប់គ្រាន់​គឺ​ដូចគ្នា ។ ដូច្នេះ អ្នក​គួរតែ​បង្កើន​ការ​កំណត់ ប្រសិន​បើ​ប្រតិបត្តិការ​" +"ខាងលើ គឺ​មិនមែន​ជា​ភីកសែល​ដែល​មាន​ប្រសិទ្ធិភាព ដែល​អ្នក​កំណត់​ពណ៌​របស់វា​ឲ្យ​ស្រដៀងគ្នា ។

            ទោះយ៉ាងណា ប្រសិន​បើ​ពួកវាមានប្រសិទ្ធិភាព​ច្រើនពេក ហើយ​ប្ដូរ​ភីកសែល​ដែល​អ្នក​មិន​កំណត់​ពណ៌​របស់​វា​ឲ្យ​" +"ស្រដៀងគ្នា (ឧទាហរណ៍ ប្រសិន​បើ ការ​បំពេញ​ទាំង​ស្រុង ប្ដូរ​ភីកសែល​ច្រើន​ពេក) អ្នក​គួរតែ​បន្ថយ​ការ​" +"កំណត់​នេះ ។

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            ភាព​ស្រដៀងគ្នា​នៃ​ពណ៌ ៖ %1%

            ចុច​ដើម្បី​កំណត់​រចនា​សម្ព័ន្ធ ។

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            ភាព​ស្រដៀងគ្នា​នៃ​ពណ៌ ៖ ដូចគ្នា​បេះបិទ

            ចុច​ដើម្បី​កំណត់​រចនា​សម្ព័ន្ធ ។" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "ពន្លឺ ៖" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "កំណត់​ឡើង​វិញ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "កម្រិត​ពណ៌ ៖" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "ហ្គាម៉ា ៖" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "កំណត់​ឡើង​វិញ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "ឆានែល ៖" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "ទាំង​អស់" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "ក្រហម" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "បៃតង" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "ខៀវ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "កំណត់​តម្លៃ​ទាំងអស់​ឡើង​វិញ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "ការ​កំណត់" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "ចំនួន ៖" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "អនុញ្ញាត" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "ពណ៌" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "ភាពលាំៗ​នៃ​ពណ៌ ៖" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "តិត្ថិភាព ៖" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "តម្លៃ ៖" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "ក្រហម" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "បៃតង" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "ខៀវ" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "ទាំងអស់" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "ឆានែល" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "មួយ​ពណ៌" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "មួយ​ពណ៌ (ច្របល់)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "២៥៦ ពណ៌" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "២៥៦ ពណ៌ (ច្របល់)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "ពណ៌ ២៤ ប៊ីត" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "បន្ថយ​ត្រឹម" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "គ្រាប់ៗ" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            ដើម្បី​ជ្រើស​ពណ៌​ផ្ទៃ​ខាង​មុខ​ដែល​ឧបករណ៍​ប្រើ​ដើម្បី​គូរ គឺ​ត្រូវ​ចុច​កណ្ដុរ​ខាងឆ្វេង​លើក្រឡា​ពណ៌​បំពេញ ។ " +"ដើម្បី​ជ្រើសពណ៌​ផ្ទៃ​ខាងក្រោយ គឺ​ត្រូវ​ចុច​កណ្ដុរ​ខាងស្ដាំ​វិញ ។

            ដើម្បី​ប្ដូរ​ពណ៌​នៃ​ក្រឡា​ពណ៌​ដោយ​ខ្លួនវា គឺ​" +"ត្រូវ​ចុច​ទ្វេដង​លើ​វា ។

            អ្នក​ក៏អាច​ប្ដូរ​ពណ៌​ក្រឡា​បំពេញ​ដោយ​ក្រឡា​ផ្សេងទៀត​ដោយ​អូស ហើយ​ទម្លាក់​ក៏បាន​" +"ដែរ ។ ហើយ ប្រសិន​បើ​អ្នក​សង្កត់​គ្រាប់​ចុច បញ្ជា ឲ្យ​នោះ​ពណ៌​របស់​ក្រឡា​ទិសដៅ នឹង​ត្រូវ​បាន​សរសេរ​" +"ជាន់ គឺ​ជំនួស​ការប្ដូរ​ពណ៌​ក្រឡា​ប្រភព ។

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "បម្លែង​ជា ៖" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "គុណភាព ៖" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "មើល​ជា​មុន" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "មួយ​ពណ៌" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "មួយ​ពណ៌ (ច្របល់)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "២៥៦ ពណ៌" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "២៥៦ ពណ៌ (ច្របល់)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "ពណ៌ ២៤ ប៊ីត" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "ទីតាំង​រូបភាព" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "កណ្ដាល​ទំព័រ" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "លើ​ខាង​ឆ្វេង​ទំព័រ" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "ថ្លា" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint លំនាំដើម" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "ពណ៌ ៖ %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "ពណ៌ ៖ %1 [កែប្រែ]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "រង្វង់" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "ការេ" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "សញ្ញា /" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Backslash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "មិន​បំពេញ" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "បំពេញ​ដោយ​ពណ៌​ផ្ទៃ​ខាង​ក្រោយ" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "បំពេញ​ដោយ​ពណ៌​ផ្ទៃ​ខាង​មុខ" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "ស្រអាប់" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "មាន​ឯកសារ​ដែល​មាន​ឈ្មោះ \"%1\" រួច​ហើយ ។\n" +#~ "តើ​អ្នក​ចង់​សរសេរ​ជាន់​លើ​វា​ឬ​ទេ ?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "មាន​ក្ដារ​លាយ​ពណ៌ \"%1\" រួចហើ  ។\n" +#~ "តើ​អ្នក​ចង់​សរសេរ​ជាន់លើ​វា​ឬទ  ?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "ការ​កំណត់​កម្រិត​ពង្រីក​ទៅ​ជា​តម្លៃ​មួយ ដែល​មិន​មែន​ជា​ពហុគុណ​នៃ 100% អាច​នឹង​បណ្ដាល​ឲ្យ​ការ​កែសម្រួល​មាន​ភាព​" +#~ "មិន​ជាក់លាក់ ហើយនឹងគូរ glitch ឡើង​វិញ ។\n" +#~ "តើ​អ្នក​ពិត​ជា​ចង់​កំណត់​កម្រិត​ពង្រីក​ទៅ​ជា %1% ឬ ?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "កំណត់​កម្រិត​ពង្រីក​ត្រឹម %1%" + +#~ msgid "None" +#~ msgstr "គ្មាន" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            ការ​ប្ដូរ​ទំហំ​រូបភាព​ទៅ​ជា %1x%2 អាច​នឹង​ចំណាយ​អស់​សតិ​ច្រើន​គួរ​សម​ដែរ ។ វា​អាច​នឹង​ធ្វើ​ឲ្យ​ភាព​" +#~ "ទទួល​ខុសត្រូវ​របស់​ប្រព័ន្ធ​ថយចុះ ហើយ​អាច​នឹង​បណ្ដាល​ឲ្យ​មាន​បញ្ហា​ជាមួយ​ធនធាន​របស់​កម្មវិធី​ផ្សេង​ទៀត ។

            តើ​អ្នក​ពិត​ជា​ចង់​ប្ដូរ​ទំហំ​រូបភាព​ឬ ?

            " + +#~ msgid "Overwrite" +#~ msgstr "សរសេរ​ជាន់លើ" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "មិន​អាច​បើក \"%1\" បាន​ឡើយ ព្រោះ​​មិន​ស្គាល់​ប្រភេទ mime ។" + +#~ msgid "Save Preview" +#~ msgstr "រក្សាទុក​ទិដ្ឋភាព​ជាមុន" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "ដើម្បី​ទទួល​បាន​ការ​គាំទ្រ សូម​ចូល​ទៅកាន់​តំបន់​បណ្ដាញ ។" + +#~ msgid "No Scanning Support" +#~ msgstr "គ្មាន​ការ​គាំទ្រ​ការ​ស្កេន" + +#~ msgid "Scanning support is not installed." +#~ msgstr "មិន​បាន​ដំឡើង​ការ​គាំទ្រ​ការ​ស្កេន ។" diff --git a/po/ko/kolourpaint.po b/po/ko/kolourpaint.po new file mode 100644 index 0000000..b11ab18 --- /dev/null +++ b/po/ko/kolourpaint.po @@ -0,0 +1,2752 @@ +# Translation of kolourpaint to Korean. +# Copyright (C) 2007-2008 This_file_is_part_of_KDE +# This file is distributed under the same license as the kdegraphics package. +# Shinjo Park , 2007, 2008, 2009, 2011, 2012, 2013, 2015, 2016, 2017, 2020, 2021, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-04-16 22:57+0200\n" +"Last-Translator: Shinjo Park \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 21.08.1\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "박신조" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kde@peremen.name" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "색 균형" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "부드럽게" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "선명하게" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "비우기" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "선택: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "엠보싱" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "평평하게" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "그레이스케일로 축소" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "명도, 채도, 값" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "색 뒤집기" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "뒤집기" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "모노크롬으로 축소 (디더링)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "모노크롬으로 축소" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "256색으로 축소 (디더링)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "256색으로 축소" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "히스토그램 이퀄라이저" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "뒤집기" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "상하 및 좌우 반전" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "상하 반전" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "좌우 반전" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "텍스트: 상자 크기 조정" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "선택: 크기 조정" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "선택: 부드러운 크기 조정" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "잘라내기" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "크기 조정" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "부드러운 크기 조정" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "회전" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "크기 조정" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "실행 취소: %1(&U)" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "실행 취소(&U)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "다시 실행: %1(&R)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "다시 실행(&R)" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "실행 취소: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "실행 취소" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "다시 실행: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "다시 실행" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "항목 %1개 더 있음" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "색상 선택기" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "영역 채우기" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "더 많은 그림 효과 (선택 영역)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "더 많은 그림 효과" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "효과(&E):" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "색상 축소" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "부드럽고 날카롭게" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "문서 속성" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "인치당 점 수 (DPI)(&P)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "지정되지 않음" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "수평:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "수직:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            인치당 점 수 (DPI) 값은 1인치 (2.54 cm) 안에 인쇄될 그림의 점 " +"개수를 나타냅니다.

            높은 값을 사용하면 그림 크기는 작아집니다. 프린터에 " +"따라서 다르지만, 300이나 600 DPI 이상으로 크기를 조정했을 때 프린터에서 좋은 " +"품질로 인쇄하지 못할 수 있습니다.

            화면에 나타나는 크기대로 그림을 인쇄" +"하려면, DPI 값을 화면과 똑같게 설정하십시오.

            둘 중 하나의 값이 지정" +"되지 않음으로 설정되어 있으면 그림은 화면에 나타나는 것과 같은 크기로 인" +"쇄됩니다.

            모든 그림 형식이 DPI 값을 지원하지는 않습니다. 지원하지 않는 " +"형식으로 저장하면 DPI 값은 저장되지 않습니다.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "위치(&F)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            위치 값은 그림이 다른 곳에 비교해서 인쇄될 상대적인 위치를 지정" +"합니다.

            모든 그림 형식이 위치를 지원하지는 않습니다. 지원하지 않는 형식" +"으로 저장하면 위치 값은 저장되지 않습니다.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "텍스트 필드(&T)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "행 추가(&A)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "행 삭제(&D)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "초기화(&R)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            텍스트 필드는 그림의 추가 정보를 제공합니다. 이것은 텍스트를 자" +"유롭게 적을 수 있는 설명 영역입니다.

            그러나 이것은 형식마다 다르기 때문" +"에 각 필드는 이론적으로 수정하면 안 되는 컴퓨터가 처리하는 값이 되어야 하지" +"만 그럴 확률은 낮습니다.

            모든 그림 형식이 텍스트 필드를 지원하지는 않습" +"니다. 지원하지 않는 형식으로 저장하면 텍스트 필드 값은 저장되지 않습니다." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "키" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "값" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "%2 줄의 텍스트 값 \"%1\"에는 키가 필요합니다." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"모든 텍스트 키는 달라야 합니다. %2번째와 %3번째 줄에 있는 텍스트 키 \"%1\"은" +"(는) 모두 같습니다." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "잘못된 텍스트 필드" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "크기" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "원본:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "미리 보기" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "업데이트(&U)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "잘라내기 / 크기 조정" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "다음에 작용(&T):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "전체 그림" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "선택 영역" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "텍스트 상자" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "동작" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"

            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • 잘라내기: 그림의 크기를 확대할 때는 빈 영역을 오른쪽 아래" +"에 만들고 배경색으로 채웁니다. 그림의 크기를 축소할 때는 오른쪽 아래부터 영역" +"을 잘라 나갑니다.
            • 크기 조정: 그림의 픽셀을 복사하거나 삭제하면" +"서 그림의 크기를 조정합니다.
            • 부드러운 크기 조정: 크기 조정" +"과 같지만 그림을 부드럽게 만듭니다.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "잘라내기(&R)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "크기 조정(&S)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "부드러운 크기 조정(&M)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "폭:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "높이:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "새로 만들기(&N):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "배율(&P):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "가로 세로 비율 고정(&A)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            텍스트 상자의 크기를 %1x%2(으)로 조정하는 것은 많은 양의 메모리를 사용" +"합니다. 시스템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 " +"수 있습니다.

            텍스트 상자의 크기를 조정하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "텍스트 상자의 크기를 조정하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "텍스트 상자 크기 조정(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            그림 크기를 %1x%2에 맞게 잘라내는 것은 많은 양의 메모리를 사용합니다. " +"시스템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 수 있습니" +"다.

            그림을 잘라내시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "그림 크기를 조정하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "그림 잘라내기(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            그림 크기를 %1x%2(으)로 조정하는 것은 많은 양의 메모리를 사용합니다. " +"시스템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 수 있습니" +"다.

            그림 크기를 조정하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "그림 크기를 조정하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "그림 크기 조정(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            선택 영역 크기를 %1x%2(으)로 조정하는 것은 많은 양의 메모리를 사용합니" +"다. 시스템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 수 있" +"습니다.

            선택 영역 크기를 조정하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "선택 영역 크기를 조정하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "선택 영역 크기 조정(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            그림 크기를 부드럽게 %1x%2(으)로 조정하는 것은 많은 양의 메모리를 사용" +"합니다. 시스템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 " +"수 있습니다.

            그림 크기를 부드럽게 조정하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "그림 크기를 부드럽게 조정하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "그림 크기 부드럽게 조정(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            선택 영역 크기를 부드럽게 %1x%2(으)로 조정하는 것은 많은 양의 메모리" +"를 사용합니다. 시스템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가" +"져올 수 있습니다.

            선택 영역 크기를 부드럽게 조정하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "선택 영역 크기를 부드럽게 조정하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "선택 영역 크기 부드럽게 조정(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "선택 영역 회전" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "그림 회전" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "회전한 후:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "방향" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "반시계 방향(&N)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "시계 방향(&L)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "각도" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90도(&D)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180도(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270도(&G)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "사용자 정의(&U):" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "도" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            선택 영역을 %1x%2(으)로 회전하면 많은 양의 메모리를 사용합니다. 시스" +"템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 수 있습니다.

            선택 영역을 회전하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "선택 영역을 회전하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "선택 영역 회전(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            그림을 %1x%2(으)로 회전하면 많은 양의 메모리를 사용합니다. 시스템 응" +"답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 수 있습니다.

            " +"그림을 회전하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "그림을 회전하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "그림 회전(&E)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "선택 영역 크기 조절" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "그림 크기 조절" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "크기 조절한 후:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "수평(&H):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "수직(&V):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            선택 영역 크기를 %1x%2(으)로 조정하면 많은 양의 메모리를 사용합니다. " +"시스템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 수 있습니" +"다.

            선택의 크기를 조정하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "선택 영역의 크기를 조절하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "선택 영역 크기 조절(&E)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            그림 크기를 %1x%2(으)로 조정하면 많은 양의 메모리를 사용합니다. 시스" +"템 응답 속도를 늦출 수 있고 다른 프로그램의 자원 문제를 가져올 수 있습니다.

            그림의 크기를 조정하시겠습니까?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "그림의 크기를 조절하시겠습니까?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "그림 크기 조절(&E)" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "색상 유사도" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "RGB 색상 큐브 거리(&R)" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "정확하게 일치" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "색상 유사도가 무엇입니까?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "미리 보기 저장" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1바이트(약 %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "\"%1\"을(를) 열 수 없습니다." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\"을(를) 열 수 없습니다 - 지원하지 않는 그림 형식.\n" +"파일이 잘못되었을 수 있습니다." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "그림을 저장할 수 없습니다 - 정보가 부족합니다." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"MIME 형식: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<비어 있음>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "내부 오류" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            %1 형식은 그림의 모든 색상 정보를 저장하지 못할 수도 있습니다." +"

            그래도 이 형식으로 저장하시겠습니까?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "손실 파일 형식" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            그림의 색 농도를 %1비트로 저장하면 색상 정보가 손실될 수 있습니다. 투" +"명도 데이터도 삭제될 수 있습니다.

            이 색 농도로 저장하시겠습니까?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "낮은 색 농도" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "그림을 저장할 수 없습니다 - 임시 파일을 만들 수 없습니다." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "\"%1\"(으)로 저장할 수 없습니다: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "그림 저장 오류" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "그림을 저장할 수 없습니다 - 업로드에 실패했습니다." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "내부 경계 삭제(&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "내부 경계 삭제" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "자동 자르기(&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "자동 자르기" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "선택 영역의 내부 경계를 찾을 수 없어서 삭제할 수 없습니다." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "내부 경계를 지울 수 없음" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "경계를 찾을 수 없어서 그림을 자동으로 자를 수 없습니다." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "자동으로 자를 수 없음" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "그림으로 설정" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "선택: 만들기" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "KDE 그리기 프로그램" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "프로젝트 설립자" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "수석 탐색자" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "스캐닝 지원, 투명도 지원, 현재 관리자" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "아이콘" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "입력기 지원" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "그림 효과" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 이식" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF5 이식" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "이 프로그램을 만든 다른 사람들에게 감사드립니다." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "열 그림 파일, 선택 사항" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "모든 지원하는 그림 MIME 형식 출력" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "보기(&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "그림(&I)" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "색상(&C)" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "주 도구 모음" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "텍스트 도구 모음" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "선택 도구 오른쪽 마우스 단추 메뉴" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "편집(&E)" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "축소판" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "핸들을 왼쪽 단추를 누르면서 드래그해서 그림 크기를 조절하십시오." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "그림 크기 조절: 모든 마우스 단추를 사용할 수 있습니다." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "그림 크기 조절: 오른쪽 단추를 클릭하면 취소합니다." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "텍스트" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "색 팔레트 \"%1\"을(를) 열 수 없습니다." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"색 팔레트 \"%1\"을(를) 열 수 없습니다 - 지원하지 않는 형식입니다.\n" +"파일이 잘못되었을 수 있습니다." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "KDE 색 팔레트 \"%1\"을(를) 열 수 없습니다." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "색 팔레트를 \"%1\"(으)로 저장할 수 없습니다." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "제목 없음" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "KolourPaint 기본값 사용" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE의 다음 팔레트 사용" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "열기(&O)..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "다시 읽기(&D)" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "저장(&S)" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "다른 이름으로 저장(&A)..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "열 추가" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "마지막 열 삭제" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "색 상자" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"색 팔레트 \"%1\"이(가) 수정되었습니다.\n" +"저장하시겠습니까?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE 색 팔레트 \"%1\"이(가) 수정되었습니다.\n" +"파일로 저장하시겠습니까?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"기본 색 팔레트가 수정되었습니다.\n" +"파일로 저장하시겠습니까?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "색 팔레트 열기" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"색 팔레트 \"%1\"이(가) 수정되었습니다.\n" +"색 팔레트를 다시 읽어오면 마지막으로 저장한 후의 변경 사항을 잃어버립니다.\n" +"계속 진행하시겠습니까?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "다시 읽기(&R)" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE 색 팔레트 \"%1\"이(가) 수정되었습니다.\n" +"다시 읽어오면 모든 변경 사항을 잃어버립니다.\n" +"계속 진행하시겠습니까?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"기본 색 팔레트가 수정되었습니다.\n" +"다시 읽어오면 모든 변경 사항을 잃어버립니다.\n" +"계속 진행하시겠습니까?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "다른 이름으로 색 팔레트 저장" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "새 창에 붙여넣기(&N)" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "선택 영역 삭제(&D)" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "파일로 복사(&O)..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "파일에서 붙여넣기(&F)..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "텍스트: 상자 만들기" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "텍스트: 붙여넣기" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint에서 현재 클립보드의 내용을 인식할 수 없어서 붙여넣을 수 없습" +"니다." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "붙여넣을 수 없음" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "텍스트: 상자 삭제" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "선택 영역: 삭제" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "텍스트: 완료됨" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "선택 영역: 해제됨" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "파일로 복사" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "파일에서 붙여넣기" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "내보내기(&X)..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "스캔..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "스크린샷 찍기" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "속성" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "다시 읽기(&D)" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "모든 지원하는 파일 (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "그림 열기" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "스캔 대화 상자를 열 수 없습니다." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "스캔 실패" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "스크린샷 지연 시간" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "초" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "지연 없음" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "주 창 숨기기" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "문서 속성" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "다른 이름으로 그림 저장" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "내보내기" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"문서 \"%1\"이(가) 수정되었습니다.\n" +"문서를 다시 읽어오면 마지막으로 저장한 후의 변경 사항을 잃어버립니다.\n" +"계속 진행하시겠습니까?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"문서 \"%1\"이(가) 수정되었습니다.\n" +"문서를 다시 읽어오면 모든 변경 사항을 잃어버립니다.\n" +"계속 진행하시겠습니까?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "그림 인쇄" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"그림을 보내기 전에 저장해야 합니다.\n" +"저장하시겠습니까?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"문서 \"%1\"이(가) 수정되었습니다.\n" +"저장하시겠습니까?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "크기 조정 / 확대/축소(&E)..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "그림으로 설정하기 (자르기)(&T)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "뒤집기 (거꾸로)(&F)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "수평으로 뒤집기" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "회전(&R)..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "왼쪽으로 돌리기(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "오른쪽으로 돌리기(&T)" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "변형(&K)..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "흑백으로 변환 (디더링)(&N)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "그레이스케일로 변환(&G)" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "색 반전(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "지우기(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "기밀 표시 추가" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "더 많은 효과(&M)..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "그림(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "선택(&I)" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "경로 표시(&P)" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "앤티에일리어싱 사용" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "글꼴 종류" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "글꼴 크기" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "굵게" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "기울임꼴" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "밑줄" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "취소선" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "이전 도구 옵션 (그룹 #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "다음 도구 옵션 (그룹 #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "이전 도구 옵션 (그룹 #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "다음 도구 옵션 (그룹 #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "불투명하게 그리기(&D)" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "색상 유사도로 그리기..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "도구 상자" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "모눈 표시(&G)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "축소판 표시(&H)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "크기 조정 축소판 모드(&M)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "축소판 사각형 사용(&R)" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "확대/축소(&Z)" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "그림 가져오기" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "선택한 스캐너를 열 수 없습니다." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "붓" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "서로 다른 모양과 크기의 붓으로 그립니다" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "점을 찍거나 선을 그리려면 이것을 클릭하십시오." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "색 지우개" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "지워지는 곳의 색을 배경색으로 바꿉니다" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "배경색으로 픽셀을 지우려면 클릭하거나 드래그하십시오." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "지우개" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "실수를 지울 수 있습니다" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "클릭하거나 드래그하면 지울 수 있습니다." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "모든 마우스 단추를 사용할 수 있습니다." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "펜" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "점을 찍고 자유롭게 손으로 그리기" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "스프레이" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "스프레이를 뿌립니다" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "스프레이를 뿌리려면 클릭하거나 드래그하십시오." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "오른쪽 단추를 클릭하면 취소합니다." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "왼쪽 단추를 클릭하면 취소합니다." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "그림에서 색을 선택합니다" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "색을 선택하려면 클릭하십시오." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "그림의 영역을 채웁니다" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "영역을 채우려면 클릭하십시오." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "확대/축소" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "그림의 크기를 조정합니다" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"클릭하면 확대/축소하며 왼쪽 단추를 클릭하면서 드래그하면 지정한 영역을 확대합" +"니다." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "곡선" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "곡선을 그립니다" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "시작과 끝점을 드래그하십시오." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"왼쪽 단추를 클릭하면서 드래그해서 첫 조정점을 지정하고 오른쪽 단추를 클릭해" +"서 끝내십시오." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"오른쪽 단추를 클릭하면서 드래그해서 조정점을 지정하고 왼쪽 단추를 클릭해서 끝" +"내십시오." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"왼쪽 단추를 클릭하면서 드래그해서 마지막 조정점을 지정하고 오른쪽 단추를 클릭" +"해서 끝내십시오." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"오른쪽 단추를 클릭하면서 드래그해서 마지막 조정점을 지정하고 왼쪽 단추를 클릭" +"해서 끝내십시오." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "직선" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "직선을 그립니다" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "그리려면 드래그하십시오." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "다각형" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "다각형을 그립니다" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "첫 번째 선을 그리려면 드래그하십시오." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"왼쪽 단추를 클릭하면서 드래그해서 또 다른 선을 그리고 오른쪽 단추를 클릭해서 " +"끝내십시오." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"오른쪽 단추를 클릭하면서 드래그해서 또 다른 선을 그리고 왼쪽 단추를 클릭해서 " +"끝내십시오." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "연결된 선" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "연결된 선을 그립니다" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "타원" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "타원과 원을 그립니다" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "직사각형" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "직사각형과 정사각형을 그립니다" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "둥근 사각형" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "둥근 모서리를 가지는 직사각형과 정사각형을 그립니다" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "왼쪽 단추를 누르고 드래그하면 선택을 만들 수 있습니다." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "왼쪽 단추를 누르고 드래그하면 선택을 이동할 수 있습니다." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "왼쪽 단추를 누르고 드래그하면 선택의 크기를 조정할 수 있습니다." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "선택: 불투명" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "선택: 투명" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "선택: 투명한 색" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "선택: 투명한 색 유사도" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "선택 (타원형)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "타원형 및 원형 선택을 만듭니다" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "선택 (자유형)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "자유형 선택을 만듭니다" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "선택 (사각형)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "사각형 선택을 만듭니다" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "선택: 이동" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: 흐리기" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "텍스트를 씁니다" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "텍스트: 백스페이스" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "텍스트: 삭제" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "텍스트: 새 줄" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "텍스트: 쓰기" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "왼쪽 단추를 누르고 드래그하시면 텍스트 상자를 만들 수 있습니다." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "왼쪽 단추를 누르고 드래그하면 텍스트 상자를 이동할 수 있습니다." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "텍스트: 상자 이동" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "왼쪽 단추를 누르고 드래그하면 텍스트 상자의 크기를 조정할 수 있습니다." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "왼쪽 단추를 클릭하면 커서 위치를 바꿀 수 있습니다." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "텍스트: 불투명한 배경" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "텍스트: 투명한 배경" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "텍스트: 색상 바꾸기" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "텍스트: 글자색" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "텍스트: 배경색" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "텍스트: 글꼴" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "텍스트: 글꼴 크기" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "텍스트: 굵게" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "텍스트: 기울임꼴" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "텍스트: 밑줄" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "텍스트: 취소선" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "크기 조정하지 않은 모드 - 축소판" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - 축소판" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            색상 유사도는 서로 다른 픽셀의 색상을 같은 것으로 취급하려면얼" +"마나 비슷해야 하는가를 나타냅니다.

            만약 정확한 일치가 아" +"닌 값으로 설정했으면, 다른 그림 프로그램의 \"요술봉\" 기능처럼 디더링된 그림" +"이나 사진에서 효과적으로 작업할 수 있습니다.

            이 기능은 다음에 적용됩니" +"다:

            • 선택 영역: 투명 모드에서는 배경색과 비슷한 색깔이 투명하게 처리됩니다.
            • 채우기: 선택 영역 중 배경색과 " +"비슷하지만 배경색과는 다른 색깔이 채워집니다. 값이 높을수록 더 많은 픽" +"셀을 채웁니다.
            • 색 지우개: 전경색과 비슷한 색을 가진 픽" +"셀이 배경색으로 지워집니다.
            • 자동 잘라내기내부 경계 지우" +"기: 비슷하지만 같지 않은 색의 픽셀을 경계로 취급합니다. 값이 높을" +"수록 더 많은 경계를 잘라냅니다.

            값이 높으면 더 많은 색을 비슷" +"한 색으로 판단합니다. 필요한 만큼 색이 선택되지 않을 때에만 값을 증가시키" +"십시오.

            색 채우기 도구가 너무 많은 색을 바꾸는 등 비슷하다고 생" +"각하지 않는 색에 영향을 준다면 값을 감소시키십시오.

            설정하려면 육면체" +"를 클릭하십시오.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            색상 유사도는 서로 다른 픽셀의 색상을 같은 것으로 취급하려면얼" +"마나 비슷해야 하는가를 나타냅니다.

            만약 정확한 일치가 아" +"닌 값으로 설정했으면, 다른 그림 프로그램의 \"요술봉\" 기능처럼 디더링된 그림" +"이나 사진에서 효과적으로 작업할 수 있습니다.

            이 기능은 다음에 적용됩니" +"다:

            • 선택 영역: 투명 모드에서는 배경색과 비슷한 색깔이 투명하게 처리됩니다.
            • 채우기: 선택 영역 중 배경색과 " +"비슷하지만 배경색과는 다른 색깔이 채워집니다. 값이 높을수록 더 많은 픽" +"셀을 채웁니다.
            • 색 지우개: 전경색과 비슷한 색을 가진 픽" +"셀이 배경색으로 지워집니다.
            • 자동 잘라내기내부 경계 지우" +"기: 비슷하지만 같지 않은 색의 픽셀을 경계로 취급합니다. 값이 높을" +"수록 더 많은 경계를 잘라냅니다.

            값이 높으면 더 많은 색을 비슷" +"한 색으로 판단합니다. 필요한 만큼 색이 선택되지 않을 때에만 값을 증가시키" +"십시오.

            색 채우기 도구가 너무 많은 색을 바꾸는 등 비슷하다고 생" +"각하지 않는 색에 영향을 준다면 값을 감소시키십시오.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            색상 유사도: %1%

            설정하려면 클릭하십시오.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            색상 유사도: 정확하게 일치

            설정하려면 클릭하십시오." +"

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "밝기(&B):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "초기화(&S)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "명암(&N):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "감마(&G):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "초기화(&T)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "채널(&H):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "모두" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "빨간색" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "녹색" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "파란색" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "모든 값 초기화(&A)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "설정" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "합계(&A):" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "활성화(&N)" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "색상" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "색상(&H):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "채도:(&S):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "값(&V):" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "빨간색(&R)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "녹색(&G)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "파란색(&B)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "모두(&A)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "채널" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "모노크롬(&M)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "모노크롬 (디더링)(&N)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256색(&L)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256색 (디더링)(&R)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24비트 색(&B)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "다음으로 축소" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "입자도(&G):" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            그리기 도구의 전경색을 설정하려면 색상표에서 왼쪽 단추를 클릭하십시" +"오. 배경색을 설정하려면 오른쪽 단추를 클릭하십시오.

            색상표의 색을 변경" +"하려면 마우스 왼쪽 단추를 두 번 클릭하십시오.

            드래그 앤 드롭을 사용하" +"여 색상표끼리 색을 바꿀 수 있습니다. Ctrl 키를 누르고 있으면 대상 셀" +"과 원본 셀의 색을 바꾸는 대신 대상 셀의 색을 덮어씁니다.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "다음으로 변환(&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "품질(&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "미리 보기(&P)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "모노크롬" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "모노크롬 (디더링)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256색" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256색 (디더링)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24비트 색" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "그림 위치(&M)" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "쪽 가운데(&C)" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "쪽 왼쪽 위(&L)" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "투명" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint 기본값" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "색: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "색: %1 [수정됨]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "원형" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "사각형" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "슬래시" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "백슬래시" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "채우지 않기" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "배경색으로 채우기" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "전경색으로 채우기" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "불투명" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "문서 \"%1\"이(가) 이미 존재합니다.\n" +#~ "덮어쓰시겠습니까?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "팔레트 \"%1\"이(가) 이미 존재합니다.\n" +#~ "덮어쓰시겠습니까?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "확대 단계를 100%의 배수로 설정하지 않으면 정확한 편집을 할 수 없고 다시 그" +#~ "릴 때 군더더기가 보일 수 있습니다.\n" +#~ "그래도 확대 단계를 %1%로 설정하시겠습니까?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "확대 단계를 %1%로 설정하기" + +#~ msgid "None" +#~ msgstr "없음" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            그림을 %1x%2로 크기 조정하는 데는 메모리를 많이 소비할 것입니다. 시" +#~ "스템의 응답 속도를 느리게 할 수 있고 다른 프로그램에서 자원 문제가 발생할 " +#~ "수 있습니다.

            그림의 크기를 조정하시겠습니까?

            " + +#~ msgid "Overwrite" +#~ msgstr "덮어쓰기" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "\"%1\"을(를) 열 수 없습니다 - 알 수 없는 MIME 형식." + +#~ msgid "Save Preview" +#~ msgstr "미리 보기 저장" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "지원을 받으시려면 웹 사이트를 방문하십시오." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "스캐너 대화 상자를 제공하는 플러그인을 찾을 수 없습니다.\n" +#~ "ksaneplugin을 제공하는 패키지가 설치되지 않은 것 같습니다." + +#~ msgid "No Scanning Support" +#~ msgstr "스캔 지원 없음" diff --git a/po/lt/kolourpaint.po b/po/lt/kolourpaint.po new file mode 100644 index 0000000..f6e092d --- /dev/null +++ b/po/lt/kolourpaint.po @@ -0,0 +1,2811 @@ +# translation of kolourpaint.po to Lithuanian +# Donatas Glodenis , 2005. +# Remigijus Jarmalavičius , 2011. +# Liudas , 2013. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2015-07-06 18:07+0300\n" +"Last-Translator: Danutė \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" +"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" +"X-Generator: Poedit 1.5.4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Donatas Glodenis, Danutė Sebeckytė" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "dgvirtual@akl.lt, d.informatika@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balansas" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Suminkštinti" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Paaštrinti" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Išvalyti" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Žymėjimas: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Iškalimas" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Suploti" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Padaryti nespalvotą" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Atspalvis, sodrumas, vertė" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invertuoti spalvas" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertuoti" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Nuimti spalvas (pikseliuotai)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Nuimti spalvas" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Sumažinti spalvas iki 256 (pikseliuotai)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Sumažinti spalvas iki 256" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histograminis korektorius" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Apversti" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Paversti horizontaliai ir vertikaliai" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Pasukti horizontaliai" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Pasukti vertikaliai" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Tekstas: keisti laukelio dydį" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Žymėjimas: ištempimas" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Žymėjimas: glotnus ištempimas" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Keisti lapo dydį" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Ištempti" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Glotnus ištempimas" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Sukti" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Iškreipti" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Atšaukti: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Atšaukti" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Pakartoti: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Pakartoti" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Atšaukti: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Atšaukti" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Pakartoti: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Pakartoti" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "dar %1 objektas" +msgstr[1] "dar %1 objektai" +msgstr[2] "dar %1 objektų" +msgstr[3] "dar %1 objektas" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Spalvų parinkiklis" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Užpylimas" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Daugiau paveikslėlių efektų (žymėjimas)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Daugiau paveikslėlių efektų" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efektas:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Susilpninti spalvas" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Išblukinti ir paryškinti" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumento savybės" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Taškai &colyje (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nenurodyta" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontaliai:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertikaliai:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Taškai colyje (DPI) nusako spausdinamo paveikslėlio pikselių " +"skaičių viename colyje (2,54cm).

            Kuo didesnis paveikslėlio DPI, tuo " +"mažesnis išspausdintas paveikslėlis. Atkreipkite dėmesį, kad Jūsų " +"spausdintuvas gali neatspausdinti kokybiško vaizdo, jei DPI bus aukštesnis " +"nei 300 ar 600 – tai priklauso nuo spausdintuvo.

            Jei norite " +"atspausdinti tokio pat dydžio paveikslėlį, kokį matote ekrane, turite " +"nustatyti tokį pat DPI, koks yra nustatytas Jūsų ekranui.

            Jei bet kuri " +"DPI reikšmė bus nenustatyta, atspausdintas paveikslėlis bus tokio pat " +"dydžio, kokį matote ekrane.

            Ne visi paveikslėlio formatai palaiko DPI. " +"Jei paveikslėlio formatas DPI nepalaiko, jis nebus išsaugotas.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "P&oslinkis" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Poslinkis nustato vietą, kurioje paveikslėlis turės atsirasti, " +"lyginant su kitais paveikslėliais.

            Ne visi paveikslėlio formatai " +"palaiko Poslinkio funkciją. Jei formatas, kuriuo įrašote, jo " +"nepalaiko, pasirinktos poslinkio reikšmės nebus išsaugotos.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Teksto laukeliai" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Pridėti eilutę" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Trinti eilutę" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Iš naujo" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Teksto laukeliai suteikia papildomą paveikslėlio informaciją. " +"Tai gali būti vieta, kurioje laisvai galima rašyti bet kokį tekstą.

            Tačiau tai priklauso nuo formato, todėl teksto laukeliai gali būti ir " +"kompiuterio interpretuojami duomenys, kurių keisti nevalia – tačiau kad taip " +"yra, nelabai tikėtina.

            Ne visi paveikslėlio formatai palaiko teksto " +"laukelius. Jei formatas jų nepalaiko, teksto laukeliai nebus išsaugoti." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Klavišas" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Vertė" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Tekstui \"%1\" %2 eilutėje reikalingas raktas." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Visi teksto raktai turi būti unikalūs. Teksto raktai \"%1\" eilutėse %2 ir " +"%3 yra identiški." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Klaidingi teksto laukeliai" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Matmenys" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Pradinis:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Peržiūra" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Atnaujinti" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Keisti lapo dydį / Ištempti" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Operacijos &objektas:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Visas paveikslėlis" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Žymėjimas" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Teksto laukas" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operacija" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"

            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Lapo dydžio keitimas: Lapo dydis bus padidintas sukuriant " +"naują plotą į dešinę ir/arba į apačią (kuris bus nuspalvintas fono spalva) " +"arba sumažintas nukerpant nuo dešinės ir/arba apačios.
            • Ištempimas: Paveikslėlis bus padidintas dvigubinant pikselius " +"arba sumažintas prarandant pikselius.
            • Glotnus ištempimas: " +"Veikia taip pat kaip Ištempimas, tačiau jis sulieja šalia esančius " +"pikselius, kad paveikslėlis atrodytų glotnesnis.
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Keisti lapo dydį" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Ištempti" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "&Glotnus ištempimas" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Plotis:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Aukštis:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Naujas:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Procentai:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Išlaikyti &santykį" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Teksto lauko dydžio keitimas į%1x%2 gali naudoti daug kompiuterio " +"atminties. Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar " +"tikrai norite keisti teksto lauko dydį?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Keisti tekstinio lauko dydį?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "K&eisti teksto laukelio dydį" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Dydžio keitimas į%1x%2 gali naudoti daug kompiuterio atminties. Tai " +"gali sulėtinti kompiuterio bei programų darbą.

            Ar tikrai norite keisti " +"paveikslėlio dydį?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Keisti paveikslėlio dydį?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Keisti paveikslėlio &dydį" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Paveikslėlio ištempimas į%1x%2 gali naudoti daug kompiuterio " +"atminties. Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar " +"tikrai norite ištempti paveikslėlį?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Ištempti paveikslėlį?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Ištempti paveikslėlį" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Pažymėtos srities ištempimas į%1x%2 gali naudoti daug kompiuterio " +"atminties. Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar " +"tikrai norite ištempti pažymėtą sritį?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Ištempti žymėjimą?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Iš&tempti žymėjimą" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Paveikslėlio glotnus ištempimas į%1x%2 gali naudoti daug kompiuterio " +"atminties. Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar " +"tikrai norite glotniai ištempti paveikslėlį?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Glotniai ištempti paveikslėlį?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Glotnus &paveikslėlio ištempimas" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Pažymėtos srities glotnus ištempimas į%1x%2 gali naudoti daug " +"kompiuterio atminties. Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar tikrai norite glotnai ištempti pažymėtą sritį?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Glotniai ištempti žymėjimą?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Glotnus &žymėjimo ištempimas" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Sukti žymėjimą" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Pasukti paveikslėlį" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Po sukimo:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Kryptis" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Prieš &laikrodžio rodyklę" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Pagal laikrodžio rodyklę" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Kampas" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &laipsnių" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 l&aipsnių" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 la&ipsnių" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Į&rašyti:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "laipsnių" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the selection?

            " +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Sukant pažymėtą sritį į%1x%2 gali naudoti daug kompiuterio atminties. " +"Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar tikrai norite " +"pasukti pažymėtą sritį?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Sukti žymėjimą?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Suk&ti žymėjimą" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the image?

            " +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Pasukant paveikslėlį į%1x%2 gali naudoti daug kompiuterio atminties. " +"Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar tikrai norite " +"pasukti paveikslėlį?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Sukti paveikslėlį?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "&Sukti paveikslėlį" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Iškreipti žymėjimą" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Iškreipti paveikslėlį" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Po iškreipimo:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontaliai:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertikaliai:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the selection?

            " +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Pažymėtos srities iškreipimas į%1x%2 gali naudoti daug kompiuterio " +"atminties. Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar " +"tikrai norite iškreipti pažymėtą sritį?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Iškreipti žymėjimą?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Iš&kreipti žymėjimą" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the image?

            " +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Paveikslėlio iškreipimas į%1x%2 gali naudoti daug kompiuterio " +"atminties. Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar " +"tikrai norite iškreipti paveikslėlį?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Iškreipti paveikslėlį?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Iš&kreipti paveikslėlį" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Spalvų panašumas" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB spalvų kubo atstumas" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Tiksliai atitinka" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Kas yra spalvų panašumas?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Įrašyti peržiūrą" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 baitas (apie %2%)" +msgstr[1] "%1 baitai (apie %2%)" +msgstr[2] "%1 baitų (apie %2%)" +msgstr[3] "%1 baitas (apie %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Nepavyksta atverti \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Nepavyksta atverti \"%1\" – nepalaikomas paveikslėlio formatas.\n" +"Failas gali būti sugadintas." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Nepavyko įrašyti paveikslėlio – nėra pakankamos informacijos." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mimetipas: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Vidinė klaida" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            Šis %1 formatas gali neišsaugoti visų paveikslėlio spalvų.

            Ar tikrai norite įrašyti šiuo formatu?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Failo formatas su praradimais" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Įrašant paveikslėlį su %1-bit mažu spalvų ryškumu gali būti prarastos " +"spalvos. Permatomumas taip pat gali būti prarastas.

            Ar tikrai norite " +"įrašyti su tokiu spalvų ryškumu?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Mažas spalvų ryškumas" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Nepavyko įrašyti paveikslėlio – nepavyksta sukurti laikinojo failo." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Nepavyksta įrašyti kaip \"%1\"." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Nepavyksta įrašyti paveikslėlio – įkėlimas nepavyko." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Pašalinti vidinę k&raštinę" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Pašalinti vidinę kraštinę" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Automatiškai a&pkirpti" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automatiškai apkirpti" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint negali pašalinti pažymėtos srities vidinės kraštinės, nes jos " +"neranda." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Neįmanoma pašalinti vidinės kraštinės" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint negali automatiškai apkirpti paveikslėlio, nes neranda jo " +"kraštinės." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Negalima automatiškai apkirpti" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Nustatyti kaip paveikslėlį" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Žymėjimas: Sukurti" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "KDE piešimo programa" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projekto įkūrėjas" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Vyriausiasis tyrėjas" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Skaitytuvo palaikymas, alfa palaikymas, dabartinis prižiūrėtojas" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ženkliukai" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Įvesties metorų palaikymas" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Paveikslėlių efektai" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE4 pritaikymas" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "KDE4 pritaikymas" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Dėkojame daugeliui kitų, kurie prisidėjo prie šios programos kūrimo." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "Atverti paveikslėlį" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Rodymas" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "P&iešinys" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Spalvos" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Pagrindinė įrankinė" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Teksto įrankinė" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Žymėjimo įrankio dešiniojo klavišo meniu" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Keisti" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatiūra" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Tempkite už rankenėlės laikydami kairįjį pelės klavišą." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Keisti paveikslėlio dydį: atspauskite visus pelės klavišus." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" +"Keisti paveikslėlio dydį: norėdami atšaukti, spustelėkite dešinįjį klavišą." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Tekstas" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Nepavyksta atverti spalvų paletės \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Nepavyksta atverti spalvų paletės \"%1\" – nepalaikomas formatas.\n" +"Failas gali būti sugadintas." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Nepavyksta atverti KDE spalvų paletės \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Nepavyko įrašyti spalvų paletės kaip \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Be pavadinimo" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Naudoti KolourPaint numatytas" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Naudoti KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Atverti..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "P&erkrauti" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Įrašyti" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Įrašyti &kaip..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Pridėti eilutę" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Trinti paskutinę eilutę" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Spalvų įrankinė" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Spalvų paletė \"%1\" buvo pakeista.\n" +"Ar norite ją įrašyti?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE spalvų paletė \"%1\" buvo pakeista.\n" +"Ar norite ją įrašyti kaip failą?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Numatytoji spalvų paletė buvo pakeista.\n" +"Ar norite ją įrašyti kaip failą?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Atverti spalvų paletę" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Spalvų paletė \"%1\" buvo pakeista.\n" +"Perkraunant bus prarasti jos pakeitimai.\n" +"Ar tęsti?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Perkrauti" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE spalvų paletė \"%1\" buvo pakeista.\n" +"Perkrovus bus prarasti jos pakeitimai.\n" +"Ar tęsti?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Numatytoji spalvų paletė buvo pakeista.\n" +"Perkrovus bus prarasti jos pakeitimai.\n" +"Ar norite tęsti?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Įrašyti spalvų paletę kaip" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Įklijuoti į &naują langą" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Ištrinti žymėjimą" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opijuoti į failą..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Įklijuoti &iš failo..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Tekstas: sukurti laukelį" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Tekstas: įklijuoti" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"Negalima įklijuoti į KolourPaint, nes iškarpinės formatas yra nežinomas." +"" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Negalima įklijuoti" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Tekstas: ištrinti laukelį" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Žymėjimas: ištrinti" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Tekstas: užbaigti" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Žymėjimas: nužymėti" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopijuoti į failą" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Įklijuoti iš failo" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Eksportuoti..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skenuoti..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Fotografuoti ekraną" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Savybės" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Perkraut&i" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Atverti paveikslėlį" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Užlaikymas:" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekundė" +msgstr[1] " sekundės" +msgstr[2] " sekundžių" +msgstr[3] " sekundė" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Jokio" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Slėpti pagrindinį langą" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumento savybės" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Įrašyti paveikslėlį kaip" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Eksportuoti" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokumentas \"%1\" buvo pakeistas. \n" +"Perkrovus bus prarasti visi pakeitimai.\n" +"Ar tęsti?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokumentas \"%1\" buvo pakeistas.\n" +"Perkrovus bus prarasti visi pakeitimai.\n" +"Ar tęsti?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Spausdinti paveikslėlį" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Turite įrašyti paveikslėlį prieš išsiųsdami.\n" +"Ar norite jį įrašyti?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokumentas „%1“ buvo pakeistas.\n" +"Ar norite jį įrašyti?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Keisti lapo &dydį / Ištempti..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Ap&kirpti pažymėtą vietą" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Apversti (antreip)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Atspindėti (horizontaliai)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Sukti..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Sukti &kairėn" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Sukti dešinė&n" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "I&škreipti..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Sumažinti iki vien&spalvio (pikseliuoto)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Padaryti &nespalvotą" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Invertuoti spalvas" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Iš&valyti" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Daugiau efektų..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Paveikslėlis" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Žy&mėjimas" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Rodyti kelią" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 – %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Šriftų šeima" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Šrifto dydis" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Paryškintas" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursyvas" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Pabrauktas" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Perbrauktas" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Ankstesnė įrankio parinktis (1 grupė)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Kita įrankio parinktis (1 grupė)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Ankstesnė įrankio parinktis (2 grupė)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Kita įrankio parinktis (2 grupė)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Neskaidrus piešimas" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Piešti naudojant spalvų panašumą..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Piešimo įrankiai" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Ro&dyti tinklelį" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Rodyti &miniatiūrą" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Pilna miniatiūra" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Rodyti paveikslo dalį miniatiūroje" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Mastelis" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Visas paveikslėlis" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Teptukas" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Pieškite naudodami įvairių dydžių teptukus" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Spustelėkite kairiuoju klavišu arba tempkite jį laikydami." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Spalvų trintukas" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Sukeičia priekinio plano bei fono spalvas" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" +"Spustelėkite arba laikykite kairįjį klavišą ir bus trinama priekinio plano " +"spalva." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Trintukas" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Leidžia jums ištrinti klaidas" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Spustelėkite arba laikykite kairįjį klavišą." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Atspauskite visus pelės klavišus." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pieštukas" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Piešia taškus ir linijas iš rankos" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Purkštukas" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Purškia dažais" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Spustelėkite arba laikykite kairįjį klavišą." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Atšaukite spustelėdami dešiniuoju klavišu." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Atšaukite spustelėdami kairįjį pelės klavišą." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Leidžia pasirinkti spalvą iš paveikslėlio" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Ppasirinkite spalvą spustelėdami." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Užpildo piešinio vietas pasirinkta spalva" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Spustelėkite, ir pasirinkta vieta nusidažys." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Mastelis" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Keisti paveikslėlio mastelį" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Spustelėkite norėdami priartinti/nutolti arba tempkite laikydami kairįjį " +"klavišą norimoje paveikslėlio vietoje." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kreivė" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Brėžia kreives" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Tempkite pradinį ir paskutinį taškus." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Tempkite laikydami kairįjį pelės klavišą ir padėsite pirmąjį tašką arba " +"spustelėkite dešinįjį, kad užbaigtumėte." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Tempkite laikydami dešinįjį klavišą ir padėsite pirmąjį tašką arba " +"spustelėkite kairįjį, kad užbaigtumėte." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Tempkite laikydami kairįjį pelės klavišą ir padėsite paskutinį tašką arba " +"spustelėkite dešinįjį, kad užbaigtumėte." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Tempkite laikydami dešinįjį pelės klavišą ir padėsite paskutinį tašką arba " +"spustelėkite kairįjį, kad užbaigtumėte." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linija" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Brėžia linijas" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Tempkite laikydami kairįjį pelės klavišą." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Daugiakampis" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Brėžia daugiakampius" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Tempkite laikydami kairįjį pelės klavišą." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Tempkite laikydami kairįjį pelės klavišą arba spustelėkite dešinįjį, kad " +"užbaigtumėte." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Tempkite laikydami dešinįjį pelės klavišą arba spustelėkite kairįjį, kad " +"užbaigtumėte." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Sujungtos linijos" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Brėžia sujungtas linijas" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipsė" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Piešia elipses ir apskritimus" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Stačiakampis" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Piešia stačiakampius ir kvadratus" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Užapvalintas stačiakampis" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Piešia kvadratus ir stačiakampius užapvalintais kampais" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Tempkite laikydami kairįjį pelės klavišą ir pažymėsite sritį." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" +"Tempkite laikydami kairįjį pelės klavišą ir pajudinsite pažymėtą sritį." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Tempkite nuspaudę kairįjį klavišą ir ištempsite pažymėtą sritį." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Žymėjimas: neskaidrus" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Žymėjimas: permatomas" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Žymėjimas: permatoma spalva" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Žymėjimas: permatomų spalvų panašumas" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Žymėjimas (elipsė)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Sukuria elipsės ar apskritimo formos žymėjimą" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Žymėjimas (laisva forma)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Sukuria laisvos formos žymėjimą" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Žymėjimas (stačiakampis)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Sukuria stačiakampį žymėjimą" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Žymėjimas: judinti" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Ištepti" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Rašo tekstą" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Tekstas: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Tekstas: ištrinti" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Tekstas: nauja linija" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Tekstas: rašyti" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Tempkite laikydami kairįjį pelės klavišą ir sukursite teksto lauką." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Tempkite laikydami kairįjį pelės klavišą ir pajudinsite teksto lauką." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Tekstas: pajudinti laukelį" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Tempkite nuspaudę kairįjį klavišą ir pakeisite teksto lauko dydį." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Spustelėkite kairiuoju klavišu, norėdami pakeisti žymeklio poziciją." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Tekstas: neskaidrus fonas" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Tekstas: permatomas fonas" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Tekstas: sukeisti spalvas" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Tekstas: priekinio plano spalva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Tekstas: fono spalva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Tekstas: šriftas" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Tekstas: Šrifto dydis" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Tekstas: Paryškintas" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Tekstas: Kursyvas" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Tekstas: Pabrauktas" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Tekstas: Perbrauktas" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Priartinta miniatiūra" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatiūra" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Spalvų panašumas nustato, kiek panašios spalvos " +"pikseliuose turi būti, kad operacija būtų atliekama su šiomis spalvomis.

            Jeigu panašumą nustatysite kitokį nei tiksliai atitinka, " +"galėsite daug efektyviau dirbti su susiliejusiais paveikslėliais ar " +"nuotraukomis, lyginant su „Burtų lazdele“, kurią turi kitos grafikos " +"rengyklės.

            Ši funkcija veikia:

            • Žymėjimams: " +"permatomumo režime bet kuri spalva pažymėtoje srityje, kuri bus " +"panaši į fono spalvą, taps permatoma.
            • Užpildymui: " +"paveikslėlio vietoms su panašiomis (bet ne identiškomis) pikselių " +"spalvomis – didesnis skaičius apims daugiau pikselių.
            • Spalvų " +"trintukui: bet kuris pikselis, kurio spalva yra panaši į pirmojo " +"plano spalvą bus pakeista į fono spalvą.
            • Automatiniam apkirpimui ir Vidinės kraštinės pašalinimui: kraštinėms su panašiomis " +"(bet neidentiškomis) pikselių spalvomis – didesnis skaičius gali nukirpti " +"netgi visą kraštinę.

            Didesnis skaičius reiškia, kad operacijos " +"apima didesnį spalvų intervalą ir laiko tolimesnes spalvaspanašiomis. " +"Dėl to reikėtų padidinti skaičių, jeigu matote, kad operacija neapima " +"pikselių, kuriuos laikėte, kad jie yra panašių spalvų.

            Tačiau jei yra " +"paimama daugiau pikselių negu tikėjotės, turėtumėte sumažinti skaičių.

            Norėdami pakeisti skaičių, nuspauskite ant kubo.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Spalvų panašumas nustato, kiek panašios spalvos " +"pikseliuose turi būti, kad operacija būtų atliekama su šiomis spalvomis.

            Jeigu panašumą nustatysite kitokį nei tiksliai atitinka, " +"galėsite daug efektyviau dirbti su susiliejusiais paveikslėliais ar " +"nuotraukomis, lyginant su „Burtų lazdele“, kurią turi kitos grafikos " +"rengyklės.

            Ši funkcija veikia:

            • Žymėjimams: " +"permatomumo režime bet kuri spalva pažymėtoje srityje, kuri bus " +"panaši į fono spalvą, taps permatoma.
            • Užpildymui: " +"paveikslėlio vietoms su panašiomis (bet ne identiškomis) pikselių " +"spalvomis – didesnis skaičius apims daugiau pikselių.
            • Spalvų " +"trintukui: bet kuris pikselis, kurio spalva yra panaši į pirmojo " +"plano spalvą bus pakeista į fono spalvą.
            • Automatiniam apkirpimui ir Vidinės kraštinės pašalinimui: kraštinėms su panašiomis " +"(bet neidentiškomis) pikselių spalvomis – didesnis skaičius gali nukirpti " +"netgi visą kraštinę.

            Didesnis skaičius reiškia, kad operacijos " +"apima didesnį spalvų intervalą ir laiko tolimesnes spalvaspanašiomis. " +"Dėl to reikėtų padidinti skaičių, jeigu matote, kad operacija neapima " +"pikselių, kuriuos laikėte, kad jie yra panašių spalvų.

            Tačiau jei yra " +"paimama daugiau pikselių negu tikėjotės, turėtumėte sumažinti skaičių.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Spalvų panašumas: %1%

            Spustelėkite norėdami keisti." +"

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Spalvų panašumas: tiksliai atitinka

            Spustelėkite " +"norėdami keisti.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Šviesumas:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Pe&rkrauti" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrastas" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gama:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Perk&auti" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "K&analai" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Visi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Raudona" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Žalia" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Mėlyna" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Nustatyti iš naujo &visas reikšmes" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Nuostatos" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Apimtis:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Į&galinti" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Spalvos" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Atspalvis:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Sodrumas" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Vertė:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Raudona" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Žalia" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Mėlyna" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Viską" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanalai" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Vienspalvis" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Vi&enspalvis (pikseliuotas)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &spalvos" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 spalvo&s (pikseliuotos)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bitų spalvos" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Sumažinti iki" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Detalumas:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Norint pasirinkti priekinio plano spalvą, kurią naudoja įvairūs " +"įrankiai piešimui, nuspauskite kairiuoju klavišu ant spalvos. Norint " +"pasirinkti fono spalvą, nuspauskite dešiniuoju klavišu.

            Norint " +"visiškai pakeisti turimą spalvą paletėje, spustelėkite dukart ant spalvos.

            Spalvas taip pat galima sukeisti laikant kairįjį pelės klavišą ir " +"tempiant spalvą į kitą vietą. Taipogi, jei tai darysite laikydami " +"klavišąVald, buvusi spalva pasikeis naująja spalva.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "&Konvertuoti į:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Kokybė:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Peržiūra" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Vienspalvis" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Vienspalvis (pikseliuotas)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 spalvų" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 spalvos (pikseliuotos)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitų spalvos" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "P&aveikslėlio pozicija" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Lapo centras" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Viršutinė-&kairioji lapo vieta" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Skaidrus" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint numatytosios" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Spalvos: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Spalvos: %1 [pakeistos]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Apskritimas" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadratas" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Pasvirasis brūkšnys" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Kairinis brūkšnys" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Permatomas" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Užpildyti fono spalva" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Užpildyti priekinio plano spalva" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Neskaidrus" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Dokumentas pavadinimu „%1“ jau egzistuoja.\n" +#~ "Ar norite jį perrašyti?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Spalvų paletė pavadinimu \"%1\" jau egzistuoja.\n" +#~ "Ar noritę ją perrašyti?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Keičiant mastelį į skaičių, kuris nesidalija iš 100%, paveikslėlis gali " +#~ "būti perpieštas su klaidomis.\n" +#~ "Ar tikrai norite keisti mastelį į %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Pakeisti mastelį į %1%" + +#~ msgid "None" +#~ msgstr "Nieko" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Dydžio keitimas į%1x%2 gali naudoti daug kompiuterio atminties. " +#~ "Tai gali sulėtinti kompiuterio bei programų darbą.

            Ar tikrai norite " +#~ "keisti paveikslėlio dydį?

            " + +#~ msgid "Overwrite" +#~ msgstr "Perrašyti" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Nepavyksta atverti „\"%1\" – nežinomas mimetipas." + +#~ msgid "Save Preview" +#~ msgstr "Įrašyti peržiūrą" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Jei reikia pagalvos, apsilankykite svetainėje." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Nėra papildinio, kuris iškviestų skaitytuvo langą.\n" +#~ "Tai tikriausiai reiškia, kad nėra įdiegtas ksaneplugin papildinys." + +#~ msgid "No Scanning Support" +#~ msgstr "Nėra skaitytuvo palaikymo" diff --git a/po/lv/kolourpaint.po b/po/lv/kolourpaint.po new file mode 100644 index 0000000..ca4d6c1 --- /dev/null +++ b/po/lv/kolourpaint.po @@ -0,0 +1,3083 @@ +# translation of kolourpaint.po to Latvian +# translation of kolourpaint4.po to +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Viesturs Zarins , 2007, 2008, 2010. +# Maris Nartiss , 2007, 2008. +# Viesturs Zariņš , 2009. +# Einars Sprugis , 2011. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2011-07-27 19:42+0300\n" +"Last-Translator: Einars Sprugis \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " +"2);\n" +"X-Generator: Lokalize 1.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Viesturs Zariņš" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "viesturs.zarins@mi.lu.lv" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balanss" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Izpludināt" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Asināt" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Notīrīt" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Iezīmētais: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Izkalt" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Placināt" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Pārveidot uz pelēktoņu" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Tonis, Piesātinājums, Vērtība" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invertēt krāsas" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertēt" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Pārveidot uz melnbaltu (Tonēts)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Pārveidot uz melnbaltu" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Pārveidot uz 256 krāsām (Tonēts)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Pārveidot uz 256 krāsām" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogrammas līdzinātājs" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Apmest" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Apmest horizontāli un vertikāli" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Apmest horizontāli" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Apmest vertikāli" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Teksts: Mainīt teksta lauka izmēru" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Iezīmētais: Mērogot" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Iezīmētais: Gluda mērogošana" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Mainīt izmēru" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Mērogot" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Gludi mērogot" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Pagriezt" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Sašķiebt" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Atsaukt: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Atsaukt" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "A&tkārtot: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Atkārtot" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Atsaukt: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Atsaukt" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Atkārtot: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Atkārtot" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "Vēl %1 vienība" +msgstr[1] "Vēl %1 vienības" +msgstr[2] "Vēl %1 vienību" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Krāsas noteicējs" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Aizkrāsot" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Vairāk attēlu efektu (iezīmētais)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Vairāk attēlu efektu" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efekts:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Samazināt krāsas" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Izpludināt un asināt" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumenta īpašības" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Punkti uz collu (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nenorādīts" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "x" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontāli:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertikāli:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, fuzzy, kde-format +#| msgid "" +#| "

            Dots Per Inch (DPI) specifies the number of pixels of the " +#| "image that should be printed inside one inch (2.54cm).

            The higher " +#| "the image's DPI, the smaller the printed image. Note that your printer is " +#| "unlikely to produce high quality prints if you increase this to more than " +#| "300 or 600 DPI, depending on the printer.

            If you would like to " +#| "print the image so that it is the same size as it is displayed on the " +#| "screen, set the image's DPI values to be the same as the screen's.

            If either DPI value is Unspecified, the image will also be " +#| "printed to be the same size as on the screen.

            Not all image formats " +#| "support DPI values. If the format you save in does not support them, " +#| "they will not be saved.

            " +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Punkti uz collu (DPI) norāda pikseļu skatitu, ko izdrukāt, " +"vienā collā (2.54cm).

            Jo augstāks attēla DPI, jo mazāks būs " +"izdrukātais attēls. Ņemiet vērā ka jūsu dukas ierīce diez vai spēs " +"nodrošināt augstas kvalitātes dukum ja palielināsiet šo uz vairāk par 300 " +"vai 600 DPI, atkarībā no drukas ierīces.

            Ja vēlaties izdrukāt attēlu " +"tādā izmērā, kādā tas redzams uz ekrāna, uzstādiet attēla DPI tādu pašu kāds " +"ir ekrānam.

            Ja kāda no DPI vērtībām ir Nenorādīts, attēls arī " +"tiks izdrukāts tādā pašā izmērā kā uz ekrāna.

            Ne visi attēlu formāti " +"atbalsta DPI vērtības. Ja jūsu lietotais formāts tās neatbalsta, šeit " +"norādītā vērtība netiks saglabāta.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Nobīde" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            Nobīde ir relatīvā pozīcija, kas norāda kā attēls būtu " +"jānovieto attiecībā pret citien attēliem.

            Ne visi attēlu formāti " +"atbalsta Nobīde vērtību. Ja jūsu lietotais formāts to neatbalsta, " +"šeit norādītā vērtība netiks saglabāta.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Teksta lauki" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Pievienot rindu" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Dzēst rindu" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "A&tstatīt" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, fuzzy, kde-format +#| msgid "" +#| "

            Text Fields provide extra information about the image. This " +#| "is probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically " +#| "be computer-interpreted data - that you should not modify - but this is " +#| "unlikely.

            Not all image formats support Text Fields. If the " +#| "format you save in does not support them, they will not be saved.

            " +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            Teksta lauki glabā papildus informāciju par attēlu. Visticamāk " +"ka tā ir vieta komentāriem, kur jūs varat rakstīt jebkādu tekstu.

            Tomēr šis lauks var atšķirties katram formātam, tāpēc kāds lauks varbūt " +"glabā datoram interpretējamu informāciju - tos jums nevajadzētu mainīt, bet " +"tas ir maz ticams.

            Ne visi attēlu formāti atbalsta Teksta laukus. Ja jūsu lietotais formāts tos neatbalsta, šeit norādītās vērtības netiks " +"saglabātas.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Atslēga" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Vērtība" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Tejsta vārtībai \"%1\", %2 rindā nepieciešama atslēga." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Visām atslēgām ir jābūt unikālām. Teksta atslēga \"%1\" atkārtojas %2. un " +"%3. rindā." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Nederīgi teksta lauki" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Izmērs" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Šobrīdējais:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Priekšskatījums" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Atjaunināt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Mainīt izmēru / Mērogot" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Veik&t ar:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Visu attēlu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Iezīmēto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Teksta laukumu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Darbība" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Izmēra mainīšana: Attēla izmērs tiks palielināts " +"izveidojot tukšu laukumu attēla labajā pusē un/vai apakšā (aizpildot to ar " +"fona krāsu), vai samazināts nogriežot nost no labās puses un/vai apakšas.
            • Mērogošana: Attēls tiks palielināts dublējot pikseļus, vai " +"saspiests izmetot pikseļus.
            • Gluda mērogošana: Tāds pats kā " +"Mērogošana tikai sapludina kaimiņu pikseļus un izveido gludāku attēlu." +"
            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Mainīt izmē&ru" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Mērogot" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "&Gludi mērogot" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Platums:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Augstums:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Jaunais:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Procenti:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Saglabāt &attiecību" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" +"

            Teksta laukuma izmēra mainīšana uz %1x%2 var aizņemt diezgan daudz " +"atmiņas. Tas var padarīt sistēmu lēnu un radīt resursu problēmas citām " +"programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Mainīt teksta laukuma izmēru?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "&Mainīt teksta laukuma izmēru" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" +"

            Attēla izmēra mainīšana uz %1x%2 var aizņemt diezgan daudz atmiņas. " +"Tas var padarīt sistēmu lēnu un radīt resursu problēmas citām programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Mainīt attēla izmēru?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&Mainīt attēla izmēru" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" +"

            Attēla mērogošana uz %1x%2 var aizņemt diezgan daudz atmiņas. Tas var " +"padarīt sistēmu lēnu un radīt resursu problēmas citām programmām.

            Vai " +"esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Mērogot attēlu?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&Mērogot attēlu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" +"

            Iezīmētā mērogošana uz %1x%2 var aizņemt diezgan daudz atmiņas. Tas " +"var padarīt sistēmu lēnu un radīt resursu problēmas citām programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Mērogot iezīmēto?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Mērogot iezīmēto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" +"

            Attēla gluda mērogošana uz %1x%2 var aizņemt diezgan daudz atmiņas. " +"Tas var padarīt sistēmu lēnu un radīt resursu problēmas citām programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Gludi mērogot attēlu?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Gludi &mērogot attēlu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" +"

            Iezīmētā gluda mērogošana uz %1x%2 var aizņemt diezgan daudz atmiņas. " +"Tas var padarīt sistēmu lēnu un radīt resursu problēmas citām programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Gludi mērogot iezīmēto?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Gludi &mērogot iezīmēto" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Pagriezt iezīmēto" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Pagriezt attēlu" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Pēc pagriešanas:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Virziens" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "P&retēji pulkstenim" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Pu&lksteņa virzienā" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Leņķis" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 grā&di" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&rādi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &grādi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Pielāgots:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "grādi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the selection?

            " +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" +"

            Iezīmētā pagriešana uz %1x%2 var aizņemt diezgan daudz atmiņas. Tas " +"var padarīt sistēmu lēnu un radīt resursu problēmas citām programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Pagriezt iezīmēto?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Pagri&ezt iezīmēto" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

            Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to rotate the image?

            " +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" +"

            Attēla pagriešana sašķiebšana uz %1x%2 var aizņemt diezgan daudz " +"atmiņas. Tas var padarīt sistēmu lēnu un radīt resursu problēmas citām " +"programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Pagriezt attēlu?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Pagri&ezt attēlu" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Sašķiebt iezīmēto" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Sašķiebt attēlu" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Pēc sašķiebšanas:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontāli:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertikāli:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the selection?

            " +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" +"

            Iezīmētā sašķiebšana uz %1x%2 var aizņemt diezgan daudz atmiņas. Tas " +"var padarīt sistēmu lēnu un radīt resursu problēmas citām programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Sašķiebt iezīmēto?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Sašķi&ebt iezīmēto" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

            Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

            Are you sure want to skew the image?

            " +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" +"

            Attēla sašķiebšana uz %1x%2 var aizņemt diezgan daudz atmiņas. Tas " +"var padarīt sistēmu lēnu un radīt resursu problēmas citām programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?

            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Sašķiebt attēlu?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Sašķi&ebt attēlu" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Krāsu līdzība" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB krāsu kuba attālums" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Precīzi sakrīt" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Kas ir krāsu līdzība?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Saglabāt priekšskatījumu" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 baits (apm. %2%)" +msgstr[1] "%1 baiti (apm. %2%)" +msgstr[2] "%1 baitu (apm. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Neizdevās atvērt \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Neizdevās atvērt \"%1\" - neatbalstīts attēla formāts.\n" +"Fails varētu būt bojāts." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Neizdevās saglabāt attēlu - nepietiek informācijas." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"MIME tips: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Iekšēja kļūda" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" +"

            %1 formāts nespēj saglabāt visas attēla krāsas.

            Vai esat " +"pārliecināts ka vēlaties saglabāt šajā formātā?

            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Failu formāts ar zudumiem" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" +"

            Attēla saglabāšana zemā krāsu dziļumā - %1-biti - var izraisīt krāsu " +"informācijas zudumus. Tāpat var tikt aizvākta visa caurspīdīguma informācija." +"

            Vai esat pārliecināts ka vēlaties saglabāt šajā krāsu dziļumā?

            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Zems krāsu dziļums" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Neizdevās saglabāt attēlu - neizdevās izveidot pagaidu failu." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Neizdevās saglabāt kā \"%1\"." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Neizdevās saglabāt attēlu - neizdevās augšupielādēt." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Noņemt iešējo r&obežu" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Noņemt iešējo robežu" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Aut&oapcirst" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Autoapcirst" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint nespēj noņemt iezīmētā iekšējo robežo, jo to neizdevās atrast." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Neizdevās noņemt iešējo robežu" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint nespēj automātiski apcirst attēlu, jo neizdodas atrast tā robežu." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Neizdevās autoapcirst" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Uzlikt par attēlu" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Iezīmēšana: Izveidot" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "Zīmēšanas programma priekš KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projekta uzsācējs" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Galvenais izmeklētājs" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Skenēšanas atbalsts, alfa atbalsts, pašreizējais uzturētājs" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikonas" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "InputMethod atbalsts" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Attēlu efekti" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 portēšana" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "KDE 4 portēšana" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Paldies daudziem citiem, kas palīdzēja tapt šai programmai." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "Atveramais attēla fails" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Skats" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Attēls" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "K&rāsas" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Galvenā rīkjosla" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Teksta rīkjosla" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Iezīmēšanas rīka labās pogas izvēlne" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "R&ediģēt" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Sīktēls" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Velciet rokturi ar kreiso, lai mainītu attēla izmēru." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Izmēra mainīšana: Atlaidiet peles pogas." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Izmēra mainīšana: Labais klikšķis lai atceltu." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Teksts" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Neizdevās atvērt krāsu paleti \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Neizdevās atvērt krāsu paleti \"%1\" - neatbalstīts formāts.\n" +"Fails varētu būt bojāts." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Neizdevās atvērt KDE krāsu paleti \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Neizdevās saglabāt krāsu paleti kā \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Nenosaukts" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Lietot KolourPaint noklusētās krāsas" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Lietot KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Atvērt..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Pārielā&dēt" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Saglabāt" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Saglabāt &kā..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Pievienot rindu" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Dzēst pēdējo rindu" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Krāsas lauks" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Krāsu palete \"%1\" ir mainīta.\n" +"Vai vēlaties to saglabāt?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE krāsu palete \"%1\" ir mainīta.\n" +"Vai vēlaties to saglabāt?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Noklusētā krāsu palete ir mainīta.\n" +"Vai vēlaties to saglabāt?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Atvērt krāsu paleti" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Krāsu palete \"%1\" ir mainīta.\n" +"Pārielādēšana iznīcinās visas izmaiņas kopš pēdējās saglabāšanas.\n" +"Vai esat pārliecināts?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Pārielādēt" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE krāsu palete \"%1\" ir mainīta.\n" +"Pārielādēšana iznīcinās visas izmaiņas.\n" +"Vai esat pārliecināts?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Noklusētā krāsu palete ir mainīta.\n" +"Pārielādēšana iznīcinās visas izmaiņas.\n" +"Vai esat pārliecināts?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Saglabāt krāsu paleti kā" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Ielīmēt &jaunā logā" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Izdzēst iezīmēto" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opēt uz failu..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Ielīmēt no &faila..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Teksts: Izveidot teksta lauku" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Teksts: Ielīmēt" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Neizdodas ielīmēt" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Teksts: Izmest teksta lauku" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Iezīmētais: Izdzēst" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Teksts: Pabeigt" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Iezīmētais: Novākt iezīmējumu" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopēt uz failu" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Ielīmēt no faila" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&ksportēt..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skenēt..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Ekrānattēlu iegūšana" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Īpašības" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Pārielā&dēt" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Atvērt attēlu" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Momentuzņēmuma aizture" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekunde" +msgstr[1] " sekundes" +msgstr[2] " sekunžu" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Bez aiztures" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Slēpt galveno logu" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumenta īpašības" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Saglabāt attēlu kā" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Eksportēt" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokuments \"%1\" ir mainīts.\n" +"Pārielādēšana iznīcinās visas izmaiņas kopš pēdējās saglabāšanas reizes.\n" +"Vai esat pārliecināts?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokuments \"%1\" ir mainīts.\n" +"Pārielādēšana iznīcinās visas izmaiņas.\n" +"Vai esat pārliecināts?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Drukāt attēlu" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Lai attēlu nosūtītu, tas vispirms jāsaglabā.\n" +"Vai vēlaties saglabāt?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokuments \"%1\" ir mainīts.\n" +"Vai vēlaties to saglabāt?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&Mainīt izmēru / Mērogot..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Uzlik&t par attēlu (Apcirst)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Apmest (augšu uz leju)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Spoguļattēls (horizontāls)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "Pag&riezt..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Griezt pa &kreisi" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Griezt pa &labi" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Sašķie&bt..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Pārveidot uz mel&nbaltu (Tonēts)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Pārveidot uz &pelēktoņu" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Invertēt krāsas" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "N&otīrīt" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Vairāk efektu..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Attēls" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Iezīmēt&ais" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&Rādīt ceļu" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Fontu saime" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Fonta izmērs" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Trekns" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Slīpraksts" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Pasvītrots" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Pārsvītrots" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Iepriekšējā rīka iespēja (Grupa #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Nākamā rīka iespēja (Grupa #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Iepriekšējā rīka iespēja (Grupa #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Nākamā rīka iespēja (Grupa #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Zīmēt necaurspīdīgu" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Zīmēt ar krāsu līdzību..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Rīku kaste" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Rādīt &režģi" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Rādīt &sīktēlu" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Mērogots sīktēla režīms" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "&Rādīt sīktēla taisnstūri" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Mērogs" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Visu attēlu" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Ota" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Zīmē ar dažādas formas un izmēra otām" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Noklikšķiniet lai uzzīmētu punktu vai velciet lai zīmētu līnijas." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Krāsas dzēšgumija" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Aizstāj priekšplāna krāsas pikseļus ar fona krāsu" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Nospiediet un velciet lai dzēstu priekšplāna krāsas pikseļus." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Dzēšgumija" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Ļauj jums izdzēst kļūdas" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Nospiediet un velciet lai dzēstu." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Atlaidiet visas peles pogas." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Spalva" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Zīmē punktus un brīvrokas līnijas" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Krāsas baloniņš" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Pūš graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Nospiediet un velciet lai pūstu graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Labais klikšķis lai atceltu." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Kreisais klikšķis lai atceltu." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Ļauj jums nolasīt krāsu no attēla" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Nospiediet lai noteiktu krāsu." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Aizkrāso attēla reģionus" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Klikšķis lai aizkrāsotu reģionu." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Mērogs" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Palielina un samazina mērogu" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Klikšķis lai palielinātu/samazinātu mērogu, vai apvelciet rajonu, lai " +"palielinātu to." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Līkne" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Zīmē līkas līnijas" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Nvelciet līniju no sākuma līdz beigu punktam." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Velciet ar kreiso, lai uzliktu pirmo kontroles punktu, vai labais klikšķis " +"lai pabeigtu." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Velciet ar labo, lai uzliktu pirmo kontroles punktu, vai kreisais klikšķis " +"lai pabeigtu." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Velciet ar kreiso, lai uzliktu otro kontroles punktu, vai labais klikšķis " +"lai pabeigtu." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Velciet ar labo, lai uzliktu otro kontroles punktu, vai labais klikšķis lai " +"pabeigtu." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Līnija" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Zīmē līnijas" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Velciet lai zīmēru." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Daudzstūris" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Zīmē daudzstūrus" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Velciet, lai uzzīmētu pirmo līniju." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Velciet ar kreiso lai pievienotu līniju, labais klikšķis - pabeigt." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Velciet ar labo lai pievienotu līniju, kreisais klikšķis - pabeigt." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Savienotas līnijas" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Zīmē savienotas līnijas" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Zīmē elipses un riņķus" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Taisnstūris" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Zīmē taisnstūrus un kvadrātus" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Noapaļots taisnstrūris" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Zīmē taisnstūrus un kvadrātus ar apaļiem stūriem" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Velciet ar kreiso pogu, lai iezīmētu" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Velciet ar kreiso pogu, lai pārvietotu iezīmēto" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Velciet ar kreiso pogu, lai mērogotu iezīmēto" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Iezīmētais: Necaurspīdīgs" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Iezīmētais: Caurspīdīgs" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Iezīmētais: Caurspīdīgā krāsa" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Iezīmētais: Caurspīdīguma krāsu līdzība" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Iezīmēšana (Elipse)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Ļauj iezīmēt eliptisku vai apaļu laukumu" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Iezīmēšana (Brīvrokas)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Ļauj iezīmēt jebkādas formas laukumu" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Iezīmēšana (Taisnstūris)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Ļauj iezīmēr taisnstūrainu laukumu" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Iezīmētais: Pārvietot" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Smērējums" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Raksta tekstu" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Teksts: Dzēst pēdējo" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Teksts: Dzēst" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Teksts: Jauna rinda" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Teksts: Rakstīt" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Velciet ar kreiso pogu, lai izveidotu teksta lauku." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Velciet ar kreiso pogu, lai pārvietotu teksta lauku" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Teksts: Pārvietot teksta lauku" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Velciet ar kreiso pogu lai mainītu teksta lauka izmēru." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Kreisais klikšķis lai mainītu kursora pozīciju" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Teksts: Aizpildīts fons" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Teksts: Caurspīdīgs fons" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Teksts: Samainīt krāsas" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Teksts: Teksta krāsa" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Teksts: Fona krāsa" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Teksts: Fonts" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Teksts: Fonta izmērs" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Teksts: Treknraksts" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Teksts: Slīpraksts" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Teksts: Pasvītrots" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Teks: Pārsvītrots" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Nemērogots režīms - Sīktēls" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Sīktēls" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, fuzzy, kde-format +#| msgid "" +#| "

            Color Similarity is how similar the colors of " +#| "different pixels must be, for operations to consider them to be the same." +#| "

            If you set it to something other than Exact Match, you can " +#| "work more effectively with dithered images and photos, in a comparable " +#| "manner to the \"Magic Wand\" feature of other paint programs.

            This " +#| "feature applies to:

            • Selections: In Transparent " +#| "mode, any color in the selection that is similar to the background " +#| "color will be made transparent.
            • Flood Fill: For regions " +#| "with similar - but not identical - colored pixels, a higher " +#| "setting is likely to fill more pixels.
            • Color Eraser: Any " +#| "pixel whose color is similar to the foreground color will be " +#| "replaced with the background color.
            • Autocrop and Remove " +#| "Internal Border: For borders with similar - but not identical " +#| "- colored pixels, a higher setting is more likely to crop the whole " +#| "border.

            Higher settings mean that operations consider an " +#| "increased range of colors to be sufficiently similar so as to be " +#| "the same. Therefore, you should increase the setting if the above " +#| "operations are not affecting pixels whose colors you consider to be " +#| "similar enough.

            However, if they are having too much of an effect " +#| "and are changing pixels whose colors you do not consider to be similar (e." +#| "g. if Flood Fill is changing too many pixels), you should decrease " +#| "this setting.

            To configure it, click on the cube.

            " +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" +"

            Krāsu līdzība nosaka cik līdzīgām ir jābūt dažādu " +"pikseļu krāsām, lai darbības tās uzskatītu par vienādām.

            Ja jūs to " +"uztādīsiet uz jebko atšķirīgu no Precīza sakritība, jums būs vieglāk " +"strādāt ar tonētiem attēliem un fotogrāfijām, līdzīgi kā izmantojot \"Burvju " +"nūjiņas\" iespēju citās zīmēšanas programmās.

            Šī iespēja darbojas ar:

            • Iezīmēšanu: Caurspīdīgajā režīmā visas krāsas " +"iezīmētajā apgabalā, kas ir līdzīgas fona krāsai, tiks padarītas " +"caurspīdīgas.
            • Aizkrāsošanu: Rajoni, kas ir līdzīgā,bet " +"ne vienādā krāsā - augstāka vērtība aizpildīs vairāk pikseļu, nekā zemāka.
            • Krāsu dzēšgumija: Visas krāsas, kas ir līdzīgas " +"priekšplāna krāsai, tiks aizstādas ar fona krāsu.
            • Autoapciršana un Iekšējās robežas noņemšana: Robežām ar līdzīgas, bet ne " +"vienādas krāsas pikseļiem - augstāka vērtība palielina iespēju ka tiks " +"apcirsta visa robeža.

            Augstākas vērtības atzīs vairāk krāsu par " +"pietiekami līdzīgām lai tās uzskatītu par vienādām. Līdz ar to būtu " +"vēlams palielināt vērtību, ja minētās darbības neņem vērā pikseļus, kuri " +"jūsuprāt ir gana līdzīgi.

            Bet, ja tas izraisa pārāk lielu efektu un " +"sāk mainīt pikseļus, kuri jūsuprāt nav līdzīgi (piem. ja Aizkrāsošana " +"maina pārāk daudz pikseļu), jums vajadzētu samazināt šo vērtību.

            Lai " +"konfigurētu, nospiediet uz kuba.

            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, fuzzy, kde-format +#| msgid "" +#| "

            Color Similarity is how similar the colors of " +#| "different pixels must be, for operations to consider them to be the same." +#| "

            If you set it to something other than Exact Match, you can " +#| "work more effectively with dithered images and photos, in a comparable " +#| "manner to the \"Magic Wand\" feature of other paint programs.

            This " +#| "feature applies to:

            • Selections: In Transparent " +#| "mode, any color in the selection that is similar to the background " +#| "color will be made transparent.
            • Flood Fill: For regions " +#| "with similar - but not identical - colored pixels, a higher " +#| "setting is likely to fill more pixels.
            • Color Eraser: Any " +#| "pixel whose color is similar to the foreground color will be " +#| "replaced with the background color.
            • Autocrop and Remove " +#| "Internal Border: For borders with similar - but not identical " +#| "- colored pixels, a higher setting is more likely to crop the whole " +#| "border.

            Higher settings mean that operations consider an " +#| "increased range of colors to be sufficiently similar so as to be " +#| "the same. Therefore, you should increase the setting if the above " +#| "operations are not affecting pixels whose colors you consider to be " +#| "similar enough.

            However, if they are having too much of an effect " +#| "and are changing pixels whose colors you do not consider to be similar (e." +#| "g. if Flood Fill is changing too many pixels), you should decrease " +#| "this setting.

            " +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" +"

            Krāsu līdzība nosaka cik līdzīgām ir jābūt dažādu " +"pikseļu krāsām, lai darbības tās uzskatītu par vienādām.

            Ja jūs to " +"uztādīsiet uz jebko atšķirīgu no Precīza sakritība, jums būs vieglāk " +"strādāt ar tonētiem attēliem un fotogrāfijām, līdzīgi kā izmantojot \"Burvju " +"nūjuņas\" iespēju citās zīmēšanas programmās.

            Šī iespēja darbojas ar:

            • Iezīmēšanu: Caurspīdīgajā režīmā visas krāsas " +"iezīmētajā apgabalā, kas ir līdzīgas fona krāsai, tiks padarītas " +"caurspīdīgas.
            • Aizkrāsošanu: Rajoni, kas ir līdzīgā,bet " +"ne vienādā krāsā - augstāka vērtība aizpildīs vairāk pikseļu, nekā zemāka.
            • Krāsu dzēšgumija: Visas krāsas, kas ir līdzīgas " +"priekšplāna krāsai, tiks aizstādas ar fona krāsu.
            • Autoapciršana un Iekšējās robežas noņemšana: Robežām ar līdzīgas, bet ne " +"vienādas krāsas pikseļiem - augstāka vērtība palielina iespēju ka tiks " +"apcirsta visa robeža.

            Augstākas vērtības atzīs vairāk krāsu par " +"pietiekami līdzīgām lai tās uzskatītu par vienādām. Līdz ar to būtu " +"vēlams palielināt vērtību, ja minētās darbības neņem vērā pikseļus, kuri " +"jūsuprāt ir gana līdzīgi.

            Bet, ja tas izraisa pārāk lielu efektu un " +"sāk mainīt pikseļus, kuri jūsuprāt nav līdzīgi (piem. ja Aizkrāsošana " +"maina pārāk daudz pikseļu), jums vajadzētu samazināt šo vērtību.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" +"

            Krāsu līdzība: %1%

            Nospiediet lai konfigurētu.

            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" +"

            Krāsu līdzība: precīza sakritība

            Nospiediet lai " +"konfigurētu.

            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Gaišums:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "A&tstatīt" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrasts:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "A&tstatīt" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanāli:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Visi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Sarkans" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Zaļš" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Zils" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Atstatīt &visas vērtības" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Iestatījumi" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "D&audzums:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Ieslēgt" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Krāsas" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tonis:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Piesātinājums:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Vērtība:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "Sa&rkans:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "Z&aļš:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "Z&ils:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Visi" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanāli" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Melnbalts" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "M&elnbalts (Tonēts)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &krāsas" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 k&rāsas (tonēts)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bitu krāsas" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Samazināt uz" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularitāte:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" +"

            Lai izvēlētos rīkos lietoto priekšplāna krāsu, nospiediet ar kreiso " +"peles pogu uz aizpildītas krāsas šūnas. Lai izvēlētos fona krāsu, nospiediet " +"ar labo peles pogu.

            Lai nomainītu krāsu šūnas krāsu, veiciet " +"dubultklikšķi uz tās.

            Jūs varat arī samainīt šūnu krāsas vietām, " +"velkot un nometot aizpildītu šūnu uz jebkuras citas šūnas. Un, ja " +"pieturēsiet Control taustiņu, krāsa tiks tikai iekopēta mērķa šūnā, " +"nevis tās samainītas vietām.

            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Pārveidot &uz:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Kvalitāte:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Priekšskatījums" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Melnbalts" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Melnbalts (Tonēts)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 krāsas" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 krāsas (tonēts)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitu krāsas" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "&Attēla novietojums" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Lapas ¢rā" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Lapas augšējā-&kreisajā stūrī" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Caurspīdīgs" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint noklusētās krāsas" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Krāsas: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Krāsas: %1 [mainītas]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Aplis" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadrāts" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Slīpsvītra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Otrāda slīpsvītra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Neaizpildīts" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Aizpildīts ar fona krāsu" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Aizpildīts ar priekšplāna krāsu" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Necaurspīdīgs" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Jau eksistē dokuments ar nosaukumu \"%1\".\n" +#~ "Vai vēlaties to pārrakstīt?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Krāsu palete \"%1\" jau eksistē.\n" +#~ "Vai vēlaties to pārrakstīt?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Mēroga uzstādīšana uz vērtību, kas nav 100% daudzkārtnis izraisa " +#~ "neprecīzu rediģēšanu un pārzīmēšanas neprecizitātes.\n" +#~ "Vai tiešām vēlaties uzstādīt mērogu uz %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Uzstādīt mērogu uz %1%" + +#~ msgid "None" +#~ msgstr "Neviens" + +#~ msgid "" +#~ "

            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

            Are you sure want to resize the image?

            " +#~ msgstr "" +#~ "

            Attēla izmēra mainīšana uz %1x%2 var aizņemt diezgan daudz " +#~ "atmiņas. Tas var padarīt sistēmu lēnu un radīt resursu problēmas citām " +#~ "programmām.

            Vai esat pārliecināts, ka vēlaties veikt šo dabību?" + +#~ msgid "Overwrite" +#~ msgstr "Pārrakstīt" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Neizdevās atvērt \"%1\" - nezināms MIME tips." + +#~ msgid "Save Preview" +#~ msgstr "Saglabāt priekšskatījumu" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Palīdzību meklējiet tīmekļa vietnē." + +#~ msgid "No Scanning Support" +#~ msgstr "Nav skenēšanas atbalsta" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Skenēšanas atbalsts nav instalēts." + +#~ msgid "" +#~ "

            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

            " +#~ msgstr "" +#~ "

            KolourPaint neizdevās ielīmēt starpliktuves saturu, jo " +#~ "starpliktuves saturs negaidīti pazuda.

            Tas parasti notiek, ja tiek " +#~ "apturēta programma, kas atbild par starpliktuves saturu.

            " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Ekrānattēlu &iegūšana" + +#~ msgid "" +#~ "

            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

            Alternatively, you may try the application KSnapshot.

            " +#~ msgstr "" +#~ "

            Lai iegūtu ekrānattēlu, nospiediet %1. Ekrānattēls tiks " +#~ "saglabāts starpliktuvē un jūs varēsiet to ielīmēt iekš KolourPaint.

            Jūs varat mainīt Darbvirsmas ekrānattēla īsceļu KDE sistēmas " +#~ "iestatījumos modulī Tastatūras " +#~ "īsceļi.

            Vai arī varat izmantot KSnapshot programmu.

            " + +#~ msgid "" +#~ "

            You do not appear to be running KDE.

            Once you have loaded KDE:" +#~ "

            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

            Alternatively, you may try the " +#~ "application KSnapshot.

            " +#~ msgstr "" +#~ "

            Izskatās ka nav palaists KDE.

            Kad būsiet palaidis KDE:" +#~ "

            Nospiediet %1, lai iegūtu ekrāntēlu. Ekrānattēls " +#~ "tiks saglabāts starpliktuvē un jūs varēsiet to ielīmēt iekš KolourPaint.

            Vai arī varat izmantot KSnapshot programmu.

            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Uzlikt par ekrān&tapeti (Centrā)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Uzlikt par ekrān&tapeti (Flīzēts)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Pirms attēlu var uzlikt par ekrāna tapeti, tas vispirms jāsaglabā lokālā " +#~ "failā.\n" +#~ "Vai vēlaties to saglabāt?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Pirms attēlu var uzlikt par ekrāna tapeti, tas ir jāsaglabā.\n" +#~ "Vai vēlaties to saglabāt?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Neizdevās nomainīt ekrāna tapeti." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Apmest iezīmēto" + +#~ msgid "Flip Image" +#~ msgstr "Apmest attēlu" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Vertikāls (augšu uz leju)" + +#~ msgid "&Horizontal" +#~ msgstr "&Horizontāls" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Krāsu un caurspīdīguma informācijas zaudēšana" + +#~ msgid "Loss of Color Information" +#~ msgstr "Krāsu informācijas zaudēšana" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Caurspīdīguma informācijas zaudēšana" + +#~ msgid "" +#~ "

            KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

            To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

            " +#~ msgstr "" +#~ "

            KolourPaint neatbalsta šī ekrāna krāsu dziļumu: %1bpp. KolourPaint " +#~ "mēģinās strādāt, bet var darboties neuzticami.

            Lai izvairītos no " +#~ "šīs problēmas, lūdzu uzstādiet ekrāna krāsu dziļumu uz 24bpp un palaidiet " +#~ "KolourPaint no jauna.

            " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Neatbalstīts ekrāna režīms" + +#~ msgid "" +#~ "

            This effect does not support the current screen depth of %1bpp.

            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Šis efekts neatbasta jūsu ekrāna krāsu dziļumu %1bpp.

            Lai " +#~ "izvairītos no šīs problēmas, lūdzu nomainiet ekrāna krāsu dziļumu uz " +#~ "24bpp un palaidiet KolourPaint no jauna.

            " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Neizdevās skenēt - nepietiek grafikas atmiņas." + +#~ msgid "Cannot Scan" +#~ msgstr "Neizdevās skenēt" + +#~ msgid "&Flip..." +#~ msgstr "&Apmest..." + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

            If you save " +#~ "this image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Ielīmējamajā attēlā varētu būt vairāk krāsu nekā aktīvais ekrāna " +#~ "režīms spēj apstrādāt. Daļa no krāsu informācijas varētu būt aizvākta, " +#~ "lai attēlu varētu parādīt uz ekrāna.

            Ja saglabāsiet šo attēlu, " +#~ "krāsu zaudēšana būs neatgriežama.

            Lai izvairītos no šīs " +#~ "problēmas, palieliniet ekrāna bitu dziļumu uz vismaz %1bpp un palaidiet " +#~ "KolourPaint no jauna.


            Attēls satur arī caurspīdīgumu, kas ir " +#~ "nepilnīgi atbalstīts. Caurspīdīguma dati tiks pārvērsti par 1-bita " +#~ "caurspīdīguma masku.

            Ja saglabāsiet šo attēlu, caurspīdīguma " +#~ "zaudēšana būs neatgriežama.

            " + +#~ msgid "" +#~ "

            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

            If you save this image, any color loss will " +#~ "become permanent.

            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Ielīmējamajā attēlā varētu būt vairāk krāsu nekā aktīvais ekrāna " +#~ "režīms spēj apstrādāt. Daļa no krāsu informācijas varētu būt aizvākta, " +#~ "lai attēlu varētu parādīt uz ekrāna.

            Ja saglabāsiet šo attēlu, " +#~ "krāsu zaudēšana būs neatgriežama.

            Lai izvairītos no šīs " +#~ "problēmas, palieliniet ekrāna bitu dziļumu uz vismaz %1bpp un palaidiet " +#~ "KolourPaint no jauna.

            " + +#~ msgid "" +#~ "

            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Ielīmējamais attēls satur caurspīdīgumu, kas ir nepilnīgi " +#~ "atbalstīts. Caurspīdīguma dati tiks pārvērsti par 1-bita caurspīdīguma " +#~ "masku.

            Ja saglabāsiet šo attēlu, caurspīdīguma zaudēšana būs " +#~ "neatgriežama.

            " + +#~ msgid "

            There is nothing in the clipboard to paste.

            " +#~ msgstr "

            Starpliktuvē nav nekā ko ielīmēt.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

            If you save this " +#~ "image, this loss of translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Attēlā \"%1\" varētu būt vairāk krāsu nekā aktīvais ekrāna režīms " +#~ "spēj apstrādāt. Daļa no krāsu informācijas varētu būt aizvākta, lai " +#~ "attēlu varētu parādīt uz ekrāna.

            Ja saglabāsiet šo attēlu, krāsu " +#~ "zaudēšana būs neatgriežama.

            Lai izvairītos no šīs problēmas, " +#~ "palieliniet ekrāna bitu dziļumu uz vismaz %2bpp un palaidiet KolourPaint " +#~ "no jauna.


            Attēls satur arī caurspīdīgumu, kas ir nepilnīgi " +#~ "atbalstīts. Caurspīdīguma dati tiks pārvērsti par 1-bita caurspīdīguma " +#~ "masku.

            Ja saglabāsiet šo attēlu, caurspīdīguma zaudēšana būs " +#~ "neatgriežama.

            " + +#~ msgid "" +#~ "

            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

            If you save this image, any color loss will become " +#~ "permanent.

            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

            " +#~ msgstr "" +#~ "

            Attēlā \"%1\" varētu būt vairāk krāsu nekā aktīvais ekrāna režīms " +#~ "spēj apstrādāt. Daļa no krāsu informācijas varētu būt aizvākta, lai " +#~ "attēlu varētu parādīt uz ekrāna.

            Ja saglabāsiet šo attēlu, krāsu " +#~ "zaudēšana būs neatgriežama.

            Lai izvairītos no šīs problēmas, " +#~ "palieliniet ekrāna bitu dziļumu uz vismaz %2bpp un palaidiet KolourPaint " +#~ "no jauna.

            " + +#~ msgid "" +#~ "

            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

            If you save this image, this loss of " +#~ "translucency will become permanent.

            " +#~ msgstr "" +#~ "

            Attēls \"%1\" satur caurspīdīgumu, kas ir nepilnīgi atbalstīts. " +#~ "Caurspīdīguma dati tiks pārvērsti par 1-bita caurspīdīguma masku.

            Ja saglabāsiet šo attēlu, caurspīdīguma zaudēšana būs " +#~ "neatgriežama.

            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Neizdevās atvērt \"%1\" - nepietiek grafiskās atmiņas." + +#~ msgid "Scanning Support" +#~ msgstr "Skenēšanas atbalsts" diff --git a/po/ml/kolourpaint.po b/po/ml/kolourpaint.po new file mode 100644 index 0000000..09fe0ae --- /dev/null +++ b/po/ml/kolourpaint.po @@ -0,0 +1,2551 @@ +# Malayalam translations for kolourpaint package. +# Copyright (C) 2019 This file is copyright: +# This file is distributed under the same license as the kolourpaint package. +# Automatically generated, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2019-12-03 10:43+0000\n" +"Last-Translator: Subin Siby \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "" +msgstr[1] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to resize the text box?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to resize the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to scale the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to scale the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to smooth scale the selection?" +"

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to rotate the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to rotate the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

            Are you sure you want to skew the selection?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

            Are you sure you want to skew the image?

            " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "" +msgstr[1] "" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

            The %1 format may not be able to preserve all of the image's " +"color information.

            Are you sure you want to save in this format?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

            Are " +"you sure you want to save at this color depth?

            " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "കാഴ്ച (&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "തിരുത്തുക (&E)" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "" + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            To configure it, click on the cube.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

            This feature applies " +"to:

            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

            Color Similarity: %1%

            Click to configure.

            " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

            Color Similarity: Exact Match

            Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

            To change the color of a color cell itself, double-click on it.

            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

            " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "" diff --git a/po/mr/kolourpaint.po b/po/mr/kolourpaint.po new file mode 100644 index 0000000..e21ef74 --- /dev/null +++ b/po/mr/kolourpaint.po @@ -0,0 +1,2805 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Chetan Khona , 2013. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2013-03-04 11:29+0530\n" +"Last-Translator: Chetan Khona \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: Lokalize 1.5\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "चेतन खोना" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "chetan@kompkin.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "संतुलन" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "सौम्य करा" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "तीव्र करा" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "पुसून टाका" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "निवड : %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "उठावदार करा" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "सपाट करा" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "करड्या रंगछटेचा वापर करा" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "वर्णछटा, संपृक्ती, मूल्य" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "रंग उलट करा" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "उलट करा" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "एकाच रंगामध्ये बदला (मागेपुढे)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "एकाच रंगामध्ये बदला" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "२५६ या रंगछटेत बदला (मागेपुढे)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "२५६ या रंगछटेत बदला" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "हिस्टोग्रॅम समकारी" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "पलटी करा" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "उभे व आडवे पलटी करा" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "आडवे पलटी करा" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "उभे पलटी करा" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "मजकूर: पेटीचा आकार बदला" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "निवड : प्रमाण" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "निवड : मृदू प्रमाण" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "आकार बदला" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "प्रमाण" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "मृदू प्रमाण" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "फिरवा" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "तिरपे" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "पूर्ववत करा (&U): %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "पूर्ववत करा (&U)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "पुन्हा करा (&R): %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "पुन्हा करा (&R)" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "पूर्ववत करा: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "पूर्ववत करा" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "पुन्हा करा : %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "पुन्हा करा" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 अधिक घटक" +msgstr[1] "%1 अधिक घटक" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "रंग निवडणारा" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "पोकळी भरणे" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "प्रतिमांचे अधिक परिणाम (निवड)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "प्रतिमांचे अधिक परिणाम" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "परिणाम (&E)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "रंग कमी करा" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "सौम्य करा व तीव्र करा" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "दस्तऐवजाचे गुणधर्म" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "प्रतिइंच बिंदू (D&PI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "अविनिर्दिष्ट" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "आडवे :" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "उभे :" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            प्रतीइंच बिंदू (डीपीआय) ही संज्ञा एक इंच जागेत (२.५४ सेमी) छापावयाच्या " +"अंकीय प्रतिमा दर्शविते.

            प्रतिमेचे डीपीआय जितके जास्त, तेवढा छापली गेलेली प्रतिमा " +"लहान. हे लक्षात घ्या की तुम्ही प्रिन्टरच्या दर्जाप्रमाणे डीपीआयची संख्या ३०० वा ६०० पर्यंत " +"वाढविलीततर तुमचा प्रिन्टर उत्तम दर्जाच्या प्रिन्टस देऊ शकणार नाही.

            " +"तुम्हालाछापवायाच्या प्रतिमेचा आकार पडद्यावर दिसतो तेवढाच ठेवायचा असेल तर तिची डीपीआय " +"मूल्ये पडद्याच्या डीपीआय मुल्याएवढीच ठेवा.

            जर डीपीआय मूल्ये निश्चीत केली नसतील तर " +"छापील प्रतिमेचा आकार padadyaपडद्यावरील प्रतिमेएवढाच असेल.

            प्रतिमेचे सर्वच आकार/" +"रूपरेखा डीपीआय मुल्यांना पुष्टी देत नाहीत. तुम्ही संग्रहित केलेला आकार त्यांना पुष्टी देत नसेल " +"तर असेडीपीआय संग्रहित होणार नाहीत.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "ऑफसेट (&F)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

            The Offset is the relative position where this image should be " +"placed, compared to other images.

            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

            " +msgstr "" +"

            प्रतिरूप मुद्रण ही अशी संबंधित स्थिती आहे की जिथे अन्य प्रतीमांशी तुलना करता ही " +"प्रतिमा ठेवणे योग्य आहे.

            प्रतिमेचे सर्व आकार/रूपरेखा प्रतिरूप मुद्रण संस्करणाला सहाय्यभूत " +"नसतात. तुम्ही संग्रहित केलेला आकार या संस्करणाला सहाय्यभूत होत नसेल तर येथे नमूद केलेली " +"डीपीआय मूल्ये साठवली जाऊ शकणार नाहीत.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "मजकुराची प्रक्षेत्रे (&T)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "ओळ वाढवा (&A)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "ओळ काढून टाका (&D)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "पुन्हस्थापित करा (&R)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

            " +msgstr "" +"

            मजकुराची प्रक्षेत्रे प्रतीमेविषयी अधिक माहिती देतात.सहसा ही जागा " +"टिप्पणी/भाष्य करण्यासाठी असते की जेथे तुम्ही विनाअडथळा कोणताही मजकूर लिहू शकता.

            तथापि ही जागा स्वरूप-निर्दिष्ट असते जेणेकरून ही प्रक्षेत्रे म्हणजे सैद्धांतिकदृष्ट्या संगणकीय " +"परिभाषेतील माहितीसाठा असतो की ज्यात तुम्ही फेरफार करणे अपेक्षित नाही- पण ही बाब सहसा " +"असंभवनीय असते.

            प्रतिमेचे सर्वच आकार/रूपरेखामजकुराच्या प्रक्षेत्रांना पुष्टी " +"देत नाहीत. जर तुम्ही संग्रहित करत असलेला आकार त्यांना सहाय्यकारी होत नसेल तर नसेल ते " +"संग्रहित होऊ शकणार नाहीत.

            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "कळ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "मूल्य" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" +"%2 रांगेतील मजकूर मूल्यासाठी \"%1\" (प्रणालीतील नोंदीसाठी) कळ असण्याची आवश्यकता आहे." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"मजकुरासाठीच्या सर्व चाव्या एकमेव असल्या पाहिजेत. %2 व %3 या ओळीवरील मजकुराच्या \"%1\" " +"चाव्या एकसारख्या आहेत." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "मजकुराची अवैध प्रक्षेत्रे" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "परिमाणे" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "मूळ :" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "पूर्वावलोकन" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "अद्ययावत (&U)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "आकार / प्रमाण बदला" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "यावर कृती करा (&T):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "संपूर्ण प्रतिमा" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "निवड" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "मजकुराची पेटी" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "क्रिया" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
            " +msgstr "" +"
            • Resize: उजवीकडे व/अथवा तळाशी नवीन जागा निर्माण करून आकार " +"वाढवितायेईल(पार्श्वभूमीवरील रंग्छटासह) अथवा अशी जागा कमी करून आकार लहान करता येईल.
            • Scale:अंकीय प्रतिमांची संख्या वाढवून प्रतिमा मोठी करता येईल वा ही संख्या " +"कमी करून प्रतिमालहान करता येईल.
            • Smooth Scale: हे Scale " +"फक्त ते प्रतिमानितळ/सफाईदार करण्यासाठी शेजारील अंकीय प्रतिमांचे संमिश्रण करतात.
            • " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "आकार बदला (&R)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "प्रमाण (&S)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "मृदू प्रमाण (&M)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "रुंदी :" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "उंची :" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "नवीन (&N):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "टक्के (&P):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "क्रियाप्राप्तीचे गुणोत्तर ठेवा (&A)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

              Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

              Are you sure you want to resize the text box?

              " +msgstr "" +"

              मजकुराची पेटी %1x%2 या आकारात बदलण्यसाठी स्मरणसाठ्याचा वापर मोठ्या प्रमाणावर " +"होऊ शकतो.यामुळे प्रणालीचा प्रतिसाद कमी होणे व आज्ञावलीच्या संसाधनाच्या अन्य अडचणी " +"निर्माण होऊ शकतात.

              तुम्हाला अजूनही मजकुराच्या पेटीचा आकार बदलावा असे वाटते का?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "मजकुराच्या पेटीचा आकार बदलायचा आहे का?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "मजकुराच्या पेटीचा आकार बदला (&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

              Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

              Are you sure you want to resize the image?

              " +msgstr "" +"

              मजकुराची पेटी %1x%2 या आकारात बदलण्यासाठी स्मरणसाठ्याचा वापर मोठ्या प्रमाणात " +"होऊ शकतो.यामुळे प्रणालीचा प्रतिसाद कमी होणे व आज्ञावलीच्या संसाधनाच्या अडचणी निर्माण " +"होऊ शकतात.

              तुम्हाला मजकुराच्या पेटीचा आकार अजूनही बदलावा असे वाटते का?

              " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "प्रतिमेचा आकार बदलायचा आहे का?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "प्रतिमेच्या आकारात बदल करा (&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

              Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

              Are you sure you want to scale the image?

              " +msgstr "" +"

              माज्कुत्राच्या पेटीचे प्रमाण/मोजमाप %1x%2 इतके करण्यासाठी स्मरणसाठ्याचा वापर " +"मोठ्या प्रमाणावरहोऊ शकतो.यामुळे प्रणालीचा प्रतिसाद कमी होणे व आज्ञावलीच्या संसाधनाच्या " +"अडचणी निर्माण होऊ शकतात.

              तुम्हाला मजकुराच्या पेटीचे प्रमाण/मोजमाप अजूनही बदलायचे " +"आहे का?

              " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "प्रतिमेचे प्रमाण बदलायचे आहे का?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "प्रतिमेचे प्रमाण बदला (&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

              Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

              Are you sure you want to scale the selection?

              " +msgstr "" +"

              निवडलेल्या प्रतिमेचे प्रमाण %1x%2मध्ये करण्यासाठी स्मरणसाठ्याची आवश्यकता मोठ्या " +"प्रमाणावर असते.यामुळे प्रणालीचा प्रतिसाद कमी होऊ शकतो तसेच अन्य आज्ञावलींच्या संसाधानात " +"अडचणी येऊ शकतात.

              हे निवडीचे प्रमाण/मोजमाप तुम्हाला खरोखरच बदलयाचे आहे का?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "प्रमाणाची निवड?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "प्रमाणाची निवड (&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

              Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

              Are you sure you want to smooth scale the image?" +msgstr "" +"

              निवडलेल्या प्रतिमेचे प्रमाण/मोजमाप सहजगत्या %1x%2 मध्ये करण्यासाठी स्मरणसाठ्याची " +"मोठ्या प्रमाणातआवश्यकता असते. यामुळे प्रणालीचा प्रतिसाद कमी होऊ शकतो तसेच अन्य " +"आज्ञावलीच्या संसाधनात अडचणी येऊशकतात.

              हे निवडीचे प्रमाण/मोजमाप तुम्हाला " +"खरोखरच बदलायचे आहे का?

              " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "मृदू प्रमाणाची प्रतिमा?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "मृदू प्रमाणाची प्रतिमा (&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

              Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

              Are you sure you want to smooth scale the selection?" +"

              " +msgstr "" +"

              निवडलेल्या प्रतिमेचे मृदू प्रमाण %1x%2 मध्ये करण्यासाठी स्मरणसाठ्याची मोठ्या " +"प्रमाणातआवश्यकता असते. यामुळे प्रणालीचा प्रतिसाद कमी होऊ शकतो तसेच अन्य आज्ञा वालीच्या " +"संसाधनात अडचणी येऊशकतात.

              हे निवडीचे प्रमाण तुम्हाला खरोखरच बदलायचे आहे का?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "मृदू प्रमाणाची निवड?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "मृदू प्रमाणाची निवड (&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "निवड फिरवा" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "प्रतिमा फिरवा" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "फिरवल्यानंतर :" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "दिशा" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "घड्याळाच्या विरुध्द दिशेने (&N)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "घड्याळाच्या काट्याच्या दिशेने (&L)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "कोन" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "९० अंश (&D)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "१८० अंश (&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "२७० अंश (&G)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "ऐच्छिक (&U):" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "अंश" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

              Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

              Are you sure want to rotate the selection?

              " +msgid "" +"

              Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

              Are you sure you want to rotate the selection?

              " +msgstr "" +"

              निवड %1x%2 कडे चक्राकार फिरवण्यासाठी माहितीसाठ्याची मोठ्या प्रमाणात आवश्यकता " +"असते. यामुळेप्रणालीचा प्रतिसाद कमी शकतो व अन्य आज्ञावलींना संसाधनांची अडचण निर्माण होऊ " +"शकते.

              तुम्हाला निवड चक्राकार फिरवायची आहे याबद्दल खात्री आहे का?

              " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "निवड फिरवा?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "निवड फिरवा (&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

              Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

              Are you sure want to rotate the image?

              " +msgid "" +"

              Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

              Are you sure you want to rotate the image?

              " +msgstr "" +"

              प्रतिमा%1x%2 कडे चक्राकार फिरविण्यासाठी माहितीसाठ्याची मोठ्या प्रमाणावर " +"आवश्यकता असते.यामुळे प्रणालीचा प्रतिसाद कमी होतो व अन्य आज्ञावलींना संसाधनानांची अडचण " +"निर्माण होयू शकते.

              तुम्हाला प्रतिमा चक्राकार फिरवायची आहे याबद्दल खात्री आहे " +"का?

              " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "प्रतिमा फिरवा?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "प्रतिमा फिरवा" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "तिरपी निवड" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "तिरपी प्रतिमा" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "तिरपी केल्यानंतर :" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "आडवे (&H):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "उभे (&V):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

              Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

              Are you sure want to skew the selection?

              " +msgid "" +"

              Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

              Are you sure you want to skew the selection?

              " +msgstr "" +"

              प्रतिमा %1x%2कडे तिरपी करण्यासाठी माहितीसाठ्याची मोठ्या प्रमाणावर आवश्यकता " +"असते.यामुळे प्रणालीचा प्रतिसाद कमी होतो व अन्य आज्ञावलींना संसाधनांची अडचण निर्माण होऊ " +"शकते.

              तुम्हाला निवड तिरप्या स्थितीत ठेवायची आहे याबद्दल खात्री आहे?

              " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "तिरपी निवड?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "तिरपी निवड (&E)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

              Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

              Are you sure want to skew the image?

              " +msgid "" +"

              Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

              Are you sure you want to skew the image?

              " +msgstr "" +"

              प्रतिमा %1x%2कडे तिरपी करण्यासाठी माहितीसाठ्याची मोठ्या प्रमाणात आवश्यकता " +"असते.यामुळे प्रणालीचा प्रतिसाद कमी होतो व अन्य आज्ञावलींना सासाधनांची अडचण निर्माण होऊ " +"शकते.

              तुम्हाला प्रतिमा तिरप्या स्थितीत ठेवायची आहर याबद्दल खात्री आहे का?

              " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "तिरपी प्रतिमा?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "तिरपी प्रतिमा (&E)" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "रंगातील साम्य" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "आरजीबी रंग घन अंतर (&R)" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "अचूक जुळवणी" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "रंगातील साम्य म्हणजे काय?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "पूर्वावलोकन साठवा" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 बाइट. (अंदाजे %2%)" +msgstr[1] "%1 बाइट्स. (अंदाजे %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "उघडणे शक्य झाले नाही \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"उघडणे शक्य झाले नाही \"%1\" – असमर्थीत प्रतिमा स्वरूप.\n" +"फाईल स्वरूप दूषित असू शकते." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "प्रतिमा संग्रहित करू शकत नाही – अपुरी माहिती" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"माइम प्रकार : %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<रिकामा>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "अंतर्गत त्रुटी" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

              The %1 format may not be able to preserve all of the image's " +"color information.

              Are you sure you want to save in this format?

              " +msgstr "" +"

              %1 ही रचना प्रतिमेच्या रंगछटांची/रंगसंगतीची सर्व माहिती बहुदा सुरक्षित " +"ठेऊ शकणार नाही.

              तुम्हाला ही रचना सुरक्षित ठेवावयास हवी आहे का?

              " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "लोस्सी फाईल स्वरूप" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

              Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

              Are " +"you sure you want to save at this color depth?

              " +msgstr "" +"

              प्रतिमा %1-bitला लो कलर डेप्थ स्थितीत संग्रहित/सुरक्षित ठेवण्याने प्रतिमेच्य " +"रंगसंगतीची माहिती हरवू शकते.कोणतीही पारदर्शकतादेखील नाहीशी होऊ शकते.

              तरीही " +"तुम्ही या कलर डेप्थला सुरक्षित ठेऊ इच्छिता?

              " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "कमी रंग खोली" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "प्रतिमा साठवू शकत नाही – तात्पुरती फाईल निर्माण करू शकत नाही." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "\"%1\". ह्या पद्धतीप्रमाणे साठवू शकत नाही." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "प्रतिमा साठवू शकत नाही – अपलोड करू शकत नाही." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "अंतर्गत किनार काढून टाका (&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "अंतर्गत किनार काढून टाका" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "ऑटोक्रॉप (&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "ऑटोक्रॉप" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"कलरपेंट(KolourPaint) निवडीची अंतर्गत कड/किनार/सीमा ती सापडू न शकल्याने काढून टाकू शकत " +"नाही." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "अंतर्गत किनार काढून टाकू शकत नाही" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"कलरपेंट प्रतिमा तिची किनार सापडत नसल्याने स्वयंचलित पद्धतीने कमी(crop)करू शकत नाही." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "स्वयंचलितरित्या कमी करू शकत नाही" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "प्रतिमा म्हणून निश्चित करा" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "निवड : निर्माण करा" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "कलरपेंट" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "केडीई साठी रंग कार्यक्रम" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "क्लारेन्स दंग" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "योजना संस्थापक" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "थर्स्टन दंग" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "मुख्य तपासनीस" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "मार्टीन कोलर" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "विश्लेषण सहाय्य, अल्फा सहाय्य, सद्यकालीन प्रतिपालक " + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "क्रिस्टोफ बॉएरी" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "चिन्हे" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "तासुकू सुझुकी" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "इन्पुटपद्धतीला सहाय्य" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "काझुकी ओह्टा" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "नुनो पिन्हेरो" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "डानी आलेन" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "माइक गश्लर" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "प्रतिमांचे परिणाम" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "लोरेंत मोन्टेल" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "केडीई 4 पोर्टिंग" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "केडीई 4 पोर्टिंग" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "ही योजना यशस्वी करण्यासाठी मदत करणाऱ्या अनेक व्यक्तींना धन्यवाद." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "उघडावयाची प्रतिमा फाईल" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "दृश्य (&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "प्रतिमा (&I)" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "रंग (&C)" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "मुख्य साधनपट्टी" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "मजकुराची साधनपट्टी" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "निवडीचे साधन RMB मेन्यू" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "संपादन (&E)" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "लघुप्रतिमा" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "प्रतिमेचा आकार बदलण्यासाठी कडी डावीकडे ओढा." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "प्रतिमेचा आकार बदल : माऊसकडील सर्व बटणे मुक्तपणे वापरा." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "प्रतिमेचा आकार बदल : रद्द करण्यासाठी उजवे बटन क्लिक करा" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "मजकूर" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "रंग पटल उघडू शकत नाही \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"रंग पटल उघडू शकत नाही \"%1\" – समर्थीत नसलेले स्वरूप. \n" +"फाईल दूषित असू शकते" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "केडीई रंग पटल उघडू शकत नाही \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "रंग पटल \"%1\" म्हणून साठवू शकत नाही." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "शिर्षकहीन" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "कलरपेंट मूलभूत वापरा" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "केडीई चे वापरा" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "उघडा (&O)..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "पुन्हा दाखल करा (&D)" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "साठवा (&S)" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "असे साठवा (&A)..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "ओळ वाढवा" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "शेवटची ओळ काढून टाका" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "रंग पेटी" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"रंग पटल \"%1\" मध्ये बदल करण्यात आले आहेत.\n" +"तुम्हाला ती साठवायची आहे का?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"केडीई रंग पटल \"%1\" मध्ये बदल करण्यात आले आहेत.\n" +"तुम्हाला ती फाईलमध्ये साठवायची आहे का?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"मूलभूत रंग पटलमध्ये बदल करण्यात आले आहेत.\n" +"तुम्हाला ती फाईलमध्ये साठवायची आहे का?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "रंग पटल उघडा" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"रंग पटल \"%1\" मध्ये बदल केलेले आहेत. \n" +"पुन्हा भारीत केल्याने याआधी साठवल्यापासूनचे सर्व बदल नाहीसे होतील. \n" +"तुम्हाला खात्री आहे?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "पुन्हा दाखल करा (&R)" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"केडीई रंग पटल \"%1\" मध्ये बदल केलेले आहेत.\n" +"पुन्हा दाखल करण्याने सर्व बदल नाहीसे होतील.\n" +"तुम्हाला खात्री आहे?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, fuzzy, kde-format +#| msgid "" +#| "The default color palette has been modified.\n" +#| "Reloading will lose all changes.\n" +#| "Are you sure?" +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"केडीई रंग पटल \"%1\" मध्ये बदल केलेले आहेत.\n" +"पुन्हा दाखल करण्याने सर्व बदल नाहीसे होतील.\n" +"तुम्हाला खात्री आहे?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "रंग पटल असे साठवा" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "नवीन चौकटीत चिकटवा (&N)" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "निवड काढून टाका (&D)" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "फाईलमध्ये प्रत करा (&O)..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "फाईलमधून चिकटवा (&F)..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "मजकूर : पेटी तयार करा" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "मजकूर : चिकटवा" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"कलरपेंट क्लिपबोर्डवरील माहिती चिकटवू शकत नाही कारण ही माहित नसलेली रचना आहे. " + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "चिकटवू शकत नाही" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "मजकूर : पेटी काढून टाका" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "निवड : काढून टाका" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "मजकूर : संपवा" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "निवड : रद्द करा" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "फाईलमध्ये प्रत करा" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "फाईलमधून चिकटवा" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "निर्यात (&X)..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "स्कॅन करा..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "स्क्रीनशॉट मिळवा" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "गुणधर्म" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "पुन्हा दाखल करा (&D)" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "प्रतिमा उघडा" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "स्क्रीन छायाचित्राला विलंब" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " सेकंद" +msgstr[1] " सेकंद" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "विलंब नाही" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "मुख्य चौकट लपवा" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "दस्तऐवजाचे गुणधर्म" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "प्रतिमा अशी साठवा" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "निर्यात" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"दस्तऐवज \"%1\" मध्ये बदल केलेले आहेत.\n" +"पुन्हा दाखल केल्याने याआधी साठवल्यापासूनचे सर्व बदल नाहीसे होतील.\n" +"तुम्हाला हे चालेल का?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"दस्तऐवज \"%1\" मध्ये बदल केलेले आहेत.\n" +"पुन्हा दाखल केल्याने याआधी साठवल्यापासूनचे सर्व बदल नाहीसे होतील.\n" +"तुम्हाला हे चालेल का?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "प्रतिमा छापा" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"ही प्रतिमा पाठविण्यापूर्वी तुम्ही ती साठवली पाहिजे.\n" +"तुम्ही ती साठवू इच्छिता का?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"दस्तऐवज \"%1\" मध्ये बदल केलेले आहेत.\n" +"तुम्हाला तो साठवायचा आहे का?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "आकार / प्रमाण बदला (&E)..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "प्रतिमा म्हणून निश्चीत करा (कमी) " + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "पलटी करा (वरून खाली) (&F)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "प्रतिबिंब (आडवे)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "फिरवा (&R)..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "डावीकडे फिरवा (&L)" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "उजवीकडे फिरवा (&T)" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "तिरपे करा (&K)...." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "मोनोक्रोममध्ये बदला (मागेपुढे &O)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "ग्रेस्केलमध्ये बदला (&G)" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "रंग उलट करा (&I)" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "पुसून टाका (&L)" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "अधिक परिणाम (&M)..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "प्रतिमा (&I)" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "निवड (&I)" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "मार्ग दर्शवा (&P)" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "फॉन्ट परिवार" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "फॉन्ट आकार" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "ठळक" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "तिरपे" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "अधोरेखित" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "काट मारलेले" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "आधीचा साधन पर्याय (समूह #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "पुढील साधन पर्याय (समूह #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "आधीचा साधन पर्याय (समूह #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "पुढील साधन पर्याय (समूह #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "अपारदर्शक चित्र काढा (&D)" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "रंगातील साम्यासह चित्र काढा..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "साधनपट्टी" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "जाळे दर्शवा (&G)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "लघुप्रतिमा दर्शवा (&H)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "झूम केलेली लघुप्रतिमा पद्धत (&M)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "लघुप्रतिमा चौकोन कार्यान्वित करा (&R)" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "झूम (&Z)" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "संपूर्ण प्रतिमा" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "कुंचला" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "निरनिराळ्या आकारांचे व मापाचे कुंचले वापरून चित्र काढा" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "टिंबे काढण्यासाठी कळ दाबा किंवा रेषा काढण्यासाठी माऊस खेचा." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "रंग खोडण्याचे साधन" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "पृष्ठभूमीवरील रंगाच्या अंकीय प्रतिमा पार्श्वभूमीवरील रंगाबरोबर बदला" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "पृष्ठभूमीवरील रंग काढून टाकण्यासाठी कळ दाबा अथवा माऊस खेचा." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "खोडण्याचे साधन" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "तुमच्या चुका खोडून टाकतो" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "खोडण्यासाठी कळ दाबा वा माऊस खेचा" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "माऊसकडील सर्व बटणे मुक्तपणे वापरा." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "पेन" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "बिंदू व मुक्त हस्ताने फटकारे काढा" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "फवारणीचे साधन" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "ग्राफिटीवर फवारतो" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "ग्राफिटीवर फवारण्यासाठी कळ दाबा वा माऊस खेचा." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "रद्द करण्यासाठी उजवीकडील कळ दाबा." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "रद्द करण्यासाठी डावीकडील कळ दाबा." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "प्रतिमेमधून रंग तुम्हालाच निवडू देतो" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "रंग निवडण्यासाठी कळ दाबा." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "प्रतिमेतील भाग भरतो" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "भाग भरण्यासाठी कळ दाबा." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "झूम" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "प्रतिमेत आत व बाहेर करण्यासाठी झूम करतो" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"प्रतिमेच्या आत/बाहेर (लहान/मोठे) करण्यासाठी कळ दाबा अथवा विशिष्ट भागात झूम " +"काटण्यासाठी माऊस डावीकडे ओढा/सरकवा" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "वळण" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "वळणे काढा" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "सुरवात व शेवट हे बिंदू खेचा." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"पहिला नियंत्रण बिंदू स्थिर करण्यासाठी माऊस डावीकडे सरकवा अथवा पूर्ण करण्यासाठी उजवी कळ " +"दाबा" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"पहिला नियंत्रण बिंदू स्थिर करण्यासाठी माऊस उजवीकडे सरकवा अथवा पूर्ण करण्यासाठी डावी कळ " +"दाबा" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"शेवटचा नियंत्रण बिंदू स्थिर करण्यासाठी माऊस डावीकडे सरकवा अथवा पूर्ण करण्यासाठी उजवी कळ " +"दाबा" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"शेवटचा नियंत्रण बिंदू स्थिर करण्यासाठी माऊस उजवीकडे सरकवा अथवा पूर्ण करण्यासाठी डावी कळ " +"दाबा" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "रेषा" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "रेषा काढा" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "चित्र काढण्यासाठी माऊस खेचा." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "बहुभुजाकृती" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "बहुभुजाकृत्या काढा" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "पहिली ओळ काढण्यासाठी माऊस खेचा." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "माऊस डावीकडे सरकवून दुसरी ओळ काढा अथवा पूर्ण करण्यासाठी उजवी कळ दाबा." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "दुसरी ओळ काढण्यासाठी माऊस उजवीकडे सरकवा अथवा पूर्ण करण्यासाठी डावी काळ दाबा" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "एकमेकींशी जोडलेल्या रेषा" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "एकमेकींशी जोडलेल्या रेषा काढतो" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "लंबवर्तुळ" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "लंबवर्तुळे व वर्तुळे काढतो" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "चौकोन" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "चौकोन व चौरस काढतो" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "गोलाकार कोपरे असलेला चौकोन" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "गोलाकार कोपरे असलेले चौकोन व चौरस काढतो" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "निवड करण्यासाठी माऊस डावीकडे सरकवा." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "निवड हलविण्यासाठी माऊस डावीकडे सरकवा." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "निवड लहान/मोठी करण्यासाठी माऊस डावीकडे सरकवा." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "निवड : अपारदर्शक" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "निवड : पारदर्शक" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "निवड : पारदर्शक रंग" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "निवड : पारदर्शक रंगांचे साम्य" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "निवड (लंबवर्तुळाकार)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "लंबवर्तुळाकार अथवा वर्तुळाकार निवड करतो" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "निवड (कोणत्याही आकारातील)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "कोणत्याही आकारातील निवड करतो" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "निवड (आयताकृती)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "आयताकृती निवड करतो" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "निवड : हालचाल" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1 : डाग" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "मजकूर लिहितो" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "मजकूर : मागे सरकविणे" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "मजकूर : काढून टाकणे" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "मजकूर : नवी ओळ" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "मजकूर : लिहिणे" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "मजकुराला जागा करण्यासाठी माऊस डावीकडे सरकवा." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "मजकुराची जागा हलविण्यासाठी माऊस डावीकडे सरकवा." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "मजकूर : जागा हलवा" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "मजकुराच्या पेटीला नवा आकार देण्यासाठी माऊस डावीकडे सरकवा." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "कर्सरची जागा बदलण्यासाठी डावी कळ दाबा" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "मजकूर : अपारदर्शक पार्श्वभूमी" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "मजकूर : पारदर्शक पार्श्वभूमी" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "मजकूर : रंगांची अदलाबदल" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "मजकूर : पृष्ठभूमीचा रंग" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "मजकूर : पार्श्वभूमीचा रंग" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "मजकूर : फॉन्ट" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "मजकूर : फॉन्ट आकार" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "मजकूर : ठळक" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "मजकूर : तिरपा" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "मजकूर : अधोरेखित" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "मजकूर : काट मारलेला" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "झूम न करण्याची पद्धत : लघुप्रतिमा" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% – लघुप्रतिमा" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

              Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

              If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

              This feature applies " +"to:

              • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
              • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
              • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
              • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

              Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

              However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

              To configure it, click on the cube.

              " +msgstr "" +"

              रंगातील साम्य निरनिराळ्या अंकीय बिंदूंचे रंग जरी वेगवेगळे असले तरी, " +"अनुप्रयोगांसाठी ते सारखेच समजावेत.

              जर तुम्ही तंतोतंत सारखेपणापेक्षा अन्य छात " +"निवडल्या तर तुम्ही थरथरणाऱ्या प्रतिमा व फोटोवर \"Magic Wand\" या रंगविण्याच्या अन्य " +"कार्यपद्धतीपेक्षा तुलनात्मकदृष्ट्या अधिक चांगल्या रीतीने काम करू शकाल.

              ही " +"प्रक्रिया :

              • Selections: येथे लागू पडते. Transparent " +"पद्धती, निवडलेला कोणताही रंग पार्श्वभूमीवरील रंगाशी साम्य दाखवणारा असेल तर तो " +"पारदर्शक होतो.
              • Flood Fill: विभागात पार्शभूमीवरील रंगांशी साम्य असलेले पण एकमेकांशी सारखेपणा नसलेले -अंकीय बिंदू असतील, तर वरच्या स्तराची मांडणी करून " +"जास्त अंकीय बिंदू भारत येतील.
              • Color Eraser:कोणत्याही अंकीय बिंदूचा " +"रंगाचे पृष्ठभूमीवरील रंगाशी साम्य असेल तर त्याचा जागी पार्श्वभूमीवरील रंग टाकता " +"येतो.
              • Autocrop aani Remove Internal Border:ज्या " +"seemaसीमाreshanche रेषांचे रंगीत अंकीय बिंदू साम्य असलेले पण तंतोतंत सारखे नसणारे " +"असतील तर वरच्या स्तराची मांडणी करून सर्व सीमारेषा कमी करता येऊ शकते.
              • वरच्य स्तराची मांडणी म्हणजे पुरेसे साम्य असलेल्या ररंगछटा तसेच दिसण्यासाठी " +"वाढविणे. त्यामुळे वर नमूद केलेल्या अनुप्रयोग/प्रक्रियांमुळे तुम्हाला ज्यांचे रंग पुरेसे एकसारखे आहेत " +"असे वाटते अशा अंकीय बिंदूंवर परिणाम होत नसेल तर तुम्हाला मांडणीचा स्तर वाढवा लागेल.

                परंतु ह्या प्रक्रीया जास्त परिणाम करत असतील व ज्यांचे रंग तुमच्या मताप्रमाणे " +"एकसाराखे नाहीत असे अंकीय बिंदू बदलत असतील. (उदा. जर Flood Fill मोठ्या संख्येने " +"अंकीय बिंदू बदलत असेल), तर तुम्ही मांडणीचा हा स्तर कमी केला पाहिजे.

                याची रचना/" +"मांडणी करण्यासाठी घन चौकोनावर क्लिक करा.

                " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                " +msgstr "" +"

                रंगातील साम्य निरनिराळ्या अंकीय बिंदूंचे रंग जरी वेगवेगळे असले तरी, " +"अनुप्रयोगांसाठी ते सारखेच समजावेत.

                जर तुम्ही तंतोतंत सारखेपणापेक्षा अन्य छात " +"निवडल्या तर तुम्ही थरथरणाऱ्या प्रतिमा व फोटोवर \"Magic Wand\" या रंगविण्याच्या अन्य " +"कार्यपद्धतीपेक्षा तुलनात्मकदृष्ट्या अधिक चांगल्या रीतीने काम करू शकाल.

                ही प्रक्रिया : " +"

                • Selections:yethe येथे लागू पडते. Transparent पद्धती, " +"निवडलेला कोणताही रंग पार्श्वभूमीवरील रंगाशी साम्य दाखवणारा असेल तर टो पारदर्शक " +"होतो.
                • Flood Fill: विभागात पार्शभूमीवरील रंगांशी साम्य " +"असलेले पण एकमेकांशी सारखेपणानसलेले -अंकीय बिंदू असतील, तर वरच्या स्तराची मांडणी करून जास्त " +"अंकीय बिंदू भारत येतील.
                • Color Eraser:कोणत्याही अंकीय बिंदूचा रंगाचे " +"पृष्ठभूमीवरील रंगाशी साम्य असेल तर त्याचा जागी पार्श्वभूमीवरील रंग टाकता येतो.
                • Autocrop aani Remove Internal Border:सीमा रेषांचे रंगीत " +"अंकीय बिंदू साम्य असलेले पण तंतोतंत सारखे नसणारे असतील तर वरच्या स्तराची मांडणी " +"करून सर्व सीमारेषा कमी करता येऊ शकते.

                वरच्य स्तराची मांडणी म्हणजे पुरेसे " +"साम्य असलेल्या ररंगछटा तसेच दिसण्यासाठी वाढविणे. त्यामुळे वर नमूद केलेल्या अनुप्रयोग/" +"प्रक्रियांमुळे तुम्हाला ज्यांचे रंग पुरेसे एकसारखे आहेत असे वाटते अशा अंकीय बिंदूंवर परिणाम होत " +"नसेल तर तुम्हाला मांडणीचा स्तर वाढवा लागेल.

                परंतु ह्या प्रक्रीया जास्त परिणाम " +"करत असतील व ज्यांचे रंग तुमच्या मताप्रमाणे एकसारखे नाहीत असे अंकीय बिंदू बदलत असतील.(उदा. " +"जर Flood Fill मोठ्या संख्येने अंकीय बिंदू बदलत असेल), तर तुम्ही मांडणीचा हा स्तर " +"कमी केला पाहिजे.

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                Color Similarity: %1%

                Click to configure.

                " +msgstr "" +"

                रंगांमधील सारखेपणा : %1%

                रचना/मांडणी करण्यासाठी क्लिक " +"करा.

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                Color Similarity: Exact Match

                Click to configure." +msgstr "" +"

                रंगांतील सारखेपणा : तंतोतंत जुळणारा/योग्य

                रचना/मांडणीसाठी " +"क्लिक करा.

                " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "प्रखरता (&B):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "पुन्हस्थापित करा (&S)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "विरोधाभास (&N):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "गॅमा (&G):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "पुन्हस्थापित करा (&T)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "माध्यमे (&H):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "सर्व" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "लाल" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "हिरवा" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "निळा" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "सर्व मुल्ये पुन्हस्थापित करा (&A)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "संयोजना" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "संख्या (&A):" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "कार्यान्वित करा (&N)" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "रंग" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "रंगछटा (&H):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "गडदपणा (&S):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "मूल्य (&V):" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "लाल (&R)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "हिरवा (&G)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "निळा (&B)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "सर्व (&A)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "माध्यमे" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "एकाच रंगात रंगविलेले (&M)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "एकाच रंगात रंगविलेले (मागेपुढे &N)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "२५६ रंग (&L)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "२५६ रंग (मागेपुढे &R)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "२४-बिट रंग (&B)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "मध्ये कमी करा" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "दाणेदारपणा (&G):" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                To change the color of a color cell itself, double-click on it.

                You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                " +msgstr "" +"

                साधनांच्या सहाय्याने प्रतिमा काढण्यासाठी पृष्ठभागावरील रंग निवडा, रंगछटानी " +"भरलेल्या कप्प्यावर डाव्या बाजूची कळ दाबा.पार्श्वभूमीवरील रंग निवडण्यासाठी उजव्या बाजूची " +"कळ दाबा.

                रंगच्या कप्प्याचा रंग बदलायचा असल्यास त्यावरच दोनदा क्लिक करा.

                तसेच तुम्ही भरलेल्या रंगकप्प्यातील रंग अन्य कप्प्यातील रंगाबरोबर बदलू शकता. यासाठी " +"तेथून काढा व इकडे टाका ही पद्धतवापरावी लागेल. शिवाय ctrl ही कळ दाबून धरल्याने " +"पहिल्या कप्प्यातील रंग दुसऱ्या कप्प्यातील रंगाच्या जागी अदलाबदल न जाईल.

                " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "यात रुपांतर करा (&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "गुणवत्ता (&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "पूर्वावलोकन (&P)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "एकाच रंगात रंगविलेले" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "एकाच रंगात रंगविलेले (मागेपुढे)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "२५६ रंग" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "२५६ रंग (मागेपुढे)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "२४–बिट रंग" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "प्रतिमेचे स्थान (&M)" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "पानाचा मध्य (&C)" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "पानाची वरील भागाची डावी बाजू (&L)" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "पारदर्शक" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "कलरपेंट मूलभूत" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "रंग : %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "रंग : %1 (सुधारित)" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "वर्तुळ" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "चौरस" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "एकदम कमी करा" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "आकस्मिकरित्या एकदम कमी करा" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "भरू नका" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "पार्श्वभूमीचा रंग भरा" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "पृष्ठभूमीचा रंग भरा" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "अपारदर्शक" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" या नावाचा दस्तऐवज आधीपासूनच अस्तित्वात आहे.\n" +#~ "तुम्ही तो खोडून पुन्हा लिहू इच्छिता का?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" या नावाचे रंग पटल आधीच अस्तित्वात आहे \n" +#~ "तुम्ही हा मजकूर खोडून त्यावर लिहू इच्छिता का?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "१००% च्या पटीत नसलेल्या मूल्यावर झूमची लेव्हल स्थिर करण्याने संपादन तंतोतंत होत नाहीव " +#~ "तात्पुरत्या स्वरूपातील अडचणी (Malfunctioning) निर्माण होऊ शकतात.\n" +#~ "तुम्हाला खरोखरीच झूम लेव्हल %1% इथे स्थिर करायची आहे का?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "झूम पातळी %1% इथे स्थिर करा" + +#~ msgid "None" +#~ msgstr "काही नाही" + +#~ msgid "" +#~ "

                Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                Are you sure want to resize the image?

                " +#~ msgstr "" +#~ "

                प्रतिमा %1x%2मध्ये बदलण्यासाठी माहितीसाठ्याची मोठ्या प्रमाणात आवश्यकता असते." +#~ "यामुळे प्रणालीचा प्रतिसाद कमी होऊ शकतो व अन्य आज्ञावलींना संसाधनांची अडचण निर्माण " +#~ "होऊ शकते.

                तुम्हाला प्रतिमेचा आकार बदलण्याविषयी खात्री आहे?

                " + +#~ msgid "Overwrite" +#~ msgstr "खोडून पुन्हा लिहा" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "उघडणे शक्य झाले नाही \"%1\" – माहित नसलेला माइम प्रकार" + +#~ msgid "Save Preview" +#~ msgstr "पूर्वावलोकन साठवा" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "सहाय्यासाठी वेबसाइटला भेट द्या." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "स्कॅनर डायलॉग देऊ शकणारा कोणताही प्लगइन मिळाला नाही. \n" +#~ "याचा सर्वसाधारण अर्थ असा की ksaneplugin चा संच पुरविणारी नवी संगणक व्यवस्था " +#~ "बसविलेली नाही." + +#~ msgid "No Scanning Support" +#~ msgstr "स्कॅनिंग समर्थीत नाही" diff --git a/po/nb/kolourpaint.po b/po/nb/kolourpaint.po new file mode 100644 index 0000000..2cb53a3 --- /dev/null +++ b/po/nb/kolourpaint.po @@ -0,0 +1,2704 @@ +# Translation of kolourpaint to Norwegian Bokmål +# +# Bjørn Steensrud , 2008, 2009, 2011, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2012-09-03 14:23+0200\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.4\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Bjørn Steensrud" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "bjornst@skogkatt.homelinux.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balanse" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Gjør mykere" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Gjør skarpere" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Tøm" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Utvalg: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Preg" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Flat ut" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduser til gråskala" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Tone, metning, verdi" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Snu om farger" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Snu om" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduser til monokrom (utjevnet)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduser til monokrom" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduser til 256 farger (utjevnet)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduser til 256 farger" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogramutjevner" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Speilvend" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Speilvend vannrett og loddrett" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Speilvend vannrett" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Speilvend loddrett" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Tekst: Gi boks ny størrelse" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Utvalg: Skaler" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Utvalg: Jevn skalering" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Endre størrelse" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skaler" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Jevn-skaler" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Roter" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Skjeve" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Angre: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Angre" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Gjør om: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Gjør om" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Gjør om: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Gjør om" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Gjør om: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Gjør om" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 element til" +msgstr[1] "%1 elementer til" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Fargeplukker" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Flom-fyll" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Flere bildeeffekter (utvalg)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Flere bildeeffekter" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reduser farger" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Gjør myk / skarp" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumentegenskaper" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Punkter pr. tomme (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Ikke oppgitt" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Vannrett:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Loddrett:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Punkter pr. tomme(DPI) oppgir hvor mange piksler av bildet som " +"skal skrives på én tomme (2,54 cm).

                Jo høyere bildets DPI er, jo " +"mindre er bildet på utskrifta. Merk at skriveren antakelig ikke kan levere " +"høykvalitetsutskrift hvis du øker dette til mer enn 300 eller 600 DPI, " +"avhengig av skriveren.

                Hvis du vil skrive ut et bilde slik at det er " +"like stort som det vises på skjermen, så sett bildets DPI-verdi lik " +"skjermens DPI.

                Hvis noen av DPI-verdiene er Ikke angitt, så " +"blir bildet også skrevet ut i samme størrelse som på skjermen.

                Ikke " +"alle bildeformater støtter DPI-verdier. Verdiene oppgitt her blir ikke " +"lagret hvis bildeformatet ikke støtter det.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Forskyvning" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                The Offset is the relative position where this image should be " +"placed, compared to other images.

                Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                " +msgstr "" +"

                Forskyvning er den relative plasseringa av dette bildet i " +"forhold til andre bilder.

                Ikke alle bildeformater støtter " +"forskyvning. Verdiene oppgitt her bli ikke lagret hvis bildeformatet " +"ikke støtter det.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Tekstfelter" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Legg til rad" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Slett ra&d" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Tilbakestill" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Tekstfelter inneholder ekstra informasjon om bildet. Dette er " +"antakelig et kommentarfelt der du fritt kan skrive inn tekst.

                Imidlertid er dette format-spesifikt, så det kan hende at det er " +"opplysninger som datamaskinen bruker og ikke bør endres – men dette er " +"usannsynlig.

                Ikke alle bildeformater støtter Tekstfelter. De " +"blir ikke lagret hvis formatet bildet lagres i ikke støtter dem.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Nøkkel" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Verdi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Tekstverdien «%1» på linje %2 krever en nøkkel." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Alle tekstnøkler må være entydige. Tekstnøkkelen «%1» på linjene %2 og %3 er " +"identiske." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Ugyldige tekstfelter" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensjoner" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Forhåndsvisning" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Oppdater" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Endre størrelse / skaler" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "A&rbeid på:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Hele bildet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Utvalget" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Tekstboks" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Handling" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                " +msgstr "" +"
                • Endre størrelse: Størrelsen på bildet blir økt ved at det " +"lages nye områder til høyre og/eller nederst (fylt med bakgrunnsfargen) " +"eller minsket ved å beskjære til høyre og/eller nederst.
                • Skaler: Bildet blir utvidet ved å duplisere piksler, eller klemt sammen ved å " +"slette piksler.
                • Skaler jevnt: Samme som Skaler men " +"nabopiksler går over i hverandre slik at bildet ser jevnere ut.
                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "End&re størrelse" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skaler" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Skaler &jevnt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Bredde:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Høyde:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Ny:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Prosent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Be&hold høyde/bredde-forhold" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to resize the text box?

                " +msgstr "" +"

                Det kan kreves en god del minne for å endre tekstboksens størrelse " +"til %1x%2. Dette kan gå ut over systemets svartid og gi ressursproblemer for " +"andre programmer.

                Er du sikker på at du vil endre størrelse på " +"tekstboksen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Endre størrelse på tekstboksen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "&gG tekstboksen ny størrelse" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to resize the image?

                " +msgstr "" +"

                Det kan kreves en god del minne for å endre bildestørrelsen til %1x" +"%2. Dette kan gå ut over systemets svartid og gi ressursproblemer for andre " +"programmer.

                Er du sikker på at du vil endre størrelsen på bildet?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Endre bildestørrelsen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&Endre størrelse på bildet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to scale the image?

                " +msgstr "" +"

                Det kan kreves en god del minne for å skalere bildet til %1x%2. " +"Dette kan gå ut over systemets svartid og gi ressursproblemer for andre " +"programmer.

                Er du sikker på at du vil skalere bildet?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Skalere bildet?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Skal&er bildet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to scale the selection?

                " +msgstr "" +"

                Det kan kreves en god del minne for å skalere utvalget til %1x%2. " +"Dette kan gå ut over systemets svartid og gi ressursproblemer for andre " +"programmer.

                Er du sikker på at du vil skalere utvalget?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Skalere utvalget?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Skal&er utvalget" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the image?" +msgstr "" +"

                Det kan kreves en god del minne for å skalere bildet jevnt til %1x" +"%2. Dette kan gå ut over systemets svartid og gi ressursproblemer for andre " +"programmer.

                Er du sikker på at du vil skalere bildet jevnt?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Jevnskalere bildet?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Jevskal&er bildet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the selection?" +"

                " +msgstr "" +"

                Det kan kreves en god del minne for å skalere utvalget jevnt til %1x" +"%2. Dette kan gå ut over systemets svartid og gi ressursproblemer for andre " +"programmer.

                Er du sikker på at du vil skalere utvalget jevnt?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Jevnskalere utvalget?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Jevnskal&er utvalget" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Roter utvalget" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Roter bildet" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Etter rotering:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Retning" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Mot urviseren" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "M&ed urviseren" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Vinkel" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &grader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&rader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 gr&ader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "T&ilpasset:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "grader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to rotate the selection?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Roter utvalget?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rot&er utvalget" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to rotate the image?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Roter bildet?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rot&er bildet" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Skjeve utvalg" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Skjeve bilde" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Etter skjeving:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Vannrett:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Loddrett:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to skew the selection?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Skjev utvalget?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "S&kjev utvalg" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to skew the image?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Skjeve bildet?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "S&kjev bildet" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Fargelikhet" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Avstand på &RGB-fargeterningen" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Nøyaktig treff" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Hva er fargelikhet?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Lagre forhåndsvisning" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (ca. %2%)" +msgstr[1] "%1 byte (ca. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Klarte ikke åpne «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Klarte ikke åpne «%1» ‒ mangler støtte for bildeformatet.\n" +"Fila kan være ødelagt." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Klarte ikke lagre bildet ‒ ikke tilstrekkelig informasjon." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mimetype: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Intern feil" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                The %1 format may not be able to preserve all of the image's " +"color information.

                Are you sure you want to save in this format?

                " +msgstr "" +"

                Formatet %1 kan kanskje ikke bevare all fargeinformasjon i " +"bildet.

                Er du sikker på at du vil lagre i dette formatet?

                " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "FIlformat med tap" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                Are " +"you sure you want to save at this color depth?

                " +msgstr "" +"

                Hvis bildet lagres med den lave fargedybden %1-bit kan " +"fargeinformasjon gå tapt. Eventuell gjennomsiktighet kan også bli borte. Er " +"du sikker på at du vil lagre med denne fargedybden?

                " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Lav fargedybde" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Klarte ikke lagre bildet ‒ klarte ikke opprette en midlertidig fil." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Klarte ikke lagre bilde ‒ opplasting mislyktes." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Fjern indre &kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Fjern indre kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Auto&beskjær" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Autobeskjær" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"Kolourpaint kan ikke ta bort utvalgets indre kant fordi den ikke kunne " +"finnes." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Kan ikke fjerne indre kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint kan ikke beskjære bildet automatisk fordi bildekanten ikke kan " +"finnes." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Kan ikke autobeskjære" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Sett som bilde" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Utvalg: Opprett" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Prosjektgrunnlegger" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Sjefsetterforsker" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Støtte for skanning, alfa, gjeldende vedlikeholder" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikoner" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Støtte for inndata-metode" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Bildeeffekter" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4-porting" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Takk til de mange andre som har hjulpet med å gjøre dette programmet mulig." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vis" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "B&ilde" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Farger" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Hovedverktøylinje" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Tekstverktøylinje" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Utvalgsverktøy RMB-meny" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Rediger" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Minibilde" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Dra håndtaket med venstre museknapp for å endre størrelse på bildet." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Endre bildestørrelse: slipp alle museknapper." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Endre bildestørrelse: Trykk høyre museknapp for å avbryte." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Klarte ikke åpne fargepalett «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Klarte ikke åpne fargepalett «%1» ‒ formatet er ikke støttet.\n" +"Fila kan være ødelagt." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Klarte ikke åpne KDE-fargepalett «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Klarte ikke å lagre fargepaletten som «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Uten tittel" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Bruk KolourPaints standarder" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Bruk KDEs" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Åpne …" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Las&t på nytt" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Lagre" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Lagre &som …" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Legg til rad" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Slett siste rad" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Fargeskrin" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Fargepaletten «%1» er endret.\n" +"Vil du lagre den?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE-fargepaletten «%1» er endret.\n" +"Vil du lagre den til en fil?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Standard fargepalett er endret.\n" +"Vil du lagre den til en fil?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Åpne fargepalett" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Fargepaletten «%1» er endret.\n" +"Om den lastes på nytt mistes alle endringer siden siste lagring.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Last &inn på nytt" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE-fargepaletten «%1» er endret.\n" +"Om den lastes på nytt mistes alle endringer.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Standard fargepalett er endret.\n" +"Om den lastes på nytt mistes alle endringer.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Lagre fargepalett som" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Lim inn i &nytt vindu" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Slett utvalg" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opier til fil …" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Lim inn &fra fil …" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Tekst: Lag boks" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Tekst: Lim inn" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint kan ikke lime inn innholdet i utklippstavla fordi formatet " +"er ukjent." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Kan ikke lime inn" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Tekst: Slett boks" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Utvalg: Slett" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Tekst: Avslutt" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Utvalg: Fjern merking" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopier til fil" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Lim inn fra fil" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&ksporter …" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skann …" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Henter skjermbilde" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Egenskaper" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Las&t på nytt" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Alle støttede filer (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Åpne bilde" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Bildeforsinkelse" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekund" +msgstr[1] " sekunder" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Ingen forsinkelse" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Skjul hovedvinduet" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumentegenskaper" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Lagre bilde som" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Eksporter" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokumentet «%1» er endret.\n" +"Om det lastes på nytt mistes alle endringer siden siste lagring.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokumentet «%1» er endret.\n" +"Om det lastes på nytt mistes alle endringer.\n" +"Er du sikker?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Skriv ut bilde" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Du må lagre bildet før det sendes.\n" +"Vil du lagre det?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokumentet «%1» er endret.\n" +"Vil du lagre det?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&Endre størrelse / skaler …" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Se&tt som bilde (beskjær)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Flipp (opp-ned)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Speilvend (vannrett)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Roter …" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Roter &venstre" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Roter &høyre" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "S&kjeve …" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reduser til mo&nokrom (utjevnet)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduser til &gråskala" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Snu om fargene" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Tø&m" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Flere effekter …" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "B&ilde" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "U&tvalg" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Vis &sti" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 – %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Skriftfamilie" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Skriftstørrelse" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Halvfet" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursiv" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Understrek" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Strek over" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Forrige verktøyvalg (Gruppe nr. 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Neste verktøyvalg (Gruppe nr. 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Forrige verktøyvalg (Gruppe nr. 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Neste verktøyvalg (Gruppe nr. 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Tegn tett" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Tegn med fargelikhet …" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Verktøykasse" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Vis &rutenett" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Vis &minbilde" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Forstørret minibilde-modus" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Slå på minibilde-&rektangel" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Forstørr/forminsk" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Det lyktes ikke å åpne den valgte skanneren!" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pensel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Tegn med pensler av forskjellig form og størrelse" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Trykk for å tegne prikker, og dra for å tegne streker." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Fargevisker" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Erstatter piksler i forgrunnsfarge med bakgrunnsfargen" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Trykk eller dra for å viske ut piksler med forgrunnsfargen." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Utvisker" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Brukes til å viske ut feil" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Trykk eller dra for å viske ut." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Slipp alle museknappene." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Penn" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Tegner prikker og frihåndsstreker" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Sprøyteboks" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Sprøyter graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Trykk eller dra for å sprøyte graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Trykk høyre museknapp for å avbryte." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Trykk venstre museknapp for å avbryte." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Brukes til å plukke en farge fra bildet" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Trykk for å velge en farge." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Fyller områder i bildet" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Trykk forå fylle et område." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Forstørr/forminsk" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Forstørrer/forminsker bildet" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Trykk for å forstørre/forminske, eller dra med venstre museknapp for å nærme " +"seg et bestemt område." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kurve" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Tegner kurver" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Dra ut start- og endepunktene." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Dra med venstre museknapp for å angi første styrepunkt, eller trykk høyre " +"for å avslutte." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Dra med høyre museknapp for å angi første styrepunkt, eller trykk venstre " +"for å avslutte." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Dra med venstre museknapp for å angi siste styrepunkt, eller trykk høyre for " +"å avslutte." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Dra med høyre museknapp for å angi siste styrepunkt, eller trykk venstre for " +"å avslutte." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linje" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Tegner linjer" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Tegn ved å dra." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polygon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Tegner polygoner" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Dra for å tegne den første linja." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Dra med venstre museknapp for å tegne en ny linje, eller trykk høyre for å " +"avslutte." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Dra en annen linje med høyre museknapp eller trykk venstre for å avslutte." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Sammenhengende linjer" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Tegner sammenhengende linjer" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Tegner ellipser og sirkler" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rektangel" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Tegner rektangler og kvadrater" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Avrundet rektangel" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Tegner rektangler og kvadrater med avrundede hjørner" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Hold og dra venstre museknapp for å opprette utvalg." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Hold og dra venstre museknapp for å flytte utvalget." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Hold og dra venstre museknapp for å skalere utvalget." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Utvalg: Tett" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Utvalg: Gjennomsiktig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Utvalg: Gjennomsiktig farge" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Utvalg: Gjennomsiktig fargelikhet" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Utvalg (elliptisk)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Lager et elliptisk eller sirkulært utvalg" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Utvalg (frihånd)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Lager et frihåndsutvalg" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Utvalg (rektangulært)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Lager et rektangulært utvalg" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Utvalg: Flytt" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Gni ut" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Skriver tekst" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Tekst: Rettetast" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Tekst: Slett" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Tekst: Ny linje" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Tekst: Skriv" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Hold venstre museknapp og dra for å lage en tekstboks." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Hold venstre museknapp og dra for å flytte tekstboksen." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Tekst: Flytt boks" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Hold venstre museknapp og dra for å endre størrelse på tekstboksen." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Trykk venstre museknapp for å endre makrørens plassering." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Tekst: Tett bakgrunn" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Tekst: Gjennomsiktig bakgrunn" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Tekst: Byrtt farger" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Tekst: Forgrunnsfarge" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Tekst: Bakgrunnsfarge" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Tekst: Skrift" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Tekst: Skriftstørrelse" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Tekst: Halvfet" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Teksst: Kursiv" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Teksst: Understrek" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Tekst: Stryk over" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Uendret størrelse ‒ minibilde" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% ‒ minibilde" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                To configure it, click on the cube.

                " +msgstr "" +"

                Fargelikhet er hvor like fargene i forskjellige piksler " +"må være for at handlinger skal betrakte dem som samme farge.

                Hvis det " +"settes til noe annet enn Nøyaktig lik, så kan du arbeide mer " +"effektivt med utjevnede bilder og fotografier, på liknende måte som " +"«tryllestaven» i andre maleprogrammer.

                Denne funksjonen brukes i:

                • Utvalg: når Gjennomsiktig er slått på, så vil farger " +"i utvalget som likner bakgrunnsfargen bli gjort gjennomsiktige.
                • Flom-fyll: I områder som har liknende men ikke identisk " +"fargede piksler vil en høyere innstilling sannsynligvis fylle flere piksler." +"
                • Fargevisker: Et piksel med farge som likner " +"forgrunnsfargen blir erstattet med bakgrunnsfargen.
                • Autobeskjær og Fjern indre kant: For kanter med liknende ‒ men ikke " +"identiske ‒ farger vil en høyere innstilling ha større sjanse til å klippe " +"hele kanten.

                Høyere innstilling betyr at handlingene vil " +"betrakte et større fargeområde som tilstrekkelig like til å bli " +"behandlet som samme farge. Derfor bør innstillinga økes hvis handlingene " +"over ikke påvirker piksler som du synes har like nok farger.

                Derimot " +"bør innstillinga settes mindre hvis handlingene påvirker piksler du synes er " +"for ulike (f.eks. hvis Flom-fyll endrer for mange piksler).

                Trykk på terningen for å sette opp dette.

                " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                " +msgstr "" +"

                Fargelikhet er hvor like fargene i forskjellige piksler " +"må være for at handlinger skal betrakte dem som samme farge.

                Hvis det " +"settes til noe annet enn Nøyaktig lik, så kan du arbeide mer " +"effektivt med utjevnede bilder og fotografier, på liknende måte som " +"«tryllestaven» i andre maleprogrammer.

                Denne funksjonen brukes i:

                • Utvalg: når Gjennomsiktig er slått på, så vil farger " +"i utvalget som likner bakgrunnsfargen bli gjort gjennomsiktige.
                • Flom-fyll: I områder som har liknende men ikke identisk " +"fargede piksler vil en høyere innstilling sannsynligvis fylle flere piksler." +"
                • Fargevisker: Et piksel med farge som likner " +"forgrunnsfargen blir erstattet med bakgrunnsfargen.
                • Autobeskjær og Fjern indre kant: For kanter med liknende ‒ men ikke " +"identiske ‒ farger vil en høyere innstilling ha større sjanse til å klippe " +"hele kanten.

                Høyere innstilling betyr at handlingene vil " +"betrakte et større fargeområde som tilstrekkelig like til å bli " +"behandlet som samme farge. Derfor bør innstillinga økes hvis handlingene " +"over ikke påvirker piksler som du synes har like nok farger.

                Derimot " +"bør innstillinga settes mindre hvis handlingene påvirker piksler du synes er " +"for ulike (f.eks. hvis Flom-fyll endrer for mange piksler).

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                Color Similarity: %1%

                Click to configure.

                " +msgstr "

                Fargelikhet: %1%

                Trykk for å sette opp.

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                Color Similarity: Exact Match

                Click to configure." +msgstr "" +"

                Fargelikhet: Nøyaktig lik

                Trykk for å sette opp." + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Lysstyrke:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Tilbakestill" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "&Kontrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Til&bakestill" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "K&analer:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Alle" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rød" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Grønn" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blå" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Nullstill &alle verdier" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Innstillinger" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Mengde:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Slå &på" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Farger" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tone:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Metning:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Verdi:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rød" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Grønn" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blå" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Alle" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanaler" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monokrom" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mono&krom (utjevnet)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 far&ger" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 fa&rger (utjevnet)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bit farge" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduser til" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Kornethet:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                To change the color of a color cell itself, double-click on it.

                You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                " +msgstr "" +"b>

                Trykk venstre museknapp på en celle med farge for å velge " +"forgrunnsfarge som verktøyene tegner med. Trykk høyre museknapp for å velge " +"bakgrunnsfarge i stedet.

                Dobbeltklikk på en celle for å endre fargen " +"på cellen.

                Fargen på en fylt celle kan byttes ut med en annen celle " +"med dra-og-slipp. Og hvis Ctrl-tasten holdes nede, overskrives " +"målcellens farge i stedet for å bytte farge med kildecellen.

                " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Konverter &til:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kvali&tet:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Forhåndsvisning" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monokrom" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monokrom (utjevnet)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 farger" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 farger (utjevnet)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bit farge" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "B&ildeposisjon" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Midt på siden" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Øverst til &venstre på siden" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Gjennomsiktig" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaints standardoppsett" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Farger: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Farger: %1 [endret]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Sirkel" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Skråstrek" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Omvendt skråstrek" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Ingen fylling" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Fyll med bakgrunnsfarge" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Fyll med forgrunnsfarge" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Tett" diff --git a/po/nds/kolourpaint.po b/po/nds/kolourpaint.po new file mode 100644 index 0000000..733a62b --- /dev/null +++ b/po/nds/kolourpaint.po @@ -0,0 +1,3039 @@ +# Translation of kolourpaint.po to Low Saxon +# translation of kolourpaint4.po to Low Saxon +# +# Manfred Wiese , 2006, 2007, 2008, 2010, 2011. +# Sönke Dibbern , 2006, 2007, 2008, 2009, 2014. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2014-02-21 15:59+0100\n" +"Last-Translator: Sönke Dibbern \n" +"Language-Team: Low Saxon \n" +"Language: nds\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Manfred Wiese, Sönke Dibbern" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "m.j.wiese@web.de, s_dibbern@web.de" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balangs" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Weekteken" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Scharpteken" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Leddig maken" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Köör: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Ingraven" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Glattmaken" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Na Griestöön minnern" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Toon, Sattheit, Weert" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Klören ümdreihen" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Ümdreihen" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Na Swattwitt minnern (punkteert)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Na Swattwitt minnern" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Na 256 Klören minnern (punkteert)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Na 256 Klören minnern" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogramm-Liekmaker" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Ümdreihen" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Kimmrecht un pielrecht ümdreihen" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Kimmrecht ümdreihen" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Pielrecht ümdreihen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Text: Feldgrött ännern" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Köör: Grött topassen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Köör: Grött week topassen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Grött ännern" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Topassen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Week topassen" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Dreihen" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Kippen" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Torüchnehmen: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Torüchnehmen" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Wedderhalen: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Wedderhalen" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Torüchnehmen: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Torüchnehmen" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Wedderhalen: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Wedderhalen" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "Noch %1 Objekt" +msgstr[1] "Noch %1 Objekten" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Klöörköör" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Rebeet infarven" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Mehr Bildeffekten (Köör)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Mehr Bildeffekten" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Weniger Klören" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Week- un Scharpteken" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokmentegenschappen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Pünkt &per Toll (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nich angeven" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Kimmrecht:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Pielrecht:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Pünkt per Toll (engl. dots per inch, DPI) gifft an, " +"woveel Bildpünkt binnen een Toll (2,54cm) druckt warrn schöölt.

                Mehr " +"Pünkt per Toll maakt dat Bild lütter. Beacht, dat Dien Drucker " +"wohrschienlich keen Biller mit en höger Gööd as 300 oder 600 DPI drucken " +"kann, man dat hangt vun den Drucker af.

                Wenn dat druckte Bild liek so " +"groot as op den Schirm wesen schall, denn muttst Du den DPI-Weert vun't Bild " +"op den Weert vun den Schirm instellen.

                Wenn een vun de DPI-Weerten " +"nich angeven is, warrt dat Bild ok mit de sülve Grött druckt as dat " +"op den Schirm wiest is.

                Nich all Bildformaten ünnerstütt DPI-Weerten. " +"Wenn dat Formaat, na dat Du sekerst, ehr nich ünnerstütt, warrt se ok nich " +"sekert.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "A&fstand" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                The Offset is the relative position where this image should be " +"placed, compared to other images.

                Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                " +msgstr "" +"

                De Afstandis de relativ Positschoon, na de dat Bild in'n " +"Vergliek mit anner Biller platzeert warrn schall.

                Nich all " +"Bildformaten ünnerstütt de Afstand-Funkschoon. Wenn dat Formaat, na " +"dat Du sekerst, ehr nich ünnerstütt, warrt warrt de hier angeven Weerten ok " +"nich sekert.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Textfeller" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Reeg &tofögen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Reeg &wegdoon" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Torüchsetten" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Textfeller stellt besünner Bildinformatschonen praat. Dit sünd " +"normalerwies Kommentarrebeden för Dien Textingaven.

                Dit is aver " +"formaategen, un de Feller köönt villicht ok Daten bargen, de de Reekner " +"verarbeiden schall, un de een denn beter nich ännert. Dat is aver nich " +"wohrschienlich.

                Nich all Bildformaten ünnerstütt Textfeller. " +"Wenn dat Formaat, na dat Du sekerst, ehr nich ünnerstütt, warrt se ok nich " +"sekert.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Slötel" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Weert" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "De textweert \"%1\" in Reeg %2 bruukt en Slötel." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"All Textslötels mööt eensoortet wesen. Textslötel \"%1\" in de Regen %2 un " +"%3 sünd liek." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Leeg Textfeller" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Afmeten" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Orginaal:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Vöransicht" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Opfrischen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Grött ännern / topassen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Utföhren för:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Heel Bild" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Köör" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Textfeld" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Akschoon" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                " +msgstr "" +"
                • Grött ännern: Schall dat Bild grötter warrn, warrt niege " +"Rebeden rechterhand un/oder nerrn anföögt (infarvt mit de " +"Achtergrundklöör), schall dat lütter warrn, warrt rechts un/oder nerrn " +"Rebeden afsneden.
                • Topassen: Dat Bild warrt dör't Verdubbeln " +"oder Wegmaken vun Pixels grötter oder lütter maakt.
                • Week " +"Topassen: Nau as Topassen, man de Naverpixels warrt een dat anner " +"topasst, so dat dat Bild weker utsüht.
                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Grött ännern" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Topassen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "&Week topassen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Breed:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Hööchde:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nieg:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Perzent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Bild&proportschoon wohren" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to resize the text box?

                " +msgstr "" +"

                Dat Ännern vun de Textfeldgrött na %1x%2 kann bannig veel Spieker " +"bruken. Dat kann dat Systeem langsamer maken un to Ressourcenproblemen bi " +"anner Programmen föhren.

                Wullt Du de Textfeldgrött redig ännern?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Textfeldgrött ännern?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Textfeldgrött ä&nnern" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to resize the image?

                " +msgstr "" +"

                Dat Ännern vun de Bildgrött na %1x%2 kann bannig veel Spieker bruken. " +"Dat kann dat Systeem langsamer maken un to Ressourcenproblemen bi anner " +"Programmen föhren.

                Wullt Du de Bildgrött redig ännern?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Bildgrött ännern?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Bildgrött ä&nnern" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to scale the image?

                " +msgstr "" +"

                Dat Topassen vun dat Bild na %1x%2 kann bannig veel Spieker bruken. " +"Dat kann dat Systeem langsamer maken un to Ressourcenproblemen bi anner " +"Programmen föhren.

                Wullt Du dat Bild redig topassen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Bild topassen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Bild &topassen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to scale the selection?

                " +msgstr "" +"

                Dat Topassen vun de Köör na %1x%2 kann bannig veel Spieker bruken. " +"Dat kann dat Systeem langsamer maken un to Ressourcenproblemen bi anner " +"Programmen föhren.

                Wullt Du de Köör redig topassen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Köör topassen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Köör &topassen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the image?" +msgstr "" +"

                Dat weke Topassen vun dat Bild na %1x%2 kann bannig veel Spieker " +"bruken. Dat kann dat Systeem langsamer maken un to Ressourcenproblemen bi " +"anner Programmen föhren.

                Wullt Du dat Bild redig week topassen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Bild week topassen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Bild week &topassen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the selection?" +"

                " +msgstr "" +"

                Dat weke Topassen vun de Köör na %1x%2 kann bannig veel Spieker " +"bruken. Dat kann dat Systeem langsamer maken un to Ressourcenproblemen bi " +"anner Programmen föhren.

                Wullt Du de Köör redig week topassen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Köör week topassen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Köör week &topassen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Köör dreihen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Bild dreihen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Na't Dreihen:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Richt" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Na &links dreihen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Na &rechts dreihen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Winkel" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &Graad" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 &Graad" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 G&raad" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Egen:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "Graad" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

                Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                Are you sure want to rotate the selection?

                " +msgid "" +"

                Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to rotate the selection?

                " +msgstr "" +"

                Dat Dreihen vun de Köör na %1x%2 kann bannig veel Spieker bruken. Dat " +"kann dat Systeem langsamer maken un to Ressourcenproblemen bi anner " +"Programmen föhren.

                Wullt Du de Köör redig dreihen?

                " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Köör dreihen?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Köör &dreihen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

                Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                Are you sure want to rotate the image?

                " +msgid "" +"

                Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to rotate the image?

                " +msgstr "" +"

                Dat Dreihen vun dat Bild na %1x%2 kann bannig veel Spieker bruken. " +"Dat kann dat Systeem langsamer maken un to Ressourcenproblemen bi anner " +"Programmen föhren.

                Wullt Du dat Bild redig dreihen?

                " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Bild dreihen?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Bild &dreihen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Köör kippen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Bild kippen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Na't Kippen:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Kimmrecht:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Pielrecht:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

                Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                Are you sure want to skew the selection?

                " +msgid "" +"

                Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to skew the selection?

                " +msgstr "" +"

                Dat Kippen vun de Köör na %1x%2 kann bannig veel Spieker bruken. Dat " +"kann dat Systeem langsamer maken un to Ressourcenproblemen bi anner " +"Programmen föhren.

                Wullt Du de Köör redig kippen?

                " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Köör kippen?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Köör &kippen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

                Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                Are you sure want to skew the image?

                " +msgid "" +"

                Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to skew the image?

                " +msgstr "" +"

                Dat Kippen vun dat Bild na %1x%2 kann bannig veel Spieker bruken. Dat " +"kann dat Systeem langsamer maken un to Ressourcenproblemen bi anner " +"Programmen föhren.

                Wullt Du dat Bild redig kippen?

                " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Bild kippen?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Bild &kippen" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Klörenliekheit" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Afstand binnen &RGB-Klörenwörpel" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Nau Övereenstimmen" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Wat is Klörenliekheit?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Vöransicht sekern" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 Bytes (so wat %2%)" +msgstr[1] "%1 Bytes (so wat %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "\"%1\" lett sik nich opmaken." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" lett sik nich opmaken. - Nich ünnerstütt Bildformaat.\n" +"Villicht is de Datei schaadhaftig." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Bild lett sik nich sekern - nich noog Informatschonen." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Adress: %1\n" +"MIME-Typ: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Intern Fehler" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                The %1 format may not be able to preserve all of the image's " +"color information.

                Are you sure you want to save in this format?

                " +msgstr "" +"

                Dat Formaat %1 kann villicht nich all Klöreninformatschonen " +"vun dat Bild wohren.

                Wullt Du redig na dit Formaat sekern?

                " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Dateiformaat mit Verlusten" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                Are " +"you sure you want to save at this color depth?

                " +msgstr "" +"

                Wenn Du dat Bild mit de siete Klörendeepde vun %1 Bits sekerst, gaht " +"villicht de Klöreninformatschonen verloren, un jichtenseen Transparenz warrt " +"ok wegmaakt.

                Büst Du seker, dat Du dat Bild mit disse Klörendeepde " +"sekern wullt?

                " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Siet Schirm-Klörendeepde" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Bild lett sik nich sekern - Temporeerdatei lett sik nich opstellen." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Bild lett sik nich as \"%1\" sekern." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Bild lett sik nich sekern - Hoochladen fehlslaan." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Intern &Rand wegmaken" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Intern Rand wegmaken" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Automaatsch &tosnieden" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automaatsch tosnieden" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint kann den internen Rand vun de Köör nich wegmaken, wiel he sik " +"nich finnen lett." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Intern Rand lett sik nich wegmaken" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint kann dat Bild nich automaatsch tosnieden, wiel sik de Rand nich " +"finnen lett." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Automaatsch Tosnieden nich mööglich" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "As Bild fastleggen" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Köör: Opstellen" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "Tekenprogramm för KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projekt-Vader" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Hööftopsicht" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Inlees- un Alphakanaal-Ünnerstütten, Pleger opstunns" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Lüttbiller" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Ingaavmetood-Ünnerstütten" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Bildeffekten" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Na KDE 4 porteert" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "Na KDE 4 porteert" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Dank ok an all anner Lüüd, de dit Programm mööglich maakt hebbt." + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "Datei, de opmaakt warrn schall" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Ansicht" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Bild" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Klören" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Hööft-Warktüüchbalken" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Text-Warktüüchbalken" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Utsöökwarktüüch-Rechtsklickmenü" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Bewerken" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Vöransichtbild" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Treck an den Greep, wenn Du de Bildgrött ännern wullt." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Bildgrött ännern: All Muusknööp looslaten." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Bildgrött ännern: Klick rechts, wenn Du afbreken wullt." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Klörensett \"%1\" lett sik nich opmaken." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Klörensett \"%1\" lett sik nich opmaken. - Nich ünnerstütt Formaat.\n" +"Villicht is de Datei schaadhaftig." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "KDE-Klörensett \"%1\" lett sik nich opmaken." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Klörensett lett sik nich as \"%1\" sekern." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Ahn Naam" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "KolourPaint-Vörinstellen bruken" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE-Klören" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Opmaken..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "&Nieg laden" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Sekern" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Sekern &as..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Reeg tofögen" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Lest Reeg wegdoon" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Klörenkasten" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"De Klörensett \"%1\" wöör ännert.\n" +"Wullt Du em na en Datei sekern?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"De KDE-Klörensett \"%1\" wöör ännert.\n" +"Wullt Du em na en Datei sekern?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"De Standard-Klörensett wöör ännert.\n" +"Wullt Du em na en Datei sekern?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Klörensett opmaken" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"De Klörensett \"%1\" wöör ännert.\n" +"Niegladen warrt all Ännern siet dat leste Sekern wegdoon.\n" +"Büst Du seker?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Nieg laden" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"De KDE-Klörensett \"%1\" wöör ännert.\n" +"Niegladen warrt all Ännern wegdoon.\n" +"Büst Du seker?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"De Standard-Klörensett wöör ännert.\n" +"Niegladen warrt all Ännern wegdoon.\n" +"Büst Du seker?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Klörensett sekern as" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Na &nieg Finster infögen" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Köör &wegdoon" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "Na Datei k&operen..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Ut &Datei infögen..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: Feld opstellen" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: Infögen" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"De Inholt ut de Twischenaflaag lett sik nich infögen. Dat Formaat is " +"nich begäng." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Infögen nich mööglich" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: Feld wegdoon" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Köör: Wegdoon" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: Fardig maken" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Köör: Köör opheven" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Na Datei koperen" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Ut Datei infögen" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Exporteren..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Inleser..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Schirmfoto rankriegen" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Egenschappen" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&Nieg laden" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Bild opmaken" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Snappschööt-Töövtiet" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " Sekunn" +msgstr[1] " Sekunnen" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Keen Töövtiet" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Hööftfinster versteken" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokmentegenschappen" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Bild sekern as" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exporteren" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dat Dokment \"%1\" wöör ännert.\n" +"Niegladen warrt all Ännern siet dat leste Sekern wegdoon.\n" +"Büst Du seker?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dat Dokment \"%1\" wöör ännert.\n" +"Niegladen warrt all Ännern wegdoon.\n" +"Büst Du seker?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Bild drucken" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Du muttst dat Bild sekern, ehr Du dat sennst.\n" +"Wullt Du dat nu sekern?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dat Dokment \"%1\" wöör ännert.\n" +"Wullt Du dat sekern?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&Grött ännern / topassen..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "As Bild fas&tleggen (afsnieden)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Ü&mdreihen (överkopp)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Spegeln (kimmrecht)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Dreihen..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Na &links dreihen" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Na &rechts dreihen" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Kippen..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Na &Swattwitt minnern (punkteert)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Na &Griestöön minnern" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "Klören ü&mdreihen" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Wegdoon" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Mehr Effekten..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Bild" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "&Köör" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&Padd wiesen" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Schriftoorden-Familie" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Schriftgrött" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Fett" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursiev" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Ünnerstreken" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Dörstreken" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Verleden Warktüüchoptschoon (Koppel Nr.1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Nakamen Warktüüchoptschoon (Koppel Nr.1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Verleden Warktüüchoptschoon (Koppel Nr.2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Nakamen Warktüüchoptschoon (Koppel Nr.2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Decken &teken" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Mit Klörenliekheit teken..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Warktüüchkist" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "&Gadder wiesen" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "&Vöransicht wiesen" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Grötter maakte Vöransichten" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Vöransicht-&Rahmen anmaken" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "Ansicht&grött" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Heel Bild" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pinsel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Mit verscheden Pinselformen un -grötten teken" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" +"Klick, wenn Du Pünkt teken wullt, oder treck, wenn Du Streken teken wullt." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Klörenradeergummi" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Wesselt Pixels vun de Vörgrundklöör mit de Achtergrundklöör ut" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Klick oder treck, wenn Du Vörgrundklöör-Pixels wegmaken wullt." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Radeergummi" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Dor laat sik Fehlers mit wegraderen" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Klick oder treck, wenn Du wat utraderen wullt." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "All Muusknööp looslaten." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Stift" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Pünkt un freehannig Streken teken" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Spröhdoos" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Spröht de Farv" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Klick oder treck, wenn Du de Farv spröhen wullt." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Klick rechts, wenn Du afbreken wullt." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Klick links, wenn Du afbreken wullt." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Hier lett sik en Klöör ut dat Bild utsöken" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Klick hier, wenn Du en Klöör utsöken wullt." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Bildrebeden infarven" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Klick, wenn Du en Rebeet infarven wullt." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Ansichtgrött" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Maakt de Bildansicht grötter oder lütter" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Klick, wenn Du en Ansicht grötter/lütter maken wullt, oder treck mit de " +"linke Muustast, wenn Du en besünner Rebeet grötter maken wullt." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Bagen" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Bagens teken" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Treck de Anfang- un Ennpünkt." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Treck mit de linke Muustast, wenn Du den eersten Kuntrullpunkt fastleggen " +"wullt, oder klick rechts, wenn Du ophören wullt." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Treck mit de rechte Muustast, wenn Du den eersten Kuntrullpunkt fastleggen " +"wullt, oder klick links, wenn Du ophören wullt." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Treck mit de linke Muustast, wenn Du den lesten Kuntrullpunkt fastleggen, " +"oder klick rechts, wenn Du ophören wullt." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Treck mit de rechte Muustast, wenn Du den lesten Kuntrullpunkt fastleggen " +"wullt, oder klick links, wenn Du ophören wullt." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Lien" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Lienen teken" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Treck, wenn Du teken wullt." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Veeleck" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Veelecken teken" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Treck, wenn Du de eerste Lien teken wullt." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Treck mit de linke Muustast en anner Lien, oder klick rechts, wenn Du " +"ophören wullt." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Treck mit de rechte Muustast en anner Lien, oder klick links, wenn Du " +"ophören wullt." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Verbunnen Lienen" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Verbunnen Lienen teken" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellips" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Ellipsen un Krinken teken" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rechteck" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Rechtecken un Quadraten teken" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Afrundt Rechteck" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Rechtecken un Quadraten mit afrundt Ecken teken" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Treck mit de linke Muustast, wenn Du en Köör opstellen wullt." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Treck mit de linke Muustast, wenn Du en Köör verschuven wullt." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Treck mit de linke Muustast, wenn Du de Köörgrött ännern wullt." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Köör: Decken" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Köör: Dörsichtig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Köör: Transparenzklöör" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Köör: Transparenzklöör-Liekheit" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Köör (elliptsch)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "En elliptsch oder rund Köör opstellen" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Köör (Freehannig)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "En freehannige Köör opstellen" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Köör (rechteckig)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Stellt en rechteckig Köör op" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Köör: Verschuven" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Versmeren" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Text schrieven" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: Torüchtast" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Text: Wegdoon" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Text: Nieg Reeg" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: Schrieven" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Treck mit de linke Muustast, wenn Du en Textfeld opstellen wullt." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Treck mit de linke Muustast, wenn Du en Textfeld verschuven wullt." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Text: Feld verschuven" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" +"Treck mit de linke Muustast, wenn Du de Grött vun't Textfeld ännern wullt." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Linksklick ännert den Blinker sien Positschoon." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Text: Decken Achtergrund" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: Dörsichtig Achtergrund" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Text: Klören tuschen" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Text: Vörgrundklöör" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Text: Achtergrundklöör" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Text: Schriftoort" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Text: Schriftgrött" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Text: Fett" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: Kursiev" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Text: Ünnerstreken" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Text: Dörstreken" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Normaalgrött-Bedrief - Vöransicht" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Vöransicht" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                To configure it, click on the cube.

                " +msgstr "" +"

                Klörenliekheit bedüüdt, wo liek de Klören vun " +"verscheden Pixels wesen mööt, dormit se för Akschonen as liek behannelt " +"warrt.

                Mit anner Instellen as Nau Övereenstimmen lett sik beter " +"mit punkteert Biller un Fotos arbeiden, so wat vergliekbor mit anner " +"Tekenprogrammen ehr \"Töverstaff\"-Funkschoon.

                Disse Funkschoon gellt " +"för:

                • Köör: In'n Dörschienen-Bedrief warrt elk " +"Klöör, de liek de Achtergrundklöör is, dörschienen maakt.
                • Vullmaken: Binnen Rebeden mit lieke - man nich sülve - " +"Pixelklören warrt mit höger Instellen wull mehr Pixels opfüllt.
                • Klörenradeergummi: Elk Pixel liek de Vörgrundklöör " +"warrt mit de Achtergrundklöör utwesselt.
                • Automaatsch tosnieden un Intern Rand wegmaken: För Ränners mit liek - man nich " +"sülve - Pixelklören bedüüdt dat, höger Instellen maakt wull den helen Rand " +"weg.

                Höger Instellen bedüüdt, dat Akschonen för mehr Klören " +"vermoodt, dat se liek un dormit dat dat sülve sünd. Dorüm kann een " +"de Instellen ok höger ansetten, wenn een meent, dat de Akschonen baven sik " +"nich op all liek noge Pixels utwarken doot.

                Wenn en Effekt sik aver op " +"to vele Pixels utwarkt, de nich liek (noog) sünd (wenn a.B. Vullmaken " +"to vele Pixels ännert), denn is dat wull beter, dat een de Instellen wat " +"torüchdreiht.

                Klick op den Wörpel, wenn Du dat instellen wullt.

                " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                " +msgstr "" +"

                Klörenliekheit bedüüdt, wo liek de Klören vun " +"verscheden Pixels wesen mööt, dormit se för Akschonen as liek behannelt " +"warrt.

                Mit anner Instellen as Nau Övereenstimmen lett sik beter " +"mit punkteert Biller un Fotos arbeiden, so wat vergliekbor mit anner " +"Tekenprogrammen ehr \"Töverstaff\"-Funkschoon.

                Disse Funkschoon gellt " +"för:

                • Köör: In'n Dörschienen-Bedrief warrt elk " +"Klöör, de liek de Achtergrundklöör is, dörschienen maakt.
                • Vullmaken: Binnen Rebeden mit lieke - man nich sülve - " +"Pixelklören warrt mit höger Instellen wull mehr Pixels opfüllt.
                • Klörenradeergummi: Elk Pixel liek de Vörgrundklöör " +"warrt mit de Achtergrundklöör utwesselt.
                • Automaatsch tosnieden un Intern Rand wegmaken: För Ränners mit liek - man nich " +"sülve - Pixelklören bedüüdt dat, höger Instellen maakt wull den helen Rand " +"weg.

                Höger Instellen bedüüdt, dat Akschonen för mehr Klören " +"vermoodt, dat se liek un dormit dat dat sülve sünd. Dorüm kann een " +"de Instellen ok höger ansetten, wenn een meent, dat de Akschonen baven sik " +"nich op all liek noge Pixels utwarken doot.

                Wenn en Effekt sik aver op " +"to vele Pixels utwarkt, de nich liek (noog) sünd (wenn a.B. Vullmaken " +"to vele Pixels ännert), denn is dat wull beter, dat een de Instellen wat " +"torüchdreiht.

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                Color Similarity: %1%

                Click to configure.

                " +msgstr "" +"

                Klörenliekheit: %1%

                För't Instellen klicken.

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                Color Similarity: Exact Match

                Click to configure." +msgstr "" +"

                Klörenliekheit:Nau Övereenstimmen

                För't Instellen " +"klicken.

                " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Helligkeit:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Torüchsetten" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "&Kontrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gammaweert:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&Torüchsetten" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanaals:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "All" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Root" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Gröön" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blaag" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "&All Weerten torüchsetten" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Instellen" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Mengde:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Anmaken" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Klören" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Toon:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Sattheit:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Weert:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Root" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Gröön" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blaag" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&All" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanaals" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Swattwitt" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "S&wattwitt (punkteert)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &Klören" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 K&lören (punkteert)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&Bit Klöör" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Minnern na" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Plackens:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                To change the color of a color cell itself, double-click on it.

                You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                " +msgstr "" +"

                De Vörgrundklöör, mit de de Warktüüch teken doot, lett sik mit en " +"Linksklick op en infarvt Klöörzell utsöken, de Achtergrundklöör mit en " +"Rechtsklick.

                En Klöörzell ehr Klöör lett sik mit en Dubbelklick " +"bewerken.

                En infarvt Zell ehr Klöör lett sik mit \"Trecken un Droppen" +"\" mit jichtenseen anner Zell tuschen. Mit daalhollen Strg-Tast warrt " +"de Teelzell ehr Klöör överschreven un nich mit de Bornzell ehr Klöör tuuscht." +"

                " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Ümwanneln &na:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Gööd:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Vöransicht" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Swattwitt" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Swattwitt (punkteert)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Klören" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Klören (punkteert)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-Bit Klöör" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "&Bildpositschoon" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "In de &Merrn vun de Siet" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Baven &links op de Siet" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Dörsichtig" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint-Vörinstellen" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Klören: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Klören: %1 [ännert]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Krink" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Quadraat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Dwarsstreek" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Torüchstreek" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Keen Infarven" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Mit Achtergrundklöör infarven" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Mit Vörgrundklöör infarven" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Decken" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Dat gifft al en Dokment mit den Naam \"%1\".\n" +#~ "Wullt Du dat överschrieven?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Dat gifft al en Klörensett mit den Naam \"%1\".\n" +#~ "Wullt Du dat överschrieven?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Bi en Ansichtgrött, de nich veelfach vun 100% is, kann dat to nich nau " +#~ "Bewerken un Dorstellfehlers kamen.\n" +#~ "Wullt Du de Ansichtgrött redig op %1% setten?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Ansichtgrött op %1% setten" + +#~ msgid "None" +#~ msgstr "Keen" + +#~ msgid "" +#~ "

                Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                Are you sure want to resize the image?

                " +#~ msgstr "" +#~ "

                Dat Ännern vun de Bildgrött na %1x%2 kann bannig veel Spieker " +#~ "bruken. Dat kann dat Systeem langsamer maken un to Ressourcenproblemen bi " +#~ "anner Programmen föhren.

                Wullt Du de Bildgrött redig ännern?

                " + +#~ msgid "Overwrite" +#~ msgstr "Överschrieven" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "\"%1\" lett sik nich opmaken. - Nich begäng MIME-Typ." + +#~ msgid "Save Preview" +#~ msgstr "Vöransicht sekern" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Ünnerstütten gifft dat op de Nettsiet." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Keen Moduul wöör funnen, dat den Bildinleser-Dialoog bargt.\n" +#~ "Dat bedüüdt normaal, dat Paket, wat dat KSane-Moduul praatstellt, is nich " +#~ "installeert." + +#~ msgid "No Scanning Support" +#~ msgstr "Keen Inlees-Ünnerstütten" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Inlees-Ünnerstütten is nich installeert." + +#~ msgid "" +#~ "

                KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

                This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

                " +#~ msgstr "" +#~ "

                KolourPaint kann de Twischenaflaag ehr Inholt nich infögen, de " +#~ "Daten sünd nich verwachtens weggahn.

                Dit kummt normalerwies vör, " +#~ "wenn dat Programm, dat de Twischenaflaag-Inholt tohöör, tomaakt wöör." + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "&Schirmfotos opnehmen" + +#~ msgid "" +#~ "

                To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

                You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

                Alternatively, you may try the application KSnapshot.

                " +#~ msgstr "" +#~ "

                Wenn Du en Schirmfoto opnehmen wullt, drück op %1. Dat " +#~ "Schirmfoto warrt na de Twischenaflaag daan, un Du kannst dat denn na " +#~ "KolourPaint infögen.

                Du kannst de Tastkombinatschoon för " +#~ "Schriefdischfoto opstellen in de KDE-Systeeminstellen binnen dat " +#~ "Moduul Tastkombinatschonen " +#~ "instellen.

                Du kannst ok dat Programm KSnapshot utproberen.

                " + +#~ msgid "" +#~ "

                You do not appear to be running KDE.

                Once you have loaded KDE:" +#~ "

                To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

                Alternatively, you may try the " +#~ "application KSnapshot.

                " +#~ msgstr "" +#~ "

                As dat lett löppt KDE nich.

                Sodraad Du dat laadt hest:" +#~ "

                Wenn Du en Schirmfoto opnehmen wullt, drück op %1. " +#~ "Dat Schirmbild warrt na de Twischenaflaag daan, un Du kannst dat denn na " +#~ "KolourPaint infögen.

                Du kannst ok dat Programm KSnapshot utproberen.

                " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "As Achtergrundbild fastleggen (in de &Merrn)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "As Achtergrundbild fastleggen (&kachelt)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Ehr Du dit Bild as Achtergrund bruken kannst, muttst Du dat as lokale " +#~ "Datei sekern.\n" +#~ "Wullt Du dat sekern?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Ehr Du dit Bild as Achtergrund bruken kannst, muttst Du dat sekern.\n" +#~ "Wullt Du dat sekern?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Achtergrundbild lett sik nich ännern." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Köör ümdreihen" + +#~ msgid "Flip Image" +#~ msgstr "Bild ümdreihen" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Pielrecht (överkopp)" + +#~ msgid "&Horizontal" +#~ msgstr "&Kimmrecht" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Verlust vun Klören- un Dörschienen-Informatschonen" + +#~ msgid "Loss of Color Information" +#~ msgstr "Verlust vun Klöreninformatschonen" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Verlust vun Dörschienen-Informatschonen" + +#~ msgid "" +#~ "

                KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

                To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

                " +#~ msgstr "" +#~ "

                KolourPaint ünnerstütt de aktuelle Schirm-Klöördeepde vun %1bpp " +#~ "nich. Kolourpaint maakt twaars nu en Startversöök, man löppt villicht " +#~ "nich deegt.

                Dit Problem lett sik dör Ännern vun de Schirm-" +#~ "Klöördeepde op 24bpp mit nakamen Niegstart vun Kolourpaint verhöden.

                " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Nich ünnerstütt Schirmbedrief" + +#~ msgid "" +#~ "

                This effect does not support the current screen depth of %1bpp.

                To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

                " +#~ msgstr "" +#~ "

                Disse Effekt ünnerstütt de aktuelle Schirm-Klöördeepde vun %1bpp " +#~ "nich.

                Dit Problem lett sik verhöden: De Schirm-Klöördeepde op 24bpp " +#~ "ännern un denn Kolourpaint nieg starten.

                " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Inlesen nich mööglich - keen Bildspieker mehr över." + +#~ msgid "Cannot Scan" +#~ msgstr "Inlesen nich mööglich" + +#~ msgid "&Flip..." +#~ msgstr "Ü&mdreihen..." + +#~ msgid "" +#~ "

                The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                If you save this image, any color loss will " +#~ "become permanent.

                To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


                It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

                If you save " +#~ "this image, this loss of translucency will become permanent.

                " +#~ msgstr "" +#~ "

                Dat Bild, dat Du infögen wullt, mag mehr Klören bargen as de " +#~ "opstunns instellte Schirm-Klöördeepde. För't Dorstellen mööt villicht en " +#~ "poor Klören wegdaan warrn.

                Wenn Du dit Bild sekerst, warrt de " +#~ "Klören duerhaftig wegkamen.

                Dit Problem lett sik dör Ännern vun " +#~ "de Schirm-Klöördeepde op tominnst %1 bpp mit nakamen Niegstart vun " +#~ "Kolourpaint verhöden.


                Dat Bild bargt ok dörschienen Klören, de " +#~ "nich heel ünnerstütt warrt. De Dörschiendaten warrt mit en 1-Bit-" +#~ "Transparenzmask so goot as mööglich namaakt..

                Wenn Du dit Bild " +#~ "sekerst, warrt de dörschienen Klören duerhaftig wegkamen.

                " + +#~ msgid "" +#~ "

                The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                If you save this image, any color loss will " +#~ "become permanent.

                To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

                " +#~ msgstr "" +#~ "

                Dat Bild, dat Du infögen wullt, mag mehr Klören bargen as de " +#~ "opstunns instellte Schirm-Klöördeepde. För't Dorstellen mööt villicht en " +#~ "poor Klören wegdaan warrn.

                Wenn Du dit Bild sekerst, warrt de " +#~ "Klören duerhaftig wegkamen.

                Dit Problem lett sik dör Ännern vun " +#~ "de Schirm-Klöördeepde op tominnst %1bpp mit nakamen Niegstart vun " +#~ "Kolourpaint verhöden.

                " + +#~ msgid "" +#~ "

                The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                If you save this image, this loss of " +#~ "translucency will become permanent.

                " +#~ msgstr "" +#~ "

                Dat Bild, dat Du infögen wullt, bargt dörschienen Klören, de nich " +#~ "heel ünnerstütt warrt. De Dörschiendaten warrt mit en 1-Bit-" +#~ "Transparenzmask so goot as mööglich namaakt.

                Wenn Du dit Bild " +#~ "sekerst, warrt de dörschienen Klören duerhaftig wegkamen.

                " + +#~ msgid "

                There is nothing in the clipboard to paste.

                " +#~ msgstr "

                De Twischenaflaag bargt keen infögbar Inholt.

                " + +#~ msgid "" +#~ "

                The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                If you save this image, any color loss will become " +#~ "permanent.

                To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


                It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

                If you save this " +#~ "image, this loss of translucency will become permanent.

                " +#~ msgstr "" +#~ "

                Dat Bild \"%1\" mag mehr Klören bargen as de opstunns instellte " +#~ "Schirm-Klöördeepde. För't Dorstellen mööt villicht en poor Klören wegdaan " +#~ "warrn.

                Wenn Du dit Bild sekerst, warrt de Klören duerhaftig " +#~ "wegkamen.

                Dit Problem lett sik dör Ännern vun de Schirm-" +#~ "Klöördeepde op tominnst %2bpp mit nakamen Niegstart vun Kolourpaint " +#~ "verhöden.


                Dat Bild bargt ok dörschienen Klören, de nich heel " +#~ "ünnerstütt warrt. De Dörschiendaten warrt mit en 1-Bit-Transparenzmask so " +#~ "goot as mööglich namaakt.

                Wenn Du dit Bild sekerst, warrt de " +#~ "Klören duerhaftig wegkamen..

                " + +#~ msgid "" +#~ "

                The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                If you save this image, any color loss will become " +#~ "permanent.

                To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

                " +#~ msgstr "" +#~ "

                Dat Bild \"%1\" mag mehr Klören bargen as de opstunns instellte " +#~ "Schirm-Klöördeepde. För't Dorstellen mööt villicht en poor Klören wegdaan " +#~ "warrn.

                Wenn Du dit Bild sekerst, warrt de Klören duerhaftig " +#~ "wegkamen.

                Dit Problem lett sik dör Ännern vun de Schirm-" +#~ "Klöördeepde op tominnst %2bpp mit nakamen Niegstart vun Kolourpaint " +#~ "verhöden.

                " + +#~ msgid "" +#~ "

                The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                If you save this image, this loss of " +#~ "translucency will become permanent.

                " +#~ msgstr "" +#~ "

                Dat Bild \"%1\" bargt dörschienen Klören, de nich heel ünnerstütt " +#~ "warrt. De Dörschiendaten warrt mit en 1-Bit-Transparenzmask so goot as " +#~ "mööglich namaakt.

                Wenn Du dit Bild sekerst, warrt de dörschienen " +#~ "Klören duerhaftig wegkamen.

                " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "\"%1\" lett sik nich opmaken - keen Bildspieker mehr över." + +#~ msgid "Scanning Support" +#~ msgstr "Inlees-Ünerstütten" + +#~ msgid "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" +#~ msgstr "DO NOT TRANSLATE, JUST LEAVE AS IS: toolToolBarHiddenMenu" diff --git a/po/nl/docs/kolourpaint/KolourPaint.png b/po/nl/docs/kolourpaint/KolourPaint.png new file mode 100644 index 0000000..63f309c Binary files /dev/null and b/po/nl/docs/kolourpaint/KolourPaint.png differ diff --git a/po/nl/docs/kolourpaint/index.docbook b/po/nl/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..7c2ba90 --- /dev/null +++ b/po/nl/docs/kolourpaint/index.docbook @@ -0,0 +1,1764 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +Het handboek van &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +&Freek.de.Kruijf;&Ruben.Van.Laerhoven; + + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2018-03-23 +Applications 18.04 + + +&kolourpaint; is een vrij en gemakkelijk te gebruiken grafisch programma door &kde;. + + + +kolourpaint +kdegraphics + + + + + +Inleiding +&kolourpaint; is een vrij en gemakkelijk te gebruiken grafisch programma door &kde;. Het is perfect voor alledaagse taken zoals: + + + +Tekenen - diagrammen tekenen en vingerverven + + +Schermafdrukken behandelen - verkrijg en bewerkt schermafdrukken + + +Afbeeldingen bewerken - foto's en verkregen afbeeldingen bewerken; effecten toepassen + + +Pictogrammen bewerken - clip-arts en logo's met transparantie tekenen + + + + + + + + + + + + + +&kolourpaint; gebruiken + +Klik op de volgende koppelingen om de mogelijkheden van &kolourpaint; te verkennen: + + + +Hulpmiddelen + + +Werken met kleur + + +Weergave-opties + + +Afbeeldingseffecten + + + + + +Hulpmiddelen + +Een extra optie in het menu Instellingen stelt u in staat te definiëren of de hulpmiddelen tekenen met anti-aliasing (standaard) of niet. + + +Schermafdrukken verkrijgen + +Een schermafdruk is een momentopname van wat er op uw computerscherm stond. Het kan nuttig zijn om sommige acties, die gedaan moeten worden, uit te leggen om het resultaat te verkrijgen of om het probleem te laten zien dat u hebt gevonden. +Om een schermafdruk gereed te maken voor bewerking in het venster van &kolourpaint; kunt u het menuitem Bestand Schermafdruk verkrijgen uit het hoofdmenu van &kolourpaint; gebruiken. + + + + + + + +Met de geopende dialoog kunt u Vertraging schermafdruk (in seconden) wijzigen en Hoofdvenster verbergen kiezen bij het maken van de schermafdruk. Als u klaar bent om de schermafdruk te maken, klikt u gewoon op de knop OK. De genomen schermafdruk zal direct in het bewerkingsgebied van &kolourpaint; worden geplaatst. + + + +Verwijzing naar hulpmiddelen + +Een snelle manier om een hulpmiddel te selecteren in &kolourpaint; is om de sneltoets (bestaat maar uit 1 teken) in te drukken die aan dat hulpmiddel gekoppeld is, zoals hieronder beschreven en zoals in de tooltips van het Hulpmiddelenvak. U kunt ook tegelijk &Alt; &Shift; en de juiste toets indrukken, wat bijvoorbeeld nodig is wanneer u tekst aan het schrijven bent (de reden hiervoor is dat bij het schrijven van tekst de sneltoetsen die bestaan uit 1 teken uitgeschakeld zullen zijn). Om bijvoorbeeld het penseel te selecteren, drukt u op &Alt;&Shift;B of gewoon B (wanneer u geen tekst aan het typen bent). + + + Penseel (B) + + Kleurwisser (O) + + Kleurenkiezer (C) + + Verbonden lijnen (N) + + Kromme (V) + + Ellips (E) + + Gum (A) + + Vloedvulling (F) + + Lijn (L) + + Pen (P) + + Veelhoek (G) + + Rechthoek (R) + + Afgeronde rechthoek (U) + + Selectie (ellipsvormig) (I) + + Selectie (vrije vorm) (M) + + Selectie (rechthoekig) (S) + + Spuitbus (Y) + + Tekst (T) + + + + + +Penseel <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Klik, of klik en sleep met het penseel om te tekenen. + + + + + + + + + + + + + + +Klik op een van de penseelmodellen om een model te kiezen. U kunt een cirkelvormige, vierkante, schuine streep voorover en schuine streep achterover gebruiken. + + + + + + +De &LMB; tekent in de voorgrondkleur. De &RMB; tekent in de achtergrondkleur. + + + +Kleurenkiezer <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik met de linker muisknop op een pixel om de voorgrondkleur in te stellen. Om de achtergrondkleur in te stellen klikt u met de rechter op een pixel. &kolourpaint; zal daarna terugkeren naar het vorige geselecteerde hulpmiddel. + + + + +Verbonden lijnen en veelhoek <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep om verbonden lijnen te tekenen. Het veelhoekhulpmiddel wordt op dezelfde manier gebruikt, maar de begin- en eindpunten worden automatisch verbonden om een veelhoek te vormen. + +De &LMB; tekent in de voorgrondkleur. De &RMB; tekent in de achtergrondkleur en keert ook de vulkleur om voor veelhoeken. + +U kunt de lijndikte instellen. En voor veelhoeken kunt u eveneens de vulstijl instellen. + + + + +Kromme <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep om een lijn te tekenen - hierdoor stelt u de start- en eindpunten in. Door te slepen kunt u twee controlepunten instellen. Als u de controlepunten niet (allemaal) wilt gebruiken, klikt u gewoon met de andere muistoets. Dan zal het hulpmiddel een kubische Bezier-kromme tekenen. + +De &LMB; tekent in de voorgrondkleur. De &RMB; tekent in de achtergrondkleur. + +U kunt ook de lijndikte instellen. + + + + +Ellips <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep om een ellips te tekenen. + +De &LMB; tekent in de voorgrondkleur. De &RMB; tekent in de achtergrondkleur en keert ook de vulkleur om. + +U kunt ook de lijndikte en vulstijl instellen. + +Gebruik de modificatietoetsen voor nog meer functies: + + + +Houd &Shift; ingedrukt en sleep dan om een cirkel te tekenen. + + +Om een ellips te tekenen met een centraal punt naar uw keuze, houdt u &Ctrl; ingedrukt, klikt u op het centrale punt, en sleept dan totdat de juiste grootte en vorm voor de ellips bereikt is. + + +Om een cirkel te tekenen met een centraal punt naar uw keuze, houdt u &Ctrl; en &Shift; ingedrukt, klikt u op het centrale punt en sleept dan totdat de cirkel de juiste grootte heeft. + + + + + + +Gummen + + +Gum <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep met de gum om fouten uit te wissen. + + +In tegenstelling tot andere hulpmiddelen, tekent de gum in de achtergrondkleur. Om in de voorgrondkleur te tekenen, gebruikt u de &RMB;. + + +De gum heeft alleen vierkante vormen . Om andere vormen, zoals cirkels, te gebruiken, kunt u het Penseel nemen en gebruiken met de achtergrondkleur. + + +Dubbelklik op het pictogram van de gum om de hele afbeelding te wissen. Dit is hetzelfde als de optie Wissen in het afbeeldingsmenu. + + + + + +Kleurwisser <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep om pixels in de voorgrondkleur te vervangen door de achtergrondkleur. Om alle gelijkaardige (maar niet perfect gelijke) pixels te vervangen met de voorgrondkleur, zoals bijvoorbeeld in diffuus gekleurde afbeeldingen en foto's, stelt u de Kleurovereenkomst in op een andere waarde dan Exact. + + +Anders dan andere gereedschappen, gebruikt de gum de achtergrondkleur. Om pixels in de achtergrondkleur te vervangen door de voorgrondkleur, kunt u de &RMB; gebruiken. + + +U kunt de gumgrootte instellen. + + +Dubbelklik op het Kleurwisser-pictogram om het hulpmiddel toe te passen op de hele afbeelding. + + + + + + +Vloedvulling <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik om een gebied te vullen. Om een diffuus gebied te vullen, kunt u Kleurovereenkomst instellen op iets anders dan Exact. + +De &LMB; vult met de voorgrondkleur. Daartegenover vult de &RMB; met de achtergrondkleur. + + + +Lijn <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep om een lijn te tekenen. + +De &LMB; tekent in de voorgrondkleur. De &RMB; tekent in de achtergrondkleur. + +U kunt ook de lijndikte instellen. + + + + + + + + + + + + + + + + + + + + + +Houd &Ctrl; ingedrukt om lijnen te tekenen in een hoek die het dichtst ligt bij een veelvoud van 30 graden - dit zijn de lijnen in het rode diagram. + + +Houd &Shift; ingeduwd om lijnen te tekenen in een hoek die het dichtst ligt bij een veelvoud van 45 graden - dit zijn de lijnen in het blauwe diagram. + + +Houd &Ctrl; en &Shift; ingeduwd om lijnen te tekenen in een hoek die het dichtst ligt bij een veelvoud van 30 of 45 graden - dit zijn de lijnen in het groene diagram. + + + + + + +Pen <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik om een punt te tekenen of klik en sleep om een lijn te tekenen met de losse hand. + +De &LMB; tekent in de voorgrondkleur. De &RMB; tekent in de achtergrondkleur. + + + + +Rechthoeken <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep om een rechthoek te tekenen. De Afgeronde rechthoek is een rechthoek met afgeronde hoeken. + +De &LMB; tekent in de voorgrondkleur. De &RMB; tekent in de achtergrondkleur en keert ook de vulkleur om. + +U kunt ook de lijndikte en vulstijl instellen. + +Gebruik de modificatietoetsen voor nog meer functies: + + + +Houd &Shift; ingedrukt om een vierkant te tekenen. + + +Om een rechthoek te tekenen met een middelpunt naar keuze, drukt u op &Ctrl;, klik daarna op het middelpunt en sleep totdat de rechthoek de juiste vorm en grootte heeft. + + +Om een vierkant te tekenen met een centraal punt naar uw keuze, houdt u &Ctrl; en &Shift; ingedrukt, klik op het middelpunt en sleep dan de muis totdat het vierkant de juiste grootte heeft. + + + + + + +Selecties <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Gebruik de selectiehulpmiddelen om de grenzen van een selectie te tekenen. + +Om een selectie te verplaatsen, kunt u erop klikken en deze verslepen. De hoofdweergave zal meeschuiven wanneer u de selectie wilt verplaatsen naar een plaats op de afbeelding die momenteel niet getoond wordt. + +U kunt de grootte wijzigen (vrije vorm) van de hele afbeelding of de selectie Vloeiend schalen met de handgrepen. Houdt &Shift; ingedrukt als u met de vrije hand een selectie schaalt, maar daarbij toch de beeldverhoudingen wilt behouden. De &RMB; roept een contextmenu op met de algemene commando's voor Bewerken en Afbeeldingseffecten. + + +U kunt de pijltjestoetsen gebruiken bij het uitbreiden van de selectie, of bij het verplaatsen ervan. + + +U kunt &Ctrl; indrukken voor het verplaatsen van de selectie. Op die manier verplaatst u een kopie van de oorspronkelijke selectie. De selectie zal uitgesmeerd worden wanneer u &Shift; ingedrukt houdt. + + + + + + + + + + + + + +Er zijn twee selectiemodussen: dekkend (standaard) en transparant. Wanneer u de transparante selectiemodus gebruikt, zullen alle pixels in de achtergrondkleur transparant zijn (uittrekken uit achtergrond). Hierdoor kunt u een selectie plakken zonder achtergrond. Om uit te trekken uit de achtergrond in een diffuse afbeelding, stelt u Kleurovereenkomst in op iets anders dan Exact. + + + + + + +U kunt Afbeeldingseffecten toepassen op een selectie - zie het deel Afbeeldingseffecten voor meer informatie. + +Het is mogelijk om selectie naar bestand op te slaan met het item Naar bestand kopiëren... uit het contextmenu voor selectie of item BewerkenNaar bestand kopiëren... uit het hoofdmenu. + + + +Spuitbus <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep om graffiti te spuiten. Houd de muisknop ingedrukt om een meer geconcentreerde straal te verkrijgen. + + + + + + + + + + + + + +Klik op één van de vormen om een spuitgrootte te selecteren. U kunt spuitgroottes selecteren van 9x9, 17x17 en 29x29. + + + + + + +De &LMB; tekent in de voorgrondkleur. De &RMB; tekent in de achtergrondkleur. + + + + +Tekst <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klik en sleep om een gebied te creëren waarin u tekst wilt typen. Zodra de rand wordt getoond kunt beginnen met typen van de tekst. Klik op de rand en versleep dan het gebied. U kunt de grootte van het tekstvak wijzigen door een van de handgrepen te verslepen of door gebruik te maken van het dialoogvenster Grootte wijzigen. + + +Als u een tekstvak gedeselecteerd hebt, kunt u dit Ongedaan maken om de tekst opnieuw te bewerken. + + + +Transparante kleur gebruiken + + + + + + + + +De linkerafbeelding is het voorbeeld. De rechter toont de toevoeging van tekst met dekkende voor- en achtergrondkleuren. + + + + + + + + + +De linker afbeelding toont de toevoeging van tekst met dekkende voorgrondkleuren en een transparante achtergrondkleur. De rechter afbeelding toont de toevoeging van tekst met een transparante voorgrondkleur en een dekkende achtergrondkleur. + + + + +Algemene hulpmiddelopties + + + + + + + + + + + + + +Klik op de vierkanten om een gumgrootte te selecteren. U kunt vierkanten selecteren met een lengte van 2, 3, 5, 9, 17 en 29 pixels voor een zijde. + +De grootte-instelling van de gum is van toepassing op Gummen. + + + + + + + + + + + +Klik op een van de lijnen om een lijndikte te selecteren. U kunt volgende lijndiktes instellen: 1, 2, 3, 5 en 8 pixel(s). + +De instelling voor lijndikte is van toepassing op volgende hulpmiddelen:Verbonden lijnen, Kromme, Ellips, Lijn, Veelhoek, rechthoek en Afgeronde rechthoek. + + + + + + + + + + + +Klik op een van de rechthoeken om een vulstijl te selecteren. U kunt de volgende stijlen selecteren: Geen vulling, vullen met achtergrondkleur en vullen met voorgrondkleur. De instelling voor vulstijlen is van toepassing op de volgende hulpmiddelen:Ellips, Veelhoek, Rechthoek en Afgeronde rechthoek. + + + + + + + + + + +Werken met kleur + + +Het kleurenpallet + + + + + + + +Kleurenpallet + + + + +Het kleurenpallet heeft 3 hoofddelen: het kleurenvak, het kleurenpalet en de kleurovereenkomstkiezer. + +Het kleurenvak toont de huidige voorgrondkleur als een vierkant bovenop het andere vierkant dat de huidige achtergrondkleur vertegenwoordigt. Als u tekent met de &LMB;, wordt de voorgrondkleur gebruikt, en wanneer u tekent met de &RMB; wordt de achtergrondkleur gebruikt (behalve voor Gummen). U kunt klikken op de dubbele pijl om de voor- en achtergrondkleuren om te wisselen. + +Het kleurenpalet toont een selectie van kleuren waaruit u kunt kiezen. De transparante pyramide vertegenwoordigt de transparantiekleur. Klik met de linkermuisknop op een kleur om de voorgrondkleur in te stellen en gebruikt de rechtermuisknop om een kleur te selecteren voor de achtergrondkleur. U kunt ook een dekkende kleur slepen naar de vierkanten van het kleurenvak. Om een kleur te bewerken in het kleurenvak of kleurenpalet, kunt u erop dubbelklikken. Met de Kleurenkiezer kunt u dan een kleur uit de afbeelding kiezen. + +Met kleurovereenkomst kunt u beter diffuse afbeeldingen en foto's bewerken; dit is gelijkaardig aan een Magische toverstokfunctie in andere tekenprogramma's. Het wordt gebruikt bij de volgende hulpmiddelen: transparante selecties, Vloedvulling, Kleurwisser en Automatisch bijsnijden / interne rand verwijderen. Dubbelklik op het pictogram voor kleurovereenkomst om te kiezen wanneer gelijkaardige kleuren identiek moeten worden beschouwd. Als u in de transparantiemodus selecties gebruikt, zal elke kleur die gelijkaardig is aan de achtergrondkleur ook transparant gemaakt worden. + + + + + + + + + +De linker afbeelding toont een voorbeeld. De rechter demonstreert de toepassing van een vloedvulling, met kleurovereenkomstinstellingen van 5%, 15% en 30%. In dit voorbeeld, met als kleurovereenkomstinstelling Exact en een vloedvulling van (80,100), zou er maar één pixel gevuld worden, omdat de omliggende pixels gelijkaardig maar niet identiek zijn. Wanneer de kleurovereenkomst verhoogd wordt, zullen er meer pixels die gelijkaardig zijn qua kleur als identiek beschouwd worden, waardoor de vulling zich natuurlijk verder uitbreidt. + + + + + +Weergave-opties + + +Verwijzing naar weergave-opties + +Zoomen volgens raster +Miniatuur + + + + +Zoomen volgens raster +Verhoog het zoomniveau om afbeeldingen met een grotere precisie te bewerken, of verlaag dit om een groter deel van de afbeelding te zien. + + +Bij zoomniveau's die geen veelvouden van 100% zijn, kan het lijken dat bepaalde delen van de afbeelding verschuiven wanneer de gebruiker ermee bezig is. Er kunnen zich ook andere kleine weergaveproblemen voordoen bij deze zoomniveau's. + + +Bij zoomniveau's gelijk aan of groter dan 400% (die ook veelvouden zijn van 100%), kunt u het Raster tonen om individuele pixels nauwkeuriger te bewerken. + + + + + + + + + + + + + + + +De eerste afbeelding toont het Teksthulpmiddelenpictogram, terwijl de laatste deze toont met een zoomniveau van 600% met het raster aan. + + +Een andere manier om te zoomen, terwijl u niet aan het tekenen bent, is scrollen met het muiswiel terwijl u &Ctrl; ingedrukt houdt. + + + + + +Miniatuur + + + + + + + +Als Gezoomde miniatuurmodus geselecteerd is, wordt de gehele afbeelding getoond, indien nodig geschaald om in het miniatuurvenster te passen (afbeelding rechtsboven). +Anders toont de miniatuur zoveel mogelijk van de afbeelding, vertrekkend vanuit links-boven hoek van de hoofdweergave (afbeelding rechtsonder). + + + + + +Afbeeldingseffecten + + +Verwijzing naar afbeeldingseffecten +Automatisch bijsnijden / Interne rand verwijderen +Balans +Wissen +Reliëf +Plat maken +Omdraaien (ondersteboven) +Kleuren omkeren +Kleuren beperken +Reduceren naar grijswaarden +Reduceren naar monochroom (diffuus) +Spiegelen (horizontaal) +Grootte wijzigen / schalen +Roteren +Als afbeelding instellen (bijsnijden) +Scheeftrekken +Verzachten & verscherpen +Meer effecten +Opmerkingen + + + +Automatisch bijsnijden / Interne rand verwijderen + +Dit verwijdert automatisch de rand van een afbeelding of selectie. Gebruik automatisch bijsnijden als u een figuur hebt die niet de gehele afbeelding of selectie vult, en u de overbodige witruimte wilt verwijderen. Om deze functie te gebruiken bij een diffuse afbeeldingsrand, zult u ook gebruik moeten maken van Kleurovereenkomst. + + + + +Balans + +Deze functie is bereikbaar in het Meer effecten dialoogvenster. + + + + + + + + +Hiermee kunt u de helderheid, het contrast en het gamma van de afbeelding of selectie instellen. + + +De meer algemene waarden voor gamma (een decimaal tussen 0,10 en 10,00) zijn gelegen tussen de Gammaschuifregelaar en de Reset-knop. + + + + +Beginwaarde + +Dit vult de hele afbeelding of selectie met de achtergrondkleur. + + +Dubbelklik op het pictogram Gum om de hele afbeelding te wissen. + + + + + +Reliëf + +Deze functie is bereikbaar in het Meer effecten dialoogvenster. + + + + + + + + +Activeer Inschakelen om het reliëfeffect toe te passen. Dit benadrukt de randen en geeft de afbeelding of selectie een "gegraveerd uiterlijk". + + + +Plat maken + +Deze functie is bereikbaar in het Meer effecten dialoogvenster. + + + + + + + + +Dit kleurt de afbeelding opnieuw in met verschillende kleurtinten van de twee geselecteerde kleuren. + + + +Omdraaien (ondersteboven) + +Dit spiegelt de hele afbeelding of selectie verticaal. + + + + +Kleuren omkeren + +Deze functie is bereikbaar in het Meer effecten dialoogvenster. + + + + + + + + +Hiermee kunt u één of meerdere RGB kanalen in de afbeelding of selectie omkeren. Selecteer Allemaal om een foto in een negatief te veranderen en vice versa. Dit ziet er meestal wel grappig uit. + + +Om snel alle kanalen om te keren, moet u dit dialoogvenster niet gebruiken. U kunt in plaats daarvan het Kleuren omkeren item in het menu Afbeelding of Selectie gebruiken. Het Selectie-menu wordt enkel getoond in de menubalk als u één van de selectiehulpmiddelen gebruikt. U kunt deze actie ook bereiken vanuit het contextmenu met een &RMB; klik in het afbeeldingsgebied. + + + + + +Spiegelen (horizontaal) + +Dit spiegelt de hele afbeelding of selectie horizontaal. + + + + +Kleuren beperken + +Deze functie is bereikbaar in het Meer effecten dialoogvenster. + + + + + + + + +Dit beperkt het aantal kleuren dat gebruikt wordt in de afbeelding of selectie, met of zonder verspreiding. + +Verspreiding resulteert normaal gezien in een betere kwaliteit, hoewel u het misschien wilt uitschakelen voor artistieke effecten; ⪚ als u Monochroom gebruikt i.p.v. Monochroom (diffuus) geeft dit een silhouet-effect. + +Een ander belangrijk onderscheid is dat Monochroom (diffuus) altijd de hele afbeelding of selectie naar zwart-wit reduceert, terwijl Monochroom dit alleen zal doen als de afbeelding of selectie meer dan 2 kleuren bevat. + + +Gebruik voor een snelle, benaderde monochrome afbeelding of selectie, het item Reduceren naar monochroom (diffuus) in het menu Afbeelding of Selectie. Het menu Selectie wordt enkel getoond in de menubalk wanneer u een van de selectiehulpmiddelen gebruikt. U kunt deze actie ook bereiken vanuit het contextmenu met een &RMB;-klik in het afbeeldingsgebied. + + + +Het aantal kleuren hier veranderen heeft geen effect op de kleurdiepte van het bestandsformaat. Als u de kleurdiepte wilt veranderen, doet u dat in het dialoogvenster doen waar u het bestand opslaat. Merk op dat de kleurdiepte veranderen ook het aantal kleuren verandert (wat verwarrend kan zijn). + + + + +Beperken naar grijswaarden + +Dit beperkt de gehele afbeelding of selectie naar grijswaarden. + + + + +Reduceren naar monochroom (diffuus) + +Dit reduceert de gehele afbeelding of selectie naar zwart-wit. + + +Als u de afbeelding of selectie niet diffuus wilt hebben, gebruikt u het dialoogvenster Kleuren beperken. + + + + +Grootte wijzigen / schalen + + + + + + + + + +Een afbeelding veranderen van grootte verandert de afmetingen van een afbeelding zonder een transformatie toe te passen op de bestaande inhoud. Een afbeelding schalen zal de bestaande inhoud uitgerekt worden naar de nieuwe afmetingen. Maar Vloeiend schalen realiseert meestal een betere kwaliteit dan gewoon schalen, omdat pixels dan vermengd worden met de naburige kleuren. + +U kunt de nieuwe afmetingen in pixels uitdrukken of in een percentage t.o.v. de oorspronkelijke afmetingen. Als u Verhoudingen behouden selecteert, zal de breedte en hoogte met hetzelfde percentage geschaald worden. + + +U kunt een hele afbeelding met de losse hand van Grootte veranderen, of een selectie Vloeiend schalen door gebruik te maken van de daarvoor bestemde handgrepen. + + + +Bij selecties wordt alleen schalen ondersteund en bij tekstvakken alleen een verandering van grootte. Zie Opmerkingen voor extra details over het toepassen van deze effecten. + + + + +Roteren + + + + + + + + + +Dit roteert de afbeelding. U kunt de hoek en de richting van de rotatie specificeren. + + +U kunt de richting van de rotatie veranderen door een bepaalde negatieve waarde op te geven voor de hoek. + + + +Zie Opmerkingen voor details over het toepassen van dit effect op een selectie. + + + + +Als afbeelding instellen (bijsnijden) + +Dit zal de selectie instellen als een afbeelding. + + +Deze mogelijkheid is alleen beschikbaar wanneer u met een actieve selectie bezig bent. + + + + +Scheeftrekken + + + + + + + + + +Dit trekt de hele afbeelding of selectie scheef: horizontaal en/of verticaal. + + +Zie Opmerkingen voor details over het toepassen van dit effect op een selectie. + + + + +Verzachten & verscherpen + +Deze functie is bereikbaar in het Meer effecten dialoogvenster. + + + + + + + + +Gebruik dit effect om een afbeelding te verscherpen of te verzachten. + + + + +Meer effecten + +Dit dialoogvenster bevat de functies Balans, Reliëf, Plat maken, Omkeren, Kleuren beperken en Verzachten & verscherpen. + + + +Opmerkingen + +Grootte wijzigen / schalen, Roteren en Hellen kunnen de afmetingen van een afbeelding veranderen. U kunt de nieuwe afmetingen zien in het dialoogvenster. + +Als u deze effecten op een afbeelding toepast, zal de grootte van de afbeelding, indien nodig, gewijzigd worden. Als u daarentegen deze effecten toepast op een selectie, zal de afbeelding niet van grootte veranderen, zelfs niet wanneer de getransformeerde selectie niet meer past in de oorspronkelijke afbeelding. + + + + + + + + + +De linker afbeelding is 30 graden met de klok mee gedraaid om de rechter afbeelding te vormen. &kolourpaint; heeft de afbeelding automatisch vergroot om de grotere inhoud de nodige plaats te geven. + + + + + + + + + +De linker selectie is 30 graden met de klok mee gedraaid om de rechter selectie te verkrijgen. De grootte van de afbeelding is hetzelfde gebleven, ondanks dat sommige delen van de afbeelding niet zichtbaar zullen zijn zonder de afbeelding van grootte te veranderen. + + + + + +Dankbetuiging en licentie + +Carl Tucker +Het kan zijn dat de documentatie niet erg beknopt is; het is ook mogelijk dat het geen volledige documentatie is; maar het is wel eerlijke documentatie. + + +&kolourpaint; +Copyright programma © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Specifieke pictogrammen voor &kolourpaint; Copyright © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Documentatie en extra artistieke bijdragen Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Gedeelten zijn gereproduceerd met toelating van . + +&meld.fouten;&vertaling.freek;&vertaling.ruben;&nagelezen.freek; &underFDL; Dit programma heeft volgende licentie: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; + + + diff --git a/po/nl/kolourpaint.po b/po/nl/kolourpaint.po new file mode 100644 index 0000000..a57ba99 --- /dev/null +++ b/po/nl/kolourpaint.po @@ -0,0 +1,3042 @@ +# translation of kolourpaint.po to Dutch +# translation of kolourpaint.po to +# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# +# Rinse de Vries , 2004. +# Rinse de Vries , 2004, 2005, 2007, 2008, 2010. +# Tom Albers , 2004. +# Bram Schoenmakers , 2004, 2005, 2006, 2007. +# Freek de Kruijf , 2008, 2009. +# Freek de Kruijf , 2009, 2010, 2011, 2012, 2014, 2015, 2016, 2017, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-03 18:31+0200\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 21.04.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Rinse de Vries,Bram Schoenmakers,Freek de Kruijf - t/m 2021" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "rinsedevries@kde.nl,bramschoenmakers@kde.nl,freekdekruijf@kde.nl" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balans" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Verzachten" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Verscherpen" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Wissen" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selectie: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Reliëf" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Plat maken" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduceren naar grijswaarden" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Tint, verzadiging, intensiteit" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Kleuren omkeren" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Omkeren" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduceren naar monochroom (diffuus)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduceren naar monochroom" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduceren naar 256 kleuren (diffuus)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduceren naar 256 kleuren" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histrogram-equalizer" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Spiegelen" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Horizontaal en verticaal spiegelen" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Horizontaal spiegelen" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Verticaal spiegelen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Tekst: grootte van tekstvak wijzigen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selectie: schalen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selectie: vloeiend schalen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Grootte wijzigen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Schalen" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Vloeiend schalen" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Roteren" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Scheeftrekken" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Ongedaan maken: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Ongedaan maken" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "O&pnieuw: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "Opnie&uw" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Ongedaan maken: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Ongedaan maken" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Opnieuw: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Opnieuw" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "Nog %1 item" +msgstr[1] "Nog %1 items" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Kleurenkiezer" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Vloedvulling" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Meer afbeeldingeffecten (selectie)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Meer afbeeldingeffecten" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effect:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Kleuren beperken" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Verzachten & verscherpen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Documenteigenschappen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Punten per inch (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Niet opgegeven" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontaal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Verticaal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Punten per inch (DPI) specificeert het aantal pixel van de " +"afbeelding dat moet worden afgedrukt binnen één inch (2,54 cm).

                De " +"hoger het aantal DPI's, de kleiner de afgedrukte afbeelding. Opmerking: uw " +"printer zal waarschijnlijk geen hoge kwaliteit afdrukken produceren als u de " +"waarde hoger zet dan 300 of 600 DPI, afhankelijk van de printer.

                Als u " +"de afbeelding op dezelfde grootte als op het scherm wilt afdrukken, zet dan " +"de DPI-waarden van de afbeelding op die van het scherm.

                Als beide DPI-" +"waarden niet zijn opgegeven zal de afbeelding ook op dezelfde grootte " +"als op het scherm worden afgedrukt.

                Niet alle afbeeldingsformaten " +"ondersteunen DPI-waarden. Als het formaat waarin u opslaat ze niet " +"ondersteund zullen ze ook niet worden opgeslagen.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "O&ffset" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                The Offset is the relative position where this image should be " +"placed, compared to other images.

                Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                " +msgstr "" +"

                De Offset is de relatieve positie waar de afbeelding dient te " +"worden geplaatst, ten opzichte van de andere afbeeldingen.

                Niet alle " +"formaten ondersteunen de Offset-functie. Als het formaat waarin u " +"opslaat geen ondersteuning biedt zullen de waarden die hier hebt opgegeven " +"niet worden opgeslagen.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Tekstvelden" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Rij &toevoegen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Rij verwij&deren" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "He&rstellen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Tekstvelden leveren extra informatie over de afbeelding aan. " +"Dit is waarschijnlijk een commentaargebied waarin u naar eigen inzicht een " +"willekeurige tekst kunt invoeren.

                Echter, dit is formaatspecifiek, dus " +"de velden kunnen theoretisch computer-geïnterpreteerde gegevens zijn - die u " +"niet mag wijzigen - maar dit is onwaarschijnlijk.

                Niet alle " +"afbeeldingsformaten onderstenen tekstvelden. Als het formaat waarin u " +"opslaat geen ondersteuning biedt zullen ze niet worden opgeslagen.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Sleutel" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Waarde" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "De tekstwaarde \"%1\" op regel %2 vereist een sleutel." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Alle tekstsleutels dienen uniek te zijn. De tekstsleutel \"%1\" op regel %2 " +"en %3 zijn identiek." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Ongeldige tekstvelden" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Afmetingen" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Origineel:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Voorbeeld" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Bij&werken" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Grootte wijzigen / schalen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Toepassen op:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Gehele afbeelding" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selectie" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Tekstvak" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operatie" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                " +msgstr "" +"
                • Grootte wijzigen: de afbeelding zal worden vergroot door " +"nieuwe gebieden aan de rechter- en/of onderkant van de afbeeldingen aan te " +"maken (gevuld met de achtergrondkleur), of verkleind door aan de rechter- en/" +"of onderkant een gedeelte weg te snijden.
                • Schalen: de " +"afbeelding zal worden vergroot door pixels te verdubbelen of verkleind door " +"pixels te verwijderen.
                • Glad schalen: dit is hetzelfde als " +"Schalen, maar het vermengt de aangrenzende pixels om zo een gladder " +"resultaat te krijgen.
                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "G&rootte wijzigen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Schalen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Vloeiend s&chalen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Breedte:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Hoogte:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nieuw:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Percentage:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "&Aspectverhouding behouden" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to resize the text box?

                " +msgstr "" +"

                De afbeeldinggrootte wijzigen naar %1x%2 kan een grote hoeveelheid " +"geheugen in beslag nemen. Dit kan de reactiesnelheid van het systeem " +"vertragen en geheugenproblemen bij andere toepassingen.

                Wilt u de " +"afbeeldinggrootte toch wijzigen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Grootte tekstvak wijzigen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Grootte tekstvak wijzig&en" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to resize the image?

                " +msgstr "" +"

                De afbeeldinggrootte wijzigen naar %1x%2 kan een grote hoeveelheid " +"geheugen in beslag nemen. Dit kan de reactiesnelheid van het systeem " +"vertragen en geheugenproblemen bij andere toepassingen.

                Wilt u de " +"afbeeldinggrootte toch wijzigen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Afbeeldinggrootte wijzigen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Afb&eeldinggrootte wijzigen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to scale the image?

                " +msgstr "" +"

                De afbeelding schalen naar %1x%2 kan een grote hoeveelheid geheugen " +"in beslag nemen. Dit kan de reactiesnelheid van het systeem vertragen en " +"geheugenproblemen bij andere toepassingen.

                Wilt u de afbeelding toch " +"schalen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Afbeelding schalen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Afbeelding schal&en" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to scale the selection?

                " +msgstr "" +"

                Het schalen van de selectie naar %1x%2 kan een grote hoeveelheid " +"geheugen in beslag nemen. Dit kan leiden tot een traag reagerend systeem en " +"geheugenproblemen bij andere toepassingen.

                Wilt u de selectie toch " +"hellen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Selectie schalen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Selecti&e schalen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the image?" +msgstr "" +"

                Het vloeiend schalen van de afbeelding naar %1x%2 kan een grote " +"hoeveelheid geheugen in beslag nemen. Dit kan de reactiesnelheid van het " +"systeem vertragen en geheugenproblemen bij andere toepassingen.

                Wilt u " +"de afbeelding toch vloeiend schalen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Afbeelding vloeiend schalen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Afbeelding vlo&eiend schalen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the selection?" +"

                " +msgstr "" +"

                Het vloeiend schalen van de selectie naar %1x%2 kan grote " +"hoeveelheiden geheugen in beslag nemen. Dit kan leiden tot een traag " +"reagerend systeem en dat toepassingen geheugenproblemen kunnen krijgen.

                Wilt u de selectie toch vloeiend schalen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Selectie vloeiend schalen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Selectie vlo&eiend schalen" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Selectie roteren" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Afbeelding roteren" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Na roteren:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Richting" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "A&nti-klokgewijs" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "K&lokgewijs" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Hoek" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 gra&den" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 grad&en" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &graden" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Gebr&uikergedefinieerd:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "graden" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to rotate the selection?

                " +msgstr "" +"

                Het roteren van de selectie naar %1x%2 kan grote hoeveelheden " +"geheugen in beslag nemen. Dit kan leiden tot een traag reagerend systeem en " +"dat toepassingen geheugenproblemen kunnen krijgen.

                Wilt u de selectie " +"toch roteren?

                " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Selectie roteren?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Selectie rot&eren" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to rotate the image?

                " +msgstr "" +"

                Het roteren van de afbeelding naar %1x%2 kan een grote hoeveelheid " +"geheugen in beslag nemen. Dit kan de reactiesnelheid van het systeem " +"vertragen en geheugenproblemen bij andere toepassingen.

                Wilt u de " +"afbeelding toch roteren?

                " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Afbeelding roteren?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Afbeelding roter&en" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Selectie hellen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Afbeelding hellen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Na hellen:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontaal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Verticaal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to skew the selection?

                " +msgstr "" +"

                Het hellen van de selectie naar %1x%2 kan een grote hoeveelheid " +"geheugen in beslag nemen. Dit kan leiden tot een traag reagerend systeem en " +"geheugenproblemen bij andere toepassingen.

                Wilt u de selectie toch " +"laten hellen?

                " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Selectie hellen?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Selectie h&ellen" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to skew the image?

                " +msgstr "" +"

                De afbeelding hellen naar %1x%2 kan een grote hoeveelheid geheugen in " +"beslag nemen. Dit kan de reactiesnelheid van het systeem vertragen en " +"geheugenproblemen bij andere toepassingen.

                Wilt u de afbeelding toch " +"laten hellen?

                " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Afbeelding hellen?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Afbeelding h&ellen" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Kleurovereenkomst" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Overeenkomst met &RGB-kleurenkubus" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Exact" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Wat is kleurovereenkomst?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Voorbeeld opslaan" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (ca. %2%)" +msgstr[1] "%1 bytes (ca. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "\"%1\" kan niet worden geopend." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" kan niet worden geopend. Niet-ondersteund afbeeldingformaat.\n" +"Het bestand is mogelijk beschadigd." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Afbeelding kan niet worden opgeslagen. Onvoldoende informatie." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Adres: %1\n" +"Mime-bestandstype: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Interne fout" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                The %1 format may not be able to preserve all of the image's " +"color information.

                Are you sure you want to save in this format?

                " +msgstr "" +"

                Het %1-formaat kan mogelijk niet alle kleurgegevens van de " +"afbeelding opslaan.

                Wilt u de afbeelding toch in dit formaat opslaan?" +"

                " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Bestandsformaat met verlies" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                Are " +"you sure you want to save at this color depth?

                " +msgstr "" +"

                Het opslaan van de afbeelding in een lage kleurdiepte van %1-bits " +"kan leiden tot verlies van kleurinformatie. Eventuele transparantie zal dan " +"ook verwijderd worden.

                Wilt u met deze kleurdiepte opslaan?

                " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Lage kleurdiepte" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"De afbeelding kan niet worden opgeslagen. Benodigd tijdelijk bestand kan " +"niet worden aangemaakt." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Kon niet worden opgeslagen als \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Fout bij opslaan van afbeelding" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Afbeelding kan niet worden opgeslagen. Upload is mislukt." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Interne rand ver&wijderen" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Interne rand verwijderen" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Automatisch bij&snijden" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automatisch bijsnijden" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint kan de interne randen van de selectie niet verwijderen omdat ze " +"niet gevonden kunnen worden." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Kan de interne randen niet verwijderen" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint kan de afbeelding niet automatisch bijsnijden omdat de randen " +"niet gevonden konden worden." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Kan niet automatisch bijsnijden" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Als afbeelding instellen" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selectie: aanmaken" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Tekenprogramma door KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projectstichter" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Hoofdonderzoeker" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Ondersteuning van scannen en alfa, huidige onderhouder" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Pictogrammen" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Ondersteuning voor invoermethode" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Afbeeldingseffecten" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE4-overdracht" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Geschikt maken voor KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Bedankt aan de vele personen die meegeholpen hebben dit programma mogelijk " +"te maken." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Te openen afbeeldingsbestanden, optioneel" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Geef een lijst met alle leesbare MIME-typen van afbeeldingen" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "Beel&d" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "Afbeeld&ing" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Kleuren" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Hoofdwerkbalk" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Tekstbalk" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Selectiegereedschap rechter-muisknop-menu" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "Be&werken" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatuur" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" +"Versleep het handvat met de linker muisknop om de afbeeldingsgrootte te " +"wijzigen." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Afbeeldinggrootte wijzigen: laat alle muisknoppen los." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" +"Afbeeldinggrootte wijzigen: Klik op de rechtermuisknop om te annuleren." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Kleurpalet \"%1\" kon niet worden geopend." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Kleurpalet \"%1\" kon niet worden geopend. Formaat wordt niet ondersteund.\n" +"Het bestand is mogelijk beschadigd." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "KDE-kleurpalet \"%1\" kon niet worden geopend." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Kleurpalet kon niet worden opgeslagen als \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Naamloos" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Standaardwaarden van KolourPaint gebruiken" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Gebruik KDE's" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Openen..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Herla&den" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "Op&slaan" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Opslaan &als..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Rij toevoegen" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Laatste rij verwijderen" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Kleurenpallet" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Het kleurpalet \"%1\" is gewijzigd.\n" +"Wilt u het opslaan?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Het KDE-kleurpalet \"%1\" is gewijzigd.\n" +"Wilt u het opslaan naar een bestand?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Het standaard kleurpalet is gewijzigd.\n" +"Wilt u het opslaan naar een bestand?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Kleurpalet openen" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Het kleurpalet \"%1\" is gewijzigd.\n" +"Als u het herlaadt, dan gaan alle wijzigingen sinds de laatste opslag " +"verloren.\n" +"Wilt u het palet toch opnieuw laden?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Herladen" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Het KDE-kleurpalet \"%1\" is gewijzigd.\n" +"Door het te herladen verliest u alle wijzigingen.\n" +"Wilt u het toch opnieuw laden?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Het standaard kleurpalet is gewijzigd.\n" +"Door het te herladen verliest u alle wijzigingen.\n" +"Wilt u het toch opnieuw laden?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Kleurpalet opslaan als" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "In &nieuw venster plakken" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Selectie verwij&deren" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opiëren naar bestand..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Plakken &vanuit bestand..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Tekst: tekstvak aanmaken" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Tekst: plakken" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint kant de inhoud van het klembord niet plakken omdat het een " +"onbekend formaat heeft." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Kan niet plakken" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Tekst: tekstvak verwijderen" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selectie: verwijderen" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Tekst: voltooien" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selectie: deselecteren" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopiëren naar bestand" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Plakken vanuit bestand" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xporteren..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Scannen..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Schermafdruk ophalen" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Eigenschappen" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Herla&den" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Alle ondersteunde bestanden (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Afbeelding openen" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Dialoog voor scannen openen is mislukt." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Scannen is mislukt" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Vertraging voor schermafdruk" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " seconde" +msgstr[1] " seconden" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Geen vertraging" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Hoofdvenster verbergen" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Documenteigenschappen" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Afbeelding opslaan als" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exporteren" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Het document \"%1\" is gewijzigd.\n" +"Als u het herlaadt, dan gaan alle wijzigingen sinds de laatste opslag " +"verloren.\n" +"Wilt u het document toch opnieuw laden?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Het document \"%1\" is gewijzigd.\n" +"Door het te herladen verliest u alle wijzigingen.\n" +"Wilt u het document toch opnieuw laden?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Afbeelding afdrukken" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Voordat deze afbeelding kan worden verzonden dient u deze op te slaan.\n" +"Wilt u de afbeelding nu opslaan?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Het document \"%1\" is gewijzigd.\n" +"Wilt u het opslaan?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Groott&e wijzigen / schalen..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Als afbeelding ins&tellen (bijsnijden)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Omdraaien (ondersteboven)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Spiegelen (horizontaal)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Roteren..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "&Linksom draaien" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rech&tsom draaien" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Sc&heefheid..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reduceren naar mo&nochroom (diffuus)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduceren naar &grijswaarden" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "Kleuren omk&eren" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Beginwaarde" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Vertrouwelijk maken" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Meer effecten..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "Afbeeld&ing" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Select&ie" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&Pad tonen" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Met anti-aliasing tekenen" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Lettertypefamilie" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Tekengrootte" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Vet" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Cursief" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Onderstrepen" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Doorstrepen" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Vorige gereedschapsoptie (Groep #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Volgende gereedschapsoptie (Groep #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Vorige gereedschapsoptie (Groep #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Volgende gereedschapsoptie (Groep #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Dekkend tekenen" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Met kleurovereenkomst tekenen..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Gereedschapsvak" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "&Raster tonen" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Miniat&uur tonen" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Gezoo&mde miniatuurmodus" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Miniatuur&rechthoek activeren" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoomen" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Afbeelding ophalen" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Het openen van de geselecteerde scanner is mislukt." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Penseel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "" +"Met behulp van penselen in verschillende modellen en groottes schilderen" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "klik om stippen te tekenen en sleep om strepen te tekenen." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Kleurwisser" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Verandert de voorgrondkleur in de achtergrondkleur" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "klik of sleep om de pixels in de voorgrondkleur te wissen." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Gum" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Maakt het mogelijk om foutjes uit te gummen" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "klik of sleep om te gummen." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Alle muisknoppen loslaten." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pen" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Tekent stippen en vrijehand strepen" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Spuitbus" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Spuit graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "klik of sleep om graffiti te spuiten." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Klik op de rechtermuisknop om te annuleren." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Klik op de linkermuisknop om te annuleren." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Hiermee kunt u een kleur uit de afbeelding kiezen" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "klik om een kleur te selecteren." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Vult gebieden in de afbeelding" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "klik om een gebied op te vullen." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoomen" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Vergoot of verkleind te weergave van een afbeelding" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Klik om in/uit te zoomen of sleep met de linker muisknop om een specifiek " +"gebied in te zoomen." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kromme" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Tekent kromme lijnen" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Versleep de start- en eindpunten." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Linksklik om het eerste controlepunt in te stellen of rechtsklik om te " +"voltooien." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Rechtsklik om het eerste controlepunt in te stellen of linksklik om te " +"voltooien." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Linksklik om het laatste controlepunt in te stellen of rechtsklik om te " +"voltooien." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Rechtsklik om het laatste controlepunt in te stellen of linksklik om te " +"voltooien." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Lijn" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Tekent lijnen" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Sleep om te tekenen." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Veelhoek" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Tekent polygonen" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Sleep om de eerste lijn te tekenen." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Linksklik om een andere lijn te verslepen of rechtsklik om te voltooien." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Rechtsklik om een andere lijn te verslepen of linksklik om te voltooien." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Verbonden lijnen" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Tekent verbonden lijnen" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellips" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Tekent ellipsen en cirkels" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rechthoek" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Tekent rechthoeken en vierkanten" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Afgeronde rechthoek" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Tekent rechthoeken en vierkanten met afgeronde hoeken" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Sleep met linker muisknop om selectie te maken." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Sleep met linker muisknop om selectie te verplaatsen." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Sleep met linker muisknop om de selectie te schalen." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selectie: dicht" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selectie: transparant" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selectie: transparantiekleur" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selectie: overeenkomende transparantiekleur" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selectie (ellipsvormig)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Maakt een ovaal- of cirkelvormige selectie" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selectie (vrije vorm)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Maakt een selectie met een vrije vorm" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selectie (rechthoekig)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Maakt een vierkantvormige selectie" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selectie: verplaatsen" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: vlekken" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Schrijft tekst" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Tekst: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Tekst: Delete" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Tekst: nieuwe regel" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Tekst: schrijven" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Sleep met linker muisknop om tekstvak aan te maken." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Sleep met linker muisknop om tekstvak te verplaatsen." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Tekst: vak verplaatsen" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Sleep met linker muisknop om de grootte van het tekstvak te wijzigen." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Linker muisklik om de cursorpositie te wijzigen." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Tekst: Ondoorzichtige achtergrond" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Tekst: Doorzichtige achtergrond" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Tekst: kleuren omdraaien" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Tekst: voorgrondkleur" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Tekst: achtergrondkleur" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Tekst: lettertype" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Tekst: tekengrootte" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Tekst: vet" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Tekst: cursief" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Tekst: onderstrepen" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Tekst: doorstrepen" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Niet-gezoomde modus - miniatuur" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - miniatuur" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                To configure it, click on the cube.

                " +msgstr "" +"

                Kleurovereenkomst geeft aan in hoeverre de kleuren van " +"verschillende pixels gelijk aan elkaar moeten zijn om door operaties " +"als dezelfde kleur te worden beschouwd.

                Als u dit op iets anders zet " +"dan Exacte overeenkomst kunt u veel effectiever werken met 'dithered' " +"afbeeldingen en foto's. Deze techniek is vergelijkbaar met de functie " +"\"Magic Wand\" die u in andere tekenprogramma's tegenkomt.

                De functie " +"is van toepassing op:

                • Selecties: In de " +"transparantiemodus wordt elke kleur in de selectie die " +"vergelijkbaar is met de achtergrondkleur transparant gemaakt.
                • Vloedvulling: Voor regio's met vergelijkbare -maar niet " +"identieke - gekleurde pixels zal een hogere waarde meer pixels inkleuren.
                • Kleurwisser: elke pixel waarvan de kleur vergelijkbaar " +"is met de voorgrondkleur zal worden vervangen met de achtergrondkleur.
                • Automatisch bijsnijden en Interne rand verwijderen: " +"Voor randen met vergelijkbare - maar niet identieke - zal een hogere " +"instelling eerder de complete rand verwijderen.

                Hogere " +"instellingen betekenen dat de operaties een groter bereik aan kleuren als " +"voldoende vergelijkbaar zal beschouwen om ze als gelijk te " +"bestempelen.

                Echter, als het bereik te groot is kan het gebeuren dat " +"pixels gewijzigd worden waarvan u de kleur niet als gelijk beschouwd (bijv. " +"de vloedvulling kleurt pixels die u niet wilt inkleuren). Verlaag in " +"zo'n geval de instelling.

                Om de instelling te configureren, klik op de " +"kubus.

                " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                " +msgstr "" +"

                Kleurovereenkomst geeft aan in hoeverre de kleuren van " +"verschillende pixels gelijk aan elkaar moeten zijn om door operaties " +"als dezelfde kleur te worden beschouwd.

                Als u dit op iets anders zet " +"dan Exacte overeenkomst kunt u veel effectiever werken met 'dithered' " +"afbeeldingen en foto's. Deze techniek is vergelijkbaar met de functie " +"\"Magic Wand\" die u in andere tekenprogramma's tegenkomt.

                De functie " +"is van toepassing op:

                • Selecties: In de " +"transparantiemodus wordt elke kleur in de selectie die " +"vergelijkbaar is met de achtergrondkleur transparant gemaakt.
                • Vloedvulling: Voor regio's met vergelijkbare -maar niet " +"identieke - gekleurde pixels zal een hogere waarde meer pixels inkleuren.
                • Kleurwisser: elke pixel waarvan de kleur vergelijkbaar " +"is met de voorgrondkleur zal worden vervangen met de achtergrondkleur.
                • Automatisch bijsnijden en Interne rand verwijderen: " +"Voor randen met vergelijkbare - maar niet identieke - zal een hogere " +"instelling eerder de complete rand verwijderen.

                Hogere " +"instellingen betekenen dat de operaties een groter bereik aan kleuren als " +"voldoende vergelijkbaar zal beschouwen om ze als gelijk te " +"bestempelen.

                Echter, als het bereik te groot is kan het gebeuren dat " +"pixels gewijzigd worden waarvan u de kleur niet als gelijk beschouwd (bijv. " +"de vloedvulling kleurt pixels die u niet wilt inkleuren). Verlaag in " +"zo'n geval de instelling.

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                Color Similarity: %1%

                Click to configure.

                " +msgstr "" +"

                Kleurovereenkomst: %1 %

                Klik om in te stellen.

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                Color Similarity: Exact Match

                Click to configure." +msgstr "" +"

                Kleurovereenkomst: exact.

                Klik om in te stellen." + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Helderheid:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Her&stellen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Hers&tellen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanalen:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Allemaal" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rood" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Groen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blauw" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "&Alle waarden herstellen" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Instellingen" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Hoeveelheid:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "I&nschakelen" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Kleuren" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tint:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Verzadiging:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Waarde:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rood" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Groen" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blauw" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Allemaal" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanalen" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monochroom" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nochroom (diffuus)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 k&leuren" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 kleu&ren (diffuus)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bits kleuren" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduceren naar" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granulariteit:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                To change the color of a color cell itself, double-click on it.

                You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                " +msgstr "" +"

                Om de voorgrondkleur te selecteren die gereedschappen gebruiken voor " +"het tekenen, linkskik op een gevuld kleurvakje. Rechtsklik om de " +"achtergrondkleur te selecteren.

                Om de kleur in het kleurvakje zelf te " +"wijzigen, dubbelklik erop.

                U kunt ook de kleur van een kleurvakje " +"verwisselen met die van een ander vakje door de kleur te slepen van het ene " +"vakje naar het andere. En als u de Ctrl-toets ingedrukt houdt zal de " +"kleur van het vakje worden overschreven in plaats van omgewisseld met de " +"kleur van het andere vakje.

                " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Conver&teren naar:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kwali&teit:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Voor&beeld" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monochroom" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monochroom (diffuus)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 kleuren" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 kleuren (diffuus)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bits kleuren" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Afbeeldin&gspositie" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Midden van de pa&gina" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&Linksboven in de pagina" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparant" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Standaardwaarden van KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Kleuren: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Kleuren: %1 [gewijzigd]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cirkel" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Vierkant" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Slash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Backslash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Geen opvulling" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Vullen met achtergrondkleur" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Vullen met voorgrondkleur" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Dekking" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Een document genaamd \"%1\" bestaat al.\n" +#~ "Wilt u het overschrijven?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Een kleurpalet genaamd \"%1\" bestaat al.\n" +#~ "Wilt u het overschrijven?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Als u het zoomniveau instelt op een waarde die geen meervoud is van 100%, " +#~ "dan kan dat resulteren in niet-precieze bewerkingen en " +#~ "weergaveproblemen.\n" +#~ "Wilt uw het zoomniveau toch instellen op %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Zoomniveau instellen op %1%" + +#~ msgid "None" +#~ msgstr "Geen" + +#~ msgid "" +#~ "

                Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                Are you sure want to resize the image?

                " +#~ msgstr "" +#~ "

                De afbeeldinggrootte wijzigen naar %1x%2 kan een grote " +#~ "hoeveelheid geheugen in beslag nemen. Dit kan de reactiesnelheid van het " +#~ "systeem vertragen en geheugenproblemen bij andere toepassingen.

                Wilt u de afbeeldinggrootte toch wijzigen?

                " + +#~ msgid "Overwrite" +#~ msgstr "Overschrijven" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "\"%1\" kan niet worden geopend. Onbekend bestandstype." + +#~ msgid "Save Preview" +#~ msgstr "Voorbeeld opslaan" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Bezoek voor ondersteuning de website." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "De plug-in die de dialoog voor de scanner levert is niet gevonden.\n" +#~ "Dit betekent meestal dat het pakket dat ksaneplugin levert niet is " +#~ "geïnstalleerd." + +#~ msgid "No Scanning Support" +#~ msgstr "Geen scannerondersteuning" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Ondersteuning voor scanners is niet geïnstalleerd." + +#~ msgid "" +#~ "

                KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

                This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

                " +#~ msgstr "" +#~ "

                KolourPaint kan de inhoud van het klembord niet plakken omdat de " +#~ "gegevens plotseling verdwenen zijn.

                Dit gebeurt meestal wanneer de " +#~ "toepassing die verantwoordelijk is voor het klembord werd afgesloten." + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "&Schermafdrukken ophalen" + +#~ msgid "" +#~ "

                To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

                You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

                Alternatively, you may try the application KSnapshot.

                " +#~ msgstr "" +#~ "

                Om een schermafdruk op te halen, klik op %1. De schermafdruk " +#~ "zal op het klembord worden geplaatst, van waaruit u ze kunt plakken in " +#~ "KolourPaint.

                U kunt de sneltoets instellen in de KDE-" +#~ "configuratiemodule Sneltoetsen.

                Daarnaast kunt u gebruik maken van het programma KSnapshot.

                " + +#~ msgid "" +#~ "

                You do not appear to be running KDE.

                Once you have loaded KDE:" +#~ "

                To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

                Alternatively, you may try the " +#~ "application KSnapshot.

                " +#~ msgstr "" +#~ "

                Het lijkt erop dat u geen KDE gebruikt.

                Als u KDE hebt geladen: " +#~ "

                Om een schermafdruk op te halen, klik op %1. De " +#~ "schermafdruk zal op het klembord worden geplaatst, van waaruit u ze kunt " +#~ "plakken in KolourPaint.

                Daarnaast kunt u gebruik " +#~ "maken van het programma KSnapshot.

                " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Als bureaub&ladachtergrond (gecentreerd)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Als bureaubladachtergrond (&tegels)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Voordat u de afbeelding kunt gebruiken als bureaubladachtergrond dient u " +#~ "deze op te slaan als een lokaal bestand.\n" +#~ "Wilt u dat nu doen?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Voordat u de afbeelding kunt gebruiken als bureaubladachtergrond dient u " +#~ "deze op te slaan.\n" +#~ "Wilt u dat nu doen?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "De bureaubladachtergrond kan niet worden gewijzigd." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Selectie spiegelen" + +#~ msgid "Flip Image" +#~ msgstr "Afbeelding spiegelen" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Verticaal (ondersteboven)" + +#~ msgid "&Horizontal" +#~ msgstr "&Horizontaal" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Verlies van kleur- en transparantie-informatie" + +#~ msgid "Loss of Color Information" +#~ msgstr "Verlies van kleurinformatie" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Verlies van transparantie-informatie" + +#~ msgid "" +#~ "

                KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

                To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

                " +#~ msgstr "" +#~ "

                KolourPaint biedt geen ondersteuning voor de huidige schermdiepte " +#~ "van %1bpp. KolourPaint zal proberen om op te starten maar kan " +#~ "onbetrouwbaar reageren.

                Om dit te voorkomen, wijzig uw schermdiepte " +#~ "in 24bpp en herstart KolourPaint.

                " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Niet-ondersteunde schermmodus" + +#~ msgid "" +#~ "

                This effect does not support the current screen depth of %1bpp.

                To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

                " +#~ msgstr "" +#~ "

                Dit effect biedt geen ondersteuning voor de huidige schermdiepte " +#~ "van %1bpp

                Om dit te voorkomen, wijzig uw schermdiepte in 24bpp en " +#~ "herstart KolourPaint.

                " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Er kan niet worden gescand. Onvoldoende geheugen." + +#~ msgid "Cannot Scan" +#~ msgstr "Kan niet scannen" + +#~ msgid "&Flip..." +#~ msgstr "Om&keren..." + +#~ msgid "" +#~ "

                The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                If you save this image, any color loss will " +#~ "become permanent.

                To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


                It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

                If you save " +#~ "this image, this loss of translucency will become permanent.

                " +#~ msgstr "" +#~ "

                De afbeelding die u hebt geplakt heeft mogelijk meer kleuren dan " +#~ "uw scherminstellingen. Om het te kunnen weergeven zal enige " +#~ "kleurinformatie mogelijk worden verwijderd.

                Als u deze " +#~ "afbeelding opslaat zal het verlies aan kleurinformatie permanent worden.

                Om dit te voorkomen, verhoog uw schermdiepte tot tenminste %1bpp " +#~ "en start KolourPaint opnieuw op.


                De afbeelding bevat " +#~ "bovendien transparante onderdelen die niet volledig worden ondersteund. " +#~ "Het transparantiemasker van deze onderdelen zal worden ingesteld op 1-bit." +#~ "

                Als u deze afbeelding opslaat zal het verlies aan " +#~ "transparantiegegevens permanent worden.

                " + +#~ msgid "" +#~ "

                The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                If you save this image, any color loss will " +#~ "become permanent.

                To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

                " +#~ msgstr "" +#~ "

                De afbeelding die u hebt geplakt heeft mogelijk meer kleuren dan " +#~ "uw scherminstellingen. Om het te kunnen weergeven zal enige " +#~ "kleurinformatie mogelijk worden verwijderd.

                Als u deze " +#~ "afbeelding opslaat zal het verlies aan kleurinformatie permanent worden.

                Om dit te voorkomen, verhoog uw schermdiepte tot tenminste %1bpp " +#~ "en start KolourPaint opnieuw op.

                " + +#~ msgid "" +#~ "

                The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                If you save this image, this loss of " +#~ "translucency will become permanent.

                " +#~ msgstr "" +#~ "

                De afbeelding die u hebt geplakt bevat transparante onderdelen die " +#~ "niet volledig worden ondersteund. De transparantiemasker van deze " +#~ "onderdelen zal worden ingesteld op 1-bit.

                Als u deze afbeelding " +#~ "opslaat zal het verlies aan transparantiegegevens permanent worden." + +#~ msgid "

                There is nothing in the clipboard to paste.

                " +#~ msgstr "

                Het klembord bevat geen gegevens om te plakken.

                " + +#~ msgid "" +#~ "

                The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                If you save this image, any color loss will become " +#~ "permanent.

                To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


                It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

                If you save this " +#~ "image, this loss of translucency will become permanent.

                " +#~ msgstr "" +#~ "

                De afbeelding \"%1\" heeft mogelijk meer kleuren dan uw " +#~ "scherminstellingen. Om het te kunnen weergeven zal enige kleurinformatie " +#~ "mogelijk worden verwijderd.

                Als u deze afbeelding opslaat zal " +#~ "het verlies aan kleurinformatie permanent worden.

                Om dit te " +#~ "voorkomen, verhoog uw schermdiepte tot tenminste %2bpp en start " +#~ "KolourPaint opnieuw op.


                De afbeelding bevat bovendien " +#~ "transparante onderdelen die niet volledig worden ondersteund. Het " +#~ "transparantiemasker van deze onderdelen zal worden ingesteld op 1-bit.

                Als u deze afbeelding opslaat zal het verlies aan " +#~ "transparantiegegevens permanent worden.

                " + +#~ msgid "" +#~ "

                The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                If you save this image, any color loss will become " +#~ "permanent.

                To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

                " +#~ msgstr "" +#~ "

                De afbeelding \"%1\" heeft mogelijk meer kleuren dan uw " +#~ "scherminstellingen. Om het te kunnen weergeven zal enige kleurinformatie " +#~ "mogelijk worden verwijderd.

                Als u deze afbeelding opslaat zal " +#~ "het verlies aan kleurinformatie permanent worden.

                Om dit te " +#~ "voorkomen, verhoog uw schermdiepte tot tenminste %2bpp en start " +#~ "KolourPaint opnieuw op.

                " + +#~ msgid "" +#~ "

                The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                If you save this image, this loss of " +#~ "translucency will become permanent.

                " +#~ msgstr "" +#~ "

                De afbeelding \"%1\" bevat transparante onderdelen die niet " +#~ "volledig worden ondersteund. Het transparantiemasker van deze onderdelen " +#~ "zal worden ingesteld op 1-bit.

                Als u deze afbeelding opslaat zal " +#~ "het verlies aan transparantiegegevens permanent worden.

                " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "\"%1\" kan niet worden geopend. Onvoldoende geheugen." + +#~ msgid "Scanning Support" +#~ msgstr "Ondersteuning voor scanners" diff --git a/po/nn/kolourpaint.po b/po/nn/kolourpaint.po new file mode 100644 index 0000000..066e219 --- /dev/null +++ b/po/nn/kolourpaint.po @@ -0,0 +1,2727 @@ +# Translation of kolourpaint to Norwegian Nynorsk +# +# Eirik U. Birkeland , 2008, 2009. +# Karl Ove Hufthammer , 2008, 2013, 2016, 2017, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-07-27 20:43+0200\n" +"Last-Translator: Karl Ove Hufthammer \n" +"Language-Team: Norwegian Nynorsk \n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 22.04.3\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Eirik U. Birkeland,Karl Ove Hufthammer" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "eirbir@gmail.com,karl@huftis.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balanse" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Gjer mjukare" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Gjer skarpare" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Slett" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Utval: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Preg" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Flat ut" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduser til gråtonar" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Farge, metting, verdi" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Snu om fargane" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Snu om" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduser til monokrom (utjamna)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduser til monokrom" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduser til 256 fargar (utjamna)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduser til 256 fargar" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogramutjamnar" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Spegelvend" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Spegelvend vassrett og loddrett" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Spegelvend vassrett" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Spegelvend loddrett" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Tekst: Endra storleik på boks" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Utval: Skaler" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Utval: Jamn skalering" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Endra storleik" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skaler" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Jamn skalering" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Drei" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Vri" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Angra: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Angra" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Gjer om: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Gjer om" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Angra: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Angra" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Gjer om: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Gjer om" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 element til" +msgstr[1] "%1 element til" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Fargeplukkar" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Fyll" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Fleire bileteffektar (utval)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Fleire bileteffektar" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reduser fargar" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Gjer mjuk / skarp" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumenteigenskapar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Punkt per tomme (p.p.t./DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Ikkje oppgjeven" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " × " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Vassrett:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Loddrett:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Punkt per tomme (p.p.t. – engelsk: DPI) er kor mange pikslar " +"av biletet som skal skrivast ut på éin tomme (2,54 cm).

                Dess høgare p." +"p.t.-verdien til biletet er, dess mindre vert biletet på utskrifta. Merk at " +"skrivaren truleg ikkje kan levera høgkvalitetsutskrift dersom du aukar dette " +"til meir enn 300 eller 600 DPI, avhengig av skrivaren.

                Dersom du vil " +"skriva ut eit bilete slik at det er like stort som det vert vist på " +"skjermen, så set p.p.t.-verdien til biletet lik p.p.t.-verdien til skjermen." +"

                Dersom nokre av p.p.t.-verdiane er Ikkje oppgjeven, vert " +"biletet også skrive ut i same storleik som på skjermen.

                Det er ikkje " +"alle biletformat som støttar p.p.t.-verdiar. Verdiane som er oppgjevne her, " +"vert ikkje lagra dersom biletformatet ikkje støttar det.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Forskyving" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                The Offset is the relative position where this image should be " +"placed, compared to other images.

                Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                " +msgstr "" +"

                Forskyving er den relative plasseringa av dette biletet i høve " +"til andre bilete.

                Det er ikkje alle biletformat som støttar " +"forskyving. Verdiane som er oppgjevne her, vert ikkje lagra dersom " +"biletformatet ikkje støttar det.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Tekstfelt" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Legg til rad" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Slett rad" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Nullstill" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Tekstfelt inneheld ekstra informasjon om biletet. Dette er " +"truleg eit kommentarfelt der du fritt kan skriva inn tekst.

                Likevel er " +"dette formatspesifikt, så det kan henda at det er opplysningar som " +"datamaskina brukar, og som du ikkje bør endra, men dette er sjeldant.

                Det er ikkje alle biletformat som støttar tekstfelt. Tekstfelta " +"vert ikkje lagra dersom biletformatet du brukar ikkje støttar dei.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Nøkkel" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Verdi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Tekstverdien «%1» på linje %2 treng ein nøkkel." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Alle tekstnøklar må vera unike. Tekstnøkkelen «%1» på linje %2 og %3 er like." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Ugyldige tekstfelt" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Storleikar" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Opphavleg:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 × %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Førehandsvising" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Oppdater" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Endra storleik / skaler" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "U&tfør på:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Heile biletet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Utvalet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Tekstboks" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Handling" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                " +msgstr "" +"
                • Endra storleik: Storleiken på biletet vert auka ved å " +"leggja til nye område til høgre og/eller på botnen (fylte med " +"bakgrunnsfargen), eller minka ved å kutta det til høgre og/eller på botnen.
                • Skaler: Biletet vert utvida ved kopiering av pikslar, eller " +"forminska ved å ta vekk pikslar.
                • Skaler jamt: Dette er det " +"same som Skaler, bortsett frå at det blandar nabopikslar slik at " +"biletet ser jamnare og betre ut.
                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Endra storleik" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skaler" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Skaler ja&mt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Breidd:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Høgd:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "×" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Ny:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Prosent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr " %" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Hald &fast på høgd/breidd-forhold" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to resize the text box?

                " +msgstr "" +"

                Å endra storleik på tekstboksen til %1 × %2 kan bruka mykje minne. " +"Dette kan gjera til at systemet svarar seinare og at andre program får " +"ressursproblem.

                Er du sikker på at du vil endra storleiken på " +"tekstboksen?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Vil du endra storleik på tekstboksen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "&Endra storleik på tekstboksen" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to resize the image?

                " +msgstr "" +"

                Å endra storleik på biletet til %1 × %2 kan bruka mykje minne. Dette " +"kan gjera til at systemet svarar seinare og at andre program får " +"ressursproblem.

                Er du sikker på at du vil endra storleiken på biletet?" +"

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Vil du endra storleik på biletet?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&Endra storleik på biletet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to scale the image?

                " +msgstr "" +"

                Å skalera biletet til %1 × %2 kan bruka mykje minne. Dette kan gjera " +"til at systemet svarar seinare og at andre program får ressursproblem.

                Er du sikker på at du vil skalera biletet?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Vil du skalera biletet?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Skal&er biletet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to scale the selection?

                " +msgstr "" +"

                Å skalera utvalet til %1 × %2 kan bruka mykje minne. Dette kan gjera " +"til at systemet svarar seinare og at andre program får ressursproblem.

                Er du sikker på at du vil skalera utvalet?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Vil du skalera utvalet?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Skal&er utvalet" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the image?" +msgstr "" +"

                Å skalera biletet jamt til %1 × %2 kan bruka mykje minne. Dette kan " +"gjera til at systemet svarar seinare og at andre program får ressursproblem." +"

                Er du sikker på at du vil skalera biletet jamt?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Vil du skalera biletet jamt?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Skal&er biletet jamt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the selection?" +"

                " +msgstr "" +"

                Å skalera utvalet jamt til %1 × %2 kan bruka mykje minne. Dette kan " +"gjera til at systemet svarar seinare og at andre program får ressursproblem." +"

                Er du sikker på at du vil skalera utvalet jamt?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Vil du skalera utvalet jamt?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Skal&er utvalet jamt" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Drei utvalet" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Drei biletet" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Etter dreiing:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Retning" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Mot klokka" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "M&ed klokka" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Vinkel" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &gradar" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 gra&dar" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 grad&ar" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Tilpassa:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "gradar" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to rotate the selection?

                " +msgstr "" +"

                Å dreia utvalet til %1 × %2 kan bruka mykje minne. Dette kan gjera " +"til at systemet svarar seinare og at andre program får ressursproblem.

                Er du sikker på at du vil dreia utvalet?

                " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Vil du dreia utvalet?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "&Drei utvalet" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to rotate the image?

                " +msgstr "" +"

                Å dreia biletet til %1 × %2 kan bruka mykje minne. Dette kan gjera " +"til at systemet svarar seinare og at andre program får ressursproblem.

                Er du sikker på at du vil dreia biletet?

                " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Vil du dreia biletet?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Dr&ei biletet" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Vri utvalet" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Vri biletet" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Etter vriding:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Vassrett:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Loddrett:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to skew the selection?

                " +msgstr "" +"

                Å vri utvalet til %1 × %2 kan bruka mykje minne. Dette kan gjera til " +"at systemet svarar seinare og at andre program får ressursproblem.

                Er " +"du sikker på at du vil vri utvalet?

                " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Vil du vri utvalet?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Vri &utvalet" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to skew the image?

                " +msgstr "" +"

                Å vri biletet til %1 × %2 kan bruka mykje minne. Dette kan gjera til " +"at systemet svarar seinare og at andre program får ressursproblem.

                Er " +"du sikker på at du vil vri biletet?

                " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Vil du vri biletet?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Vri &biletet" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Fargelikskap" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Avstand på &RGB-fargeterningen" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Nøyaktig lik" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Kva er fargelikskap?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Lagra førehandsvising" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (om lag %2 %)" +msgstr[1] "%1 byte (om lag %2 %)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Klarte ikkje opna «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Klarte ikkje opna «%1». Biletformatet er ikkje støtta.\n" +"Fila kan vera øydelagd." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Klarte ikkje lagra biletet. Manglar informasjon." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Nettadresse: %1\n" +"MIME-type: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Intern feil" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                The %1 format may not be able to preserve all of the image's " +"color information.

                Are you sure you want to save in this format?

                " +msgstr "" +"

                Det er ikkje sikkert at formatet %1 kan ta vare på all " +"fargeinformasjonen i biletet.

                Er du sikker på at du vil lagra i dette " +"formatet?

                " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Filformat med tap" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                Are " +"you sure you want to save at this color depth?

                " +msgstr "" +"

                Dersom biletet vert lagra med den låge fargedjupna %1-bit, kan " +"fargeinformasjon gå tapt. Eventuell gjennomsikt kan også forsvinna. Er du " +"sikker på at du vil lagra med denne fargedjupna?

                " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Låg fargedjupn" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Klarte ikkje lagra biletet. Fekk ikkje laga mellombels fil." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Klarte ikkje lagra som «%1»: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Feil ved lagring av bilete" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Klarte ikkje lagra biletet. Feil ved opplasting." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Fjern indre &kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Fjern indre kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Klipp til aut&omatisk" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Klipp til automatisk" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint kan ikkje fjerna den indre kanten til utvalet, då han ikkje " +"vart funnen." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Kan ikkje fjerna indre kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint kan ikkje klippa til biletet automatisk, då biletkanten ikkje " +"vart funnen." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Kan ikkje klippa til automatisk" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Bruk som bilete" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Utval: Lag" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Teikneprogram frå KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Grunnleggjar av prosjektet" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Sjefetterforskar" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Støtte for skanning, gjennomsikt og er noverande vedlikehaldar" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikon" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Støtte for InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Bileteffektar" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Porting til KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Porting til KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Takk til dei mange andre som har hjelpt til med å gjera dette programmet " +"mogleg." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Biletfiler som skal opnast (valfritt)" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Vis MIME-typen til alle lesbare biletformat" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vis" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Bilete" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Fargar" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Hovudverktøylinje" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Tekstverktøylinje" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Kontekstmeny for utvalsverktøy" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Rediger" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatyrbilete" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Dra i handtaket for å endra storleiken på biletet." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Endra storleik på biletet: Slepp alle museknappane." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Endra storleik på biletet: Høgreklikk for å avbryta." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Klarte ikkje opna fargepaletten «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Klarte ikkje opna fargepaletten «%1». Formatet er ikkje støtta.\n" +"Fila kan vera øydelagd." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Klarte ikkje opna KDE-fargepaletten «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Klarte ikkje lagra fargepaletten som «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Namnlaus" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Bruk KolourPaint-standard" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Bruk KDE sin" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Opna …" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Las&t om att" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Lagra" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Lagra &som …" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Legg til rad" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Slett siste rad" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Fargeboks" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Fargepaletten «%1» er endra.\n" +"Vil du lagra han?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE-fargepaletten «%1» er endra.\n" +"Vil du lagra han?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Standardfargepaletten er endra.\n" +"Vil du lagra han?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Opna fargepalett" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Fargepaletten «%1» er endra.\n" +"Ved å oppdatera vil du mista alle endringane sidan du sist lagra han.\n" +"Er du sikker på at du vil det?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Oppdater" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE-fargepaletten «%1» er endra.\n" +"Ved å oppdatera vil du mista alle endringane.\n" +"Er du sikker på at du vil det?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Standardfargepaletten er endra.\n" +"Ved å oppdatera vil du mista alle endringane sidan du sist lagra han.\n" +"Er du sikker på at du vil det?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Lagra fargepalett som" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Lim i&nn i nytt vindauge" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Slett utval" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opier til fil …" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Lim inn &frå fil …" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Tekst: Lag boks" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Tekst: Lim inn" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint kan ikkje lima inn innhaldet frå utklippstavla, då formatet " +"er ukjent." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Kan ikkje lima inn" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Tekst: Slett boks" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Utval: Slett" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Tekst: Ferdig" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Utval: Fjern merking" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopier til fil" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Lim inn frå fil" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&ksporter …" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skann …" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Hent skjermbilete" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Eigenskapar" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Las&t om att" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Alle støtta filer (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Opna bilete" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Klarte ikkje opna skannevindauge." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Feil ved skanning" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Forseinking på skjermbilete" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekund" +msgstr[1] " sekund" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Inga forseinking" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Gøym hovudvindauget" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumenteigenskapar" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Lagra bilete som" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Eksporter" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokumentet «%1» er endra.\n" +"Ved å oppdatera vil du mista alle endringar sidan du sist lagra det.\n" +"Er du sikker på at du vil det?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokumentet «%1» er endra.\n" +"Ved å oppdatera vil du mista alle endringar.\n" +"Er du sikker på at du vil det?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Skriv ut bilete" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Du må lagra dette biletet før du sender det.\n" +"Vil du lagra det?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokumentet «%1» er endra.\n" +"Vil du lagra det?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&Endra storleik …" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Bruk som bile&te (klipp til)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Snu opp ned" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "&Spegelvend" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Drei …" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Drei til &venstre" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Drei til &høgre" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Vri …" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reduser til &svart-kvitt (utjamna)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduser til &gråtonar" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Snu om fargane" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Tøm" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Gjer konfidensiell" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Fleire effektar …" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Bilete" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "&Utval" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Vis &sti" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Bruk kantutjamning" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 – %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1 × %2" + +# bit per punkt +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 b.p.p." + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1 %" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Skrifttype" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Skriftstorleik" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Halvfeit" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursiv" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Understreka" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Gjennomstreka" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Førre verktøyval (gruppe 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Neste verktøyval (gruppe 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Førre verktøyval (gruppe 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Neste verktøyval (gruppe 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Teikn ugjennomsiktig" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Teikn med fargelikskap …" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Verktøykasse" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Vis &rutenett" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Vis &miniatyrbilete" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "F&orstørra miniatyrmodus" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Slå på miniaty&rrektangel" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Forstørr/forminsk" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Skann bilete" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Klarte ikkje opna den valde skannaren." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Målarkost" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Teikn med målarkostar med ulike fasongar og storleikar" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Trykk for å teikna prikkar eller dra for å teikna strøk." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Fargeviskelêr" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Erstattar pikslar av framgrunnsfargen med bakgrunnsfargen" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Trykk eller dra for å erstatta pikslar som har framgrunnsfargen." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Viskelêr" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Lèt deg viska ut feil" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Trykk eller dra for å viska." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Slepp alle museknappane." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Blyant" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Teiknar prikkar og frihandsstrøk" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Sprayboks" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Sprayar graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Trykk eller dra for å spraya graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Høgreklikk for å avbryta." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Venstreklikk for å avbryta." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Lèt deg henta ein farge frå biletet" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Trykk for å henta ein farge." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Fyller farge i område av biletet" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Trykk for å fylla eit område med farge." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Forstørr/forminsk" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Forstørrar og forminskar biletet" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Trykk for å forstørra/forminska, eller hald inne venstre museknapp og dra " +"for å forstørra eit spesielt område." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kurve" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Teiknar kurver" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Dra ut start- og sluttpunkta." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Hald inne venstre museknapp og dra for å velja det første styrepunktet, " +"eller høgreklikk for å avslutta." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Hald inne høgre museknapp og dra for å velja det første styrepunktet, eller " +"venstreklikk for å avslutta." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Hald inne venstre museknapp og dra for å velja det siste styrepunktet, eller " +"høgreklikk for å avslutta." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Hald inne høgre museknapp og dra for å velja det siste styrepunktet, eller " +"venstreklikk for å avslutta." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linje" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Teiknar linjer" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Dra for å teikna." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Mangekant" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Teiknar mangekantar" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Dra for å teikna den første linja." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Hald inne venstre museknapp og dra for å teikna ei ny linje, eller " +"høgreklikk for å avslutta." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Hald inne høgre museknapp og dra for å teikna ei ny linje, eller " +"venstreklikk for å avslutta." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Samanhengande linjer" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Teiknar samanhengande linjer" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Teiknar ellipsar og sirklar" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Firkant" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Teiknar rektangel og kvadrat" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Avrunda firkant" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Teiknar rektangel og kvadrat med avrunda hjørne" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Hald inne venstre museknapp og dra for å laga eit utval." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Hald inne venstre museknapp og dra for å flytta utvalet." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Hald inne venstre museknapp og dra for å skalera utvalet." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Utval: Gjer ugjennomsiktig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Utval: Gjer gjennomsiktig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Utval: Farge på gjennomsikt" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Utval: Fargelikskap på gjennomsiktig farge" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Utval (elliptisk)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Lagar eit elliptisk eller sirkulært utval" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Utval (fri form)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Lagar eit utval med fri form." + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Utval (firkanta)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Lagar eit firkanta utval" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Utval: Flytt" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Gni ut" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Skriv tekst" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Tekst: Rettetast" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Tekst: Slett" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Tekst: Linjeskift" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Tekst: Skriv" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Hald inne venstre museknapp og dra for å laga ein tekstboks." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Hald inne venstre museknapp og dra for å flytta tekstboksen." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Tekst: Flytt boksen" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" +"Hald inne venstre museknapp og dra for å endra storleik på tekstboksen." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Venstreklikk for å flytta skrivemerket." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Tekst: Ugjennomsiktig bakgrunn" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Tekst: Gjennomsiktig bakgrunn" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Tekst: Byt fargar" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Tekst: Framgrunnsfarge" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Tekst: Bakgrunnsfarge" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Tekst: Skrifttype" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Tekst: Skriftstorleik" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Tekst: Halvfeit" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Tekst: Kursiv" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Tekst: Understreka" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Tekst: Gjennomstreka" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Ikkje-forstørra modus – miniatyrbilete" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1 % – miniatyrbilete" + +# skip-rule: lest +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                To configure it, click on the cube.

                " +msgstr "" +"

                Fargelikskap er kor like fargane i ulike pikslar må " +"vera for at handlingane skal sjå på dei som same farge.

                Dersom noko " +"anna enn Nøyaktig lik vert valt, kan du arbeida meir effektivt med " +"utjamna bilete og fotografi, på ein måte som liknar på «tryllestaven» i " +"andre biletprogram.

                Denne funksjonen vert brukt i:

                • Utval: når Gjennomsiktig er slått på, vert fargane i " +"utvalet som liknar på bakgrunnsfargen gjorde gjennomsiktige.
                • Fyll: I område som har liknande men ikkje identisk " +"farga pikslar, vil ei høgare innstilling fylla fleire pikslar.
                • Fargeviskelêr: Ein piksel med farge som liknar på " +"framgrunnsfargen, vert bytt ut med bakgrunnsfargen.
                • Klipp til " +"automatisk og Fjern indre kant: For kantar med liknande " +"men ikkje identiske farger vil ei høgare innstilling ha større sjanse til å " +"klippa vekk heile kanten.

                Høgare innstilling tyder at " +"handlingane vil sjå på fleire fargar som like nok til å verta " +"handsama som same farge. Derfor bør innstillinga aukast dersom handlingane " +"over ikkje påverkar pikslar som du synest har like nok fargar.

                Derimot " +"bør innstillinga gjerast lågare dersom handlingane påverkar pikslar du " +"synest er for ulike (for eksempel dersom Fyll teiknar over eit for " +"stort område).

                Trykk på terningen for å setja opp fargelikskap.

                " + +# skip-rule: lest +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                " +msgstr "" +"

                Fargelikskap er kor like fargane i ulike pikslar må " +"vera for at handlingane skal sjå på dei som same farge.

                Dersom noko " +"anna enn Nøyaktig lik vert valt, kan du arbeida meir effektivt med " +"utjamna bilete og fotografi, på ein måte som liknar på «tryllestaven» i " +"andre biletprogram.

                Denne funksjonen vert brukt i:

                • Utval: når Gjennomsiktig er slått på, vert fargane i " +"utvalet som liknar på bakgrunnsfargen gjorde gjennomsiktige.
                • Fyll: I område som har liknande men ikkje identisk " +"farga pikslar, vil ei høgare innstilling fylla fleire pikslar.
                • Fargeviskelêr: Ein piksel med farge som liknar på " +"framgrunnsfargen, vert bytt ut med bakgrunnsfargen.
                • Klipp til " +"automatisk og Fjern indre kant: For kantar med liknande " +"men ikkje identiske farger vil ei høgare innstilling ha større sjanse til å " +"klippa vekk heile kanten.

                Høgare innstilling tyder at " +"handlingane vil sjå på fleire fargar som like nok til å verta " +"handsama som same farge. Derfor bør innstillinga aukast dersom handlingane " +"over ikkje påverkar pikslar som du synest har like nok fargar.

                Derimot " +"bør innstillinga gjerast lågare dersom handlingane påverkar pikslar du " +"synest er for ulike (for eksempel dersom Fyll teiknar over eit for " +"stort område).

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                Color Similarity: %1%

                Click to configure.

                " +msgstr "

                Farkelikskap: %1%

                Trykk for å setja opp.

                " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                Color Similarity: Exact Match

                Click to configure." +msgstr "" +"

                Farkelikskap: Nøyaktig lik

                Trykk for å setja opp." + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Lysstyrke:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Null&still" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Nulls&till" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanalar:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Alle" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Raud" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Grøn" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blå" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Nullstill &alle verdiane" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Innstillingar" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Mengd:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Bruk" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Fargar" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "Farge&tone:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Metting:" + +# unreviewed-context +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Verdi:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Raud" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Grøn" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blå" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Alle" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanalar" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Svart-kvitt" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "S&vart-kvitt (utjamna)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &fargar" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 &fargar (utjamna)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bits fargar" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduser til" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Korning:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                To change the color of a color cell itself, double-click on it.

                You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                " +msgstr "" +"

                Venstreklikk på ei celle med farge for å velja framgrunnsfargen " +"verktøya teiknar med. Høgreklikk for å velja bakgrunnsfargen i staden.

                Dobbeltklikk på ei celle for å endra fargen på ho.

                Fargen på ei " +"fylt celle kan bytast ut med ei anna celle med dra-og-slepp. Og viss du held " +"nede «Ctrl»-tasten, vert fargen til målcella overskriven i staden for å byta " +"plass med kjeldecella.

                " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Gjer om &til:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kvali&tet:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Førehandsvising" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Svart-kvitt" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Svart-kvitt (utjamna)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 fargar" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 fargar (utjamna)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bits fargar" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "&Biletplassering" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Midten av sida" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Oppe til &venstre" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Gjennomsiktig" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint-standard" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Fargar: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Fargar: %1 [endra]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1 × 1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Sirkel" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Firkant" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Skråstrek" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Omvend skråstrek" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1 × %2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Ikkje fyll" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Fyll med bakgrunnsfarge" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Fyll med framgrunnsfarge" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Ugjennomsiktig" diff --git a/po/pa/kolourpaint.po b/po/pa/kolourpaint.po new file mode 100644 index 0000000..8c4bc2d --- /dev/null +++ b/po/pa/kolourpaint.po @@ -0,0 +1,2683 @@ +# translation of kolourpaint.po to Punjabi +# Amanpreet Singh Alam , 2004, 2005. +# Amanpreet Singh Alam , 2005. +# A S Alam , 2007, 2009, 2010. +# Amanpreet Singh , 2008, 2012. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2012-07-05 07:22+0530\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi/Panjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "aalam@users.sf.net" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "ਸੰਤੁਲਨ" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "ਕੋਮਲ" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "ਉਘੜਵਾਂ" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "ਸਾਫ਼ ਕਰੋ" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "ਚੋਣ: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "ਝੱਗ" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "ਸਮਤਲ" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "ਗਰੇ-ਸਕੇਲ ਰੰਗ ਤੱਕ ਘਟਾਓ" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "ਉਲਟ ਰੰਗ" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "ਉਲਟ" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "ਇਕਹੇਰੇ ਰੰਗ ਤੱਕ ਘਟਾਓ (ਅਸਥਿਰ)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "ਇਕਹੇਰੇ ਰੰਗ ਤੱਕ ਘਟਾਓ" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "256 ਰੰਗਾਂ ਤੱਕ ਘਟਾਉ (ਅਸਥਿਰ)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "256 ਰੰਗਾਂ ਤੱਕ ਘਟਾਉ" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "ਝਟਕੋ" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "ਹਰੀਜ਼ਟਲ ਅਤੇ ਵਰਟੀਕਲ ਝਟਕੋ" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "ਹਰੀਜ਼ਟਲ ਝਟਕੋ" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "ਵਰਟੀਕਲ ਝਟਕੋ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "ਪਾਠ: ਮੁੜ-ਅਕਾਰ ਬਕਸਾ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "ਚੋਣ: ਪੈਮਾਨਾ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "ਚੋਣ: ਕੋਮਲ ਪੈਮਾਨਾ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "ਮੁੜ-ਆਕਾਰ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "ਪੈਮਾਨਾ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "ਕੋਮਲ ਪੈਮਾਨਾ" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "ਘੁੰਮਾਉ" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "ਤਿਰਛਾ" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "ਵਾਪਸ(&U): %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "ਵਾਪਸ(&U)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "ਮੁੜ-ਵਾਪਸ(&R): %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "ਪਰਤਾਓ(&R)" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "ਵਾਪਸ: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "ਵਾਪਸ" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "ਪਰਤਾਓ: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "ਪਰਤਾਓ" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 ਹੋਰ ਇਕਾਈ" +msgstr[1] "%1 ਹੋਰ ਇਕਾਈਆਂ" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "ਰੰਗ ਚੋਣਕਾਰ" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "ਫਲੱਡ ਫਿਲ" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, fuzzy, kde-format +#| msgid "More Image Effects (Selection)" +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "ਹੋਰ ਚਿੱਤਰ ਪ੍ਰਭਾਵ (ਚੋਣ)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "ਹੋਰ ਚਿੱਤਰ ਪ੍ਰਭਾਵ" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "ਪ੍ਰਭਾਵ(&E):" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "ਰੰਗ ਘਟਾਓ" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "ਕੋਮਲ ਤੇ ਉਘੜਵਾਂ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "ਡੌਕੂਮੈਂਟ ਵਿਸ਼ੇਸ਼ਤਾ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "ਡਾਟ ਪ੍ਰਤੀ ਇੰਚ (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "ਅਣ-ਦਿੱਸੀ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "ਹਰੀਜ਼ਟਲ:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "ਵਰਟੀਕਲ:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "ਆਫਸੈੱਟ(&f)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                The Offset is the relative position where this image should be " +"placed, compared to other images.

                Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "ਟੈਕਸਟ ਫੀਲਡ(&T)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "ਕਤਾਰ ਸ਼ਾਮਲ(&A)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "ਕਤਾਰ ਹਟਾਓ(&D)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "ਰੀ-ਸੈੱਟ(&R)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "ਕੁੰਜੀ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "ਮੁੱਲ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "ਗਲਤ ਟੈਕਸਟ ਫੀਲਡ" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "ਮਾਪ" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "ਅਸਲੀ:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "ਝਲਕ" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "ਅੱਪਡੇਟ(&U)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "ਮੁੜ-ਸਾਇਜ਼ / ਸਕੇਲ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "ਇਸ ਤੇ ਕਾਰਵਾਈ(&t):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "ਸਾਰਾ ਚਿੱਤਰ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "ਚੋਣ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "ਟੈਕਸਟ ਬਾਕਸ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "ਓਪਰੇਸ਼ਨ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "ਰੀ-ਸਾਇਜ਼(&R)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "ਸਕੇਲ(&S)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "ਕੋਮਲ ਪੈਮਾਨਾ(&m)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "ਚੌੜਾਈ:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "ਉਚਾਈ:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "ਨਵਾਂ(&N):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "ਫੀ-ਸਦੀ(&P):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "ਅਕਾਰ ਰੇਸ਼ੋ ਰੱਖੋ(&a)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to resize the text box?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, fuzzy, kde-format +#| msgid "Resize Text Box?" +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "ਟੈਕਸਟ ਬਾਕਸ ਮੁੜ-ਸਾਇਜ਼?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "ਟੈਕਸਟ ਬਾਕਸ ਮੁੜ-ਸਾਇਜ਼(&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to resize the image?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "ਚਿੱਤਰ ਮੁੜ-ਅਕਾਰ ਕਰਨਾ ਹੈ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "ਚਿੱਤਰ ਮੁੜ-ਅਕਾਰ(&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to scale the image?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "ਚਿੱਤਰ ਸਕੇਲ ਕਰਨਾ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "ਚਿੱਤਰ ਸਕੇਲ(&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to scale the selection?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Scale Selection?" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "ਕੀ ਚੋਣ ਸਕੇਲ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "ਚੋਣ ਸਕੇਲ(&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, fuzzy, kde-format +#| msgid "Smooth Scale Image?" +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "ਕੋਮਲ ਚਿੱਤਰ ਸਕੇਲ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "ਕੋਮਲ ਚਿੱਤਰ ਸਕੇਲ(&e)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the selection?" +"

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, fuzzy, kde-format +#| msgid "Smooth Scale Selection?" +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "ਕੀ ਚੋਣ ਦਾ ਕੋਮਲ ਸਕੇਲ ਕਰਨੀ ਹੈ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "ਚੋਣ ਲਈ ਕੋਮਲ ਸਕੇਲ(&e)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "ਚੋਣ ਘੁੰਮਾਓ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "ਚਿੱਤਰ ਘੁੰਮਾਓ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "ਘੁੰਮਾਉ ਉਪਰੰਤ:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "ਦਿਸ਼ਾ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "ਖੱਬੇ ਦਾਅ(&n)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "ਸੱਜੇ ਦਾਅ(&l)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "ਕੋਣ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 ਡਿਗਰੀ(&d)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 ਡਿਗਰੀ(&e)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 ਡਿਗਰੀ(&g)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "ਕਸਟਮ(&u):" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "ਡਿਗਰੀ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to rotate the selection?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "ਚੋਣ ਘੁੰਮਾਉਣੀ ਹੈ?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "ਚੋਣ ਘੁੰਮਾਓ(&e)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to rotate the image?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "ਕੀ ਚਿੱਤਰ ਘੁੰਮਾਉਣਾ ਹੈ?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "ਚਿੱਤਰ ਘੁੰਮਾਓ(&e)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "ਸਕਿਉ ਚੋਣ" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "ਸਕਿਉ ਚਿੱਤਰ" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "ਸਕਿਉ ਬਾਅਦ:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "ਹਰੀਜ਼ਟਲ(&H):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "ਵਰਟੀਕਲ(&V):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to skew the selection?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "ਕੀ ਚੋਣ ਸਕਿਉ?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "ਚੋਣ ਸਕਿਉ(&e)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to skew the image?

                " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "ਕੀ ਚਿੱਤਰ ਸਕਿਉ?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "ਚਿੱਤਰ ਸਕਿਉ(&e)" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "ਰੰਗ ਸਿਮਿਲੇਰਟੀ" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB ਰੰਗ ਘਣ ਦੂਰੀ" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "ਸਹੀ ਮਿਲਦਾ" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "ਰੰਗ ਸਿਮੀਰੇਲਟੀ ਕੀ ਹੈ?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "ਝਲਕ ਸੰਭਾਲੋ" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 ਬਾਇਟ (ਲਗਭੱਗ %2%)" +msgstr[1] "%1 ਬਾਇਟ (ਲਗਭੱਗ %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "\"%1\" ਨੂੰ ਖੋਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" ਨੂੰ ਖੋਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ - ਨਾ-ਸਹਾਇਕ ਚਿੱਤਰ ਫਾਰਮੈਟ ਹੈ।\n" +"ਫਾਇਲ ਖਰਾਬ ਹੋ ਸਕਦੀ ਹੈ।" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "ਚਿੱਤਰ ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ - ਲੋੜੀਦੀ ਜਾਣਕਾਰੀ ਨਹੀਂ ਹੈ।" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mime ਕਿਸਮ: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "ਅੰਦਰੂਨੀ ਗਲਤੀ" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                The %1 format may not be able to preserve all of the image's " +"color information.

                Are you sure you want to save in this format?

                " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "ਲੂਜੀ ਫਾਇਲ ਫਾਰਮੈਟ" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                Are " +"you sure you want to save at this color depth?

                " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "ਘੱਟ ਰੰਗ ਡੂੰਘਾਈ" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "\"%1\" ਦੇ ਤੌਰ ਤੇ ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "ਚਿੱਤਰ ਨੂੰ ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ - ਅਪਲੋਡ ਅਸਫਲ ਹੈ।" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ ਹਟਾਓ(&o)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ ਹਟਾਓ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "ਸਵੈ-ਤਿਆਰ(&o)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "ਸਵੈ-ਤਿਆਰ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, fuzzy, kde-format +#| msgid "Cannot Remove Internal Border" +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "ਅੰਦਰੂਨੀ ਹਾਸ਼ੀਆ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "ਕਲਰਪੇਂਟ ਖੁਦ ਹੀ ਚਿੱਤਰ ਨੂੰ ਤਿਆਰ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ, ਕਿਉਕਿ ਇਸ ਦਾ ਹਾਸ਼ੀਆ ਸਥਿਰ ਨਹੀਂ ਹੈ।" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, fuzzy, kde-format +#| msgid "Cannot Autocrop" +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "ਸਵੈ-ਤਿਆਰ ਨਹੀਂ ਹੋ ਸਕਦਾ" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "ਚਿੱਤਰ ਵਾਂਗ ਬਣਾਓ" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "ਚੋਣ: ਬਣਾਓ" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "ਕੇਰੰਗ-ਪੇਂਟ" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "KDE ਲਈ ਪੇਂਟ ਪਰੋਗਰਾਮ" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "ਪਰੋਜੈਕਟ ਫਾਊਂਡਰ" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "ਮੁੱਖ ਖੋਜੀ" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "ਆਈਕਾਨ" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਸਹਿਯੋਗ" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "ਚਿੱਤਰ ਪਰਭਾਵ" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 ਪੋਰਟਿੰਗ" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "KDE 4 ਪੋਰਟਿੰਗ" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "ਖੋਲਣ ਲ਼ਈ ਚਿੱਤਰ ਫਾਇਲ" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "ਵੇਖੋ(&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "ਚਿੱਤਰ(&I)" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "ਰੰਗ(&C)" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "ਮੁੱਖ ਟੂਲਬਾਰ" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "ਟੈਕਸਟ ਟੂਲਬਾਰ" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "ਟੂਲ RMB ਮੇਨੂ ਚੁਣੋ" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "ਸੋਧ(&E)" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +#| msgid "Thumbnail" +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "ਥੰਮਨੇਲ" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "ਚਿੱਤਰ ਮੁੜ-ਅਕਾਰ ਕਰਨ ਲਈ ਖੱਬਾ ਹੈਂਡਲ ਵਰਤੋਂ।" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "ਚਿੱਤਰ ਮੁੜ-ਅਕਾਰ: ਸਭ ਮਾਊਸ ਬਟਨਾਂ ਨੂੰ ਕਰਨ ਦਿਓ।" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "ਚਿੱਤਰ ਮੁੜ-ਅਕਾਰ: ਸੱਜੇ ਬਟਨ ਨਾਲ ਰੱਦ ਕਰੋ।" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "ਪਾਠ" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "\"%1\" ਰੰਗ ਪੈਲਅਟ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" ਰੰਗ ਪੈਲਅਟ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ - ਗ਼ੈਰ-ਸਹਾਇਕ ਫਾਰਮੈਟ ਹੈ।\n" +"ਫਾਇਲ ਨਿਕਾਰਾ ਹੋ ਸਕਦੀ ਹੈ।" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "KDE ਰੰਗ ਪੈਲਅਟ \"%1\" ਨੂੰ ਖੋਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "ਰੰਗ ਪੈਲਅਟ ਨੂੰ \"%1\" ਦੇ ਤੌਰ ਤੇ ਸੰਭਾਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "ਬਿਨਾਂ ਨਾਂ" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "ਕੇਰੰਗ-ਪੇਂਟ ਡਿਫਾਲਟ ਵਰਤੋਂ" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE ਦੇ ਵਰਤੋਂ" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "ਖੋਲ੍ਹੋ(&O)..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "ਮੁੜ-ਲੋਡ(&d)" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "ਸੰਭਾਲੋ(&S)" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "...ਵਜੋਂ ਸੰਭਾਲੋ(&A)" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "ਕਤਾਰ ਸ਼ਾਮਲ" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "ਆਖਰੀ ਕਤਰਾ ਹਟਾਓ" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "ਰੰਗ ਬਾਕਸ" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"ਰੰਗ ਪੈਲਅਟ \"%1\" ਸੋਧਿਆ ਗਿਆ ਹੈ।\n" +"ਕੀ ਤੁਸੀਂ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KED ਰੰਗ ਪੈਲਅਟ \"%1\" ਸੋਧਿਆ ਗਿਆ ਹੈ।\n" +"ਕੀ ਤੁਸੀਂ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, fuzzy, kde-format +#| msgid "" +#| "The default color palette has been modified.\n" +#| "Do you want to save it to a file?" +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"ਡਿਫਾਲਟ ਰੰਗ ਪੈਲਅਟ \"%1\" ਸੋਧਿਆ ਗਿਆ ਹੈ।\n" +"ਕੀ ਤੁਸੀਂ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "ਰੰਗ ਪੈਲਅਟ ਖੋਲ੍ਹੋ" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"ਰੰਗ ਪੈਲਅਟ \"%1\" ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।\n" +"ਰੀ-ਲੋਡ ਕਰਨ ਨਾਲ ਆਖਰੀ ਸੰਭਾਲੀਆਂ ਸਭ ਤਬਦੀਲੀਆਂ ਗੁੰਮ ਜਾਣਗੀਆਂ।\n" +"ਕੀ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "ਮੁੜ-ਲੋਡ(&R)" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE ਰੰਗ ਪੈਲਅਟ \"%1\" ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।\n" +"ਰੀ-ਲੋਡ ਕਰਨ ਨਾਲ ਆਖਰੀ ਸੰਭਾਲੀਆਂ ਸਭ ਤਬਦੀਲੀਆਂ ਗੁੰਮ ਜਾਣਗੀਆਂ।\n" +"ਕੀ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, fuzzy, kde-format +#| msgid "" +#| "The default color palette has been modified.\n" +#| "Reloading will lose all changes.\n" +#| "Are you sure?" +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"ਡਿਫਾਲਟ ਰੰਗ ਪੈਲਅਟ \"%1\" ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।\n" +"ਰੀ-ਲੋਡ ਕਰਨ ਨਾਲ ਆਖਰੀ ਸੰਭਾਲੀਆਂ ਸਭ ਤਬਦੀਲੀਆਂ ਗੁੰਮ ਜਾਣਗੀਆਂ।\n" +"ਕੀ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "ਰੰਗ ਪੈਲਅਟ ਵਾਂਗ ਸੰਭਾਲੋ" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "ਨਵੇਂ ਝਰੋਖੇ ਵਿੱਚ ਚਿਪਕਾਓ(&N)" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "ਚੋਣ ਹਟਾਓ(&D)" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "ਫਾਇਲ਼ ਤੋਂ ਨਕਲ(&o)..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "ਫਾਇਲ ਤੋਂ ਚਿਪਕਾਓ(&F)..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "ਪਾਠ: ਬਕਸਾ ਬਣਾਓ" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "ਪਾਠ: ਚਿਪਕਾਓ" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "ਚਿਪਕਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "ਪਾਠ: ਬਕਸਾ ਹਟਾਓ" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "ਚੋਣ: ਹਟਾਓ" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "ਟੈਕਸਟ: ਮੁਕੰਮਲ" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "ਚੋਣ: ਅਣਚੁਣਿਆ" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "ਫਾਇਲ ਤੋਂ ਕਾਪੀ ਕਰੋ" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "ਫਾਇਲ ਤੋਂ ਚੇਪੋ" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "ਐਕਸਪੋਰਟ(&x)..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "ਸਕੈਨ..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "ਸਕਰੀਨਸ਼ਾਟ ਲਵੋ" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "ਵਿਸ਼ੇਸ਼ਤਾ" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "ਮੁੜ-ਲੋਡ(&d)" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "ਚਿੱਤਰ ਖੋਲ੍ਹੋ" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "ਸਨੈਪਸ਼ਾਟ ਦੇਰੀ" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " ਸਕਿੰਟ" +msgstr[1] " ਸਕਿੰਟ" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "ਕੋਈ ਦੇਰੀ ਨਹੀਂ" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "ਮੁੱਖ ਵਿੰਡੋ ਓਹਲੇ" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "ਡੌਕੂਮੈਂਟ ਵਿਸ਼ੇਸ਼ਤਾ" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "ਚਿੱਤਰ ਇੰਝ ਸੰਭਾਲੋ" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "ਐਕਸਪੋਰਟ" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"ਡੌਕੂਮੈਂਟ \"%1\" ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।\n" +"ਆਖਰੀ ਵਾਰ ਸੰਭਾਲਣ ਤੋਂ ਬਾਅਦ ਦੀਆਂ ਸਭ ਤਬਦੀਲੀਆਂ ਗੁੰਮ ਜਾਣਗੀਆਂ।\n" +"ਕੀ ਤੁਸੀਂ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"ਡੌਕੂਮੈਂਟ \"%1\" ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।\n" +"ਮੁੜ-ਲੋਡ ਕਰਨ ਨਾਲ ਸਭ ਤਬਦੀਲੀਆਂ ਗੁੰਮ ਜਾਣਗੀਆਂ।\n" +"ਕੀ ਤੁਸੀਂ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "ਚਿੱਤਰ ਪਰਿੰਟ ਕਰੋ" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਤੁਸੀਂ ਚਿੱਤਰ ਨੂੰ ਭੇਜੋ, ਤੁਹਾਨੂੰ ਸੰਭਾਲਣਾ ਪਵੇਗਾ।\n" +"ਕੀ ਤੁਸੀਂ ਇਸ ਨੂੰ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"ਡੌਕੂਮੈਂਟ \"%1\" ਵਿੱਚ ਸੋਧ ਕੀਤੀ ਗਈ ਹੈ।\n" +"ਕੀ ਤੁਸੀਂ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "ਰੀ-ਸਾਇਜ਼ / ਸਕੇਲ(&e)..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "ਚਿੱਤਰ ਵਾਂਗ ਸੈੱਟ ਕਰੋ(&t) (ਕਰੋਪ)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, fuzzy, kde-format +#| msgid "&Vertical (upside-down)" +msgid "&Flip (upside down)" +msgstr "ਵਰਟੀਕਲ (ਉੱਤੇ ਤੋਂ ਹੇਠਾਂ)(&V)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "ਮਿਰਰ (ਹਰੀਜ਼ਟਲ)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "ਘੁੰਮਾਉ(&R)..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "ਖੱਬੇ ਘੁੰਮਾਓ(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "ਸੱਜੇ ਘੁੰਮਾਓ(&t)" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "ਸਕਿਉ(&k)..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "ਇਕਹੇਰੇ ਰੰਗ ਤੱਕ ਘਟਾਓ (ਅਸਥਿਰ)(&n)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "ਗਰੇ-ਸਕੇਲ ਤੋਂ ਘਟਾਓ(&G)" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "ਉਲਟ ਰੰਗ(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "ਸਾਫ਼(&l)" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "ਹੋਰ ਪ੍ਰਭਾਵ(&M)..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "ਚਿੱਤਰ(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "ਚੋਣ(&i)" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "ਮਾਰਗ ਵੇਖੋ(&P)" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "ਫੋਂਟ ਫੈਮਲੀ" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "ਫੋਂਟ ਸਾਇਜ਼" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "ਗੂੜੇ" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "ਤਿਰਛੇ" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "ਹੇਠਾਂ ਲਾਈਨ" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "ਵਿੰਨੋ" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "ਪਿਛਲੀ ਟੂਲ ਚੋਣ (ਗਰੁੱਪ #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "ਅੱਗੇ ਟੂਲ ਚੋਣ (ਗਰੁੱਪ #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "ਪਿਛਲੀ ਟੂਲ ਚੋਣ (ਗਰੁੱਪ #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "ਅੱਗੇ ਟੂਲ ਚੋਣ (ਗਰੁੱਪ #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "ਧੁੰਦਲਾਪਨ ਡਰਾਅ ਕਰੋ(&D)" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "ਰੰਗ ਸਿਮਿਲੇਰਟੀ ਨਾਲ ਡਰਾਅ ਕਰੋ..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "ਟੂਲਬਾਕਸ" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "ਗਰਿੱਡ ਵੇਖੋ(&G)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "ਥੰਮਨੇਲ ਵੇਖੋ(&h)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "ਜ਼ੂਮ ਕੀਤਾ ਥੰਮਨੇਲ ਮੋਡ(&m)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "ਥੰਮਨੇਲ ਚਤੁਰਭੁਜ ਯੋਗ ਕਰੋ(&R)" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "ਜ਼ੂਮ(&Z)" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "ਸਾਰਾ ਚਿੱਤਰ" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "ਬੁਰਸ਼" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "ਵੱਖ ਅਕਾਰ ਤੇ ਸ਼ਕਲ ਦੇ ਬੁਰਸ਼ਾਂ ਨਾਲ ਬਣਾਓ" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "ਬਿੰਦੀਆਂ ਬਣਾਉਣ ਲ਼ਈ ਦਬਾਉ ਜਾਂ ਧੱਬੇ ਬਣਾਉਣ ਲ਼ਈ ਸੁੱਟੋ।" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "ਰੰਗ ਰਗੜ" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "ਰਬੜ" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "ਆਪਣੀ ਗਲਤੀਆਂ ਮਿਟਾਓ" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "ਮਿਟਾਉਣ ਲ਼ਈ ਦਬਾਉ ਜਾਂ ਸੁੱਟੋ।" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "ਸਭ ਮਾਊਸ ਦੇ ਬਟਨ ਨੂੰ ਹੀ ਕਰਨ ਦਿਓ।" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "ਪੈਨ" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "ਬਿੰਦੀਆਂ ਅਤੇ ਹੱਥਾ ਨਾਲ ਧੱਬੇ ਬਣਾਓ" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "ਸਪਰੇਕੈਨ" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "ਸਪਰੇ ਪੰਪ" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "ਰੱਦ ਕਰਨ ਲਈ ਸੱਜਾ ਬਟਨ ਦਬਾਉ।" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "ਰੱਦ ਕਰਨ ਲਈ ਖੱਬਾ ਬਟਨ ਦਬਾਉ।" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "ਚਿੱਤਰ ਤੋਂ ਰੰਗ ਦੀ ਚੋਣ ਕਰੋ।" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "ਚੁਣਨ ਲਈ ਰੰਗ ਦਬਾਓ।" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "ਚਿੱਤਰ ਵਿੱਚ ਖੇਤਰ ਭਰੋ" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "ਖੇਤਰ ਭਰਨ ਲਈ ਦਬਾਉ।" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "ਜ਼ੂਮ" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "ਚਿੱਤਰ ਲਈ ਜ਼ੂਮ ਇਨ ਅਤੇ ਆਉਟ" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "ਚਾਪ" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "ਚਾਪਾਂ ਬਣਾਓ" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "ਰੇਖਾ" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "ਰੇਖਾਵਾਂ ਖਿੱਚੋ" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "ਬਣਾਉਣ ਲਈ ਖਿੱਚੋ।" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "ਬਹੁਭੁਜ" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "ਬਹੁਭੁਜ ਬਣਾਓ" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "ਪਹਿਲੀ ਰੇਖਾ ਖਿੱਚਣ ਲਈ ਖਿੱਚੋ।" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "ਜੁੜੀਆਂ ਰੇਖਾਵਾਂ" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "ਜੁੜੀਆਂ ਰੇਖਾਵਾਂ ਬਣਾਓ" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "ਅੰਡਾਕਾਰ" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "ਅੰਡਾਕਾਰ ਅਤੇ ਚੱਕਰ ਬਣਾਓ" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "ਚਤੁਰਭੁਜ" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "ਚਤੁਰਭੁਜ ਅਤੇ ਵਰਗ ਬਣਾਓ" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "ਗੋਲ ਕਿਨਾਰੇ ਵਾਲੀ ਚਤੁਰਭੁਜ" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "ਚਤੁਰਭੁਜ ਅਤੇ ਵਰਗ ਗੋਲ ਕਿਨਾਰਿਆਂ ਨਾਲ ਬਣਾਓ।" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "ਚੋਣ ਬਣਾਉਣ ਲਈ ਖੱਬਾ ਬਟਨ ਹੈ।" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "ਚੋਣ ਏਧਰ-ਓਧਰ ਕਰਨ ਲਈ ਖੱਬਾ ਬਟਨ ਹੈ।" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "ਪੈਮਾਨਾ ਚੋਣ ਲ਼ਈ ਖੱਬਾ ਬਟਨ ਦਬਾਉ।" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "ਚੋਣ: ਧੁੰਦਲਾਪਨ" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "ਚੋਣ: ਪਾਰਦਰਸ਼ਤਾ" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "ਚੋਣ: ਪਾਰਦਰਸ਼ਤਾ ਰੰਗ" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "ਚੋਣ: ਪਾਰਦਰਸ਼ਤਾ ਰੰਗ ਸਮਰੂਪਤਾ" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "ਚੋਣ (ਅੰਡਾਕਾਰ)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "ਅੰਡਕਾਰ ਜਾਂ ਚੱਕਰ ਚੋਣ ਕਰੋ" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "ਚੋਣ (ਚਤੁਰਭੁਜ)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "ਚਤੁਰਭੁਜੀ ਚੋਣ ਕਰੋ" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "ਚੋਣ: ਏਧਰ-ਓਧਰ" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: ਦਾਗ" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "ਪਾਠ ਲਿਖੋ" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "ਪਾਠ: ਬੈਕਸਪੇਸ" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "ਪਾਠ: ਹਟਾਓ" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "ਪਾਠ: ਨਵੀਂ ਸਤਰ" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "ਪਾਠ: ਲਿਖਣ" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "ਪਾਠ ਬਕਸਾ ਬਣਾਉਣ ਲਈ ਖੱਬਾ ਬਟਨ ਹੈ।" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "ਪਾਠ ਬਕਸਾ ਏਧਰ-ਓਧਰ ਕਰਨ ਲਈ ਖੱਬਾ ਬਟਨ ਹੈ।" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "ਪਾਠ: ਏਧਰ-ਓਧਰ ਬਕਸਾ" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "ਪਾਠ ਬਕਸੇ ਦਾ ਅਕਾਰ ਤਬਦੀਲ ਕਰਨ ਲਈ ਖੱਬਾ ਬਟਨ।" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "ਕਰਸਰ ਸਥਿਤੀ ਤਬਦੀਲ ਕਰਨ ਲਈ ਖੱਬਾ ਬਟਨ ਦਬਾਉ।" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "ਪਾਠ: ਧੁੰਦਲੀ ਪਿੱਠਭੂਮੀ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "ਪਾਠ: ਪਾਰਦਰਸ਼ੀ ਪਿੱਠਭੂਮੀ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "ਪਾਠ: ਰੰਗ ਸਮੇਟੋ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "ਪਾਠ: ਮੁੱਖਭੂਮੀ ਰੰਗ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "ਪਾਠ: ਪਿੱਠਭੂਮੀ ਰੰਗ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "ਪਾਠ: ਫੋਂਟ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "ਪਾਠ: ਫੋਂਟ ਆਕਾਰ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "ਪਾਠ: ਗੂੜਾ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "ਪਾਠ: ਤਿਰਛੇ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "ਪਾਠ: ਹੇਠਾਂ ਰੇਖਾ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "ਪਾਠ: ਵਿੰਨੋ" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - ਥੰਮਨੇਲ" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                To configure it, click on the cube.

                " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                Color Similarity: %1%

                Click to configure.

                " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                Color Similarity: Exact Match

                Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "ਚਮਕੀਲਾਪਨ(&B):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "ਰੀ-ਸੈੱਟ(&s)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "ਕਨਟਰਾਸਟ(&n):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "ਗਾਮਾ(&G):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "ਮੁਡ਼ ਨਿਰਧਾਰਨ(&t)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "ਚੈਨਲ(&h):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "ਸਭ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "ਲਾਲ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "ਹਰਾ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "ਨੀਲਾ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "ਸਭ ਮੁੱਲ ਮੁਡ਼ ਨਿਰਧਾਰਨ(&A)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "ਸਥਾਪਨ" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "ਮਾਤਰਾ(&A):" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "ਯੋਗ(&n)" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "ਰੰਗ" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "ਆਭਾ(&H):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "ਸੰਤ੍ਰਿਪਤਾ(&S):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "ਮੁੱਲ(&V):" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "ਲਾਲ(&R)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "ਹਰਾ(&G)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "ਨੀਲਾ(&B)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "ਸਭ(&A)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "ਚੈਨਲ" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "ਇਕਹੇਰਾਂ(&M)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "ਇਕਹੇਰਾ (ਅਸਥਿਰ)(&n)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 ਰੰਗ(&l)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 ਰੰਗ(&r) (ਅਸਥਿਰ)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-ਬਿੱਟ ਰੰਗ(&b)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "ਘਟਾਓ" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                To change the color of a color cell itself, double-click on it.

                You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "ਤਬਦੀਲ(&t):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "ਗੁਣਵੱਤਾ(&t):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "ਨਮੂਨਾ(&P)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "ਇਕਹੇਰਾ ਰੰਗ" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "ਇਕਹੇਰਾ (ਅਸਥਿਰ)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 ਰੰਗ" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 ਰੰਗ (ਅਸਥਿਰ)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-ਬਿੱਟ ਰੰਗ" + +#: widgets/kpPrintDialogPage.cpp:58 +#, fuzzy, kde-format +#| msgid "I&mage Position" +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "ਚਿੱਤਰ ਸਥਿਤੀ(&m)" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "ਪੇਜ਼ ਦਾ ਸੈਂਟਰ(&C)" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "ਪੇਜ਼ ਦਾ ਉੱਤੇ-ਖੱਬਾ(&l)" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "ਪਾਰਦਰਸ਼ਤਾ" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "ਕੇਰੰਗ-ਪੇਂਟ ਡਿਫਾਲਟ" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "ਰੰਗ: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "ਰੰਗ: %1 [ਸੋਧਿਆ]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "ਚੱਕਰ" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "ਵਰਗ" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "ਸਲੇਸ" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "ਬੈਕਸਲੇਸ਼" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "ਭਰਨਾ ਨਹੀਂ" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "ਪਿੱਠਭੂਮੀ ਰੰਗ ਨਾਲ ਭਰੋ" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "ਮੁੱਖਭੂਮੀ ਰੰਗ ਨਾਲ ਭਰੋ" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "ਧੁੰਦਲਾਪਨ" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "ਜ਼ੂਮ ਪੱਧਰ %1% ਸੈੱਟ ਕਰੋ" + +#~ msgid "None" +#~ msgstr "ਨਹੀ" + +#~ msgid "Overwrite" +#~ msgstr "ਉੱਤੇ ਲਿਖੋ" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "\"%1\" ਨੂੰ ਖੋਲਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ - ਅਣਜਾਣੀ ਕਿਸਮ ਹੈ।" + +#~ msgid "Save Preview" +#~ msgstr "ਝਲਕ ਸੰਭਾਲੋ" + +#~ msgid "No Scanning Support" +#~ msgstr "ਕੋਈ ਸਕੈਨਿੰਗ ਸਹਿਯੋਗ ਨਹੀਂ" + +#~ msgid "Scanning support is not installed." +#~ msgstr "ਸਕੈਨਿੰਗ ਸਹਿਯੋਗ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।" + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "ਪਰਦਾ-ਤਸਵੀਰਾਂ ਖਿੱਚੋ(&S)" + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "ਵਾਲਪੇਪਰ ਬਣਾਓ (ਸੈਂਟਰਡ)(&l)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "ਵਾਲਪੇਪਰ ਬਣਾਓ (ਟਾਇਲਡ)(&T)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਤੁਸੀਂ ਚਿੱਤਰ ਨੂੰ ਵਾਲਪੇਪਰ ਤੇ ਤੌਰ ਤੇ ਵਿਹੜੇ ਵਿੱਚ ਲਗਾਉ, ਤੁਹਾਨੂੰ ਸਥਾਨਕ ਫਾਇਲ ਵਿੱਚ " +#~ "ਸੰਭਾਲਣਾ ਪਵੇਗਾ।\n" +#~ "ਕੀ ਤੁਸੀਂ ਇਸ ਨੂੰ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਤੁਸੀਂ ਚਿੱਤਰ ਨੂੰ ਵਾਲਪੇਪਰ ਤੇ ਤੌਰ ਤੇ ਵਿਹੜੇ ਵਿੱਚ ਲਗਾਉ, ਤੁਹਾਨੂੰ ਸੰਭਾਲਣਾ ਪਵੇਗਾ।\n" +#~ "ਕੀ ਤੁਸੀਂ ਇਸ ਨੂੰ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "ਵਾਲਪੇਪਰ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।" + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "ਚੋਣ ਫਲਿਪ" + +#~ msgid "Flip Image" +#~ msgstr "ਚਿੱਤਰ ਝਟਕੋ" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "ਵਰਟੀਕਲ (ਉੱਤੇ ਤੋਂ ਹੇਠਾਂ)(&V)" + +#~ msgid "&Horizontal" +#~ msgstr "ਹਰੀਜ਼ਟਲ(&H)" + +#~ msgid "Loss of Color Information" +#~ msgstr "ਰੰਗ ਜਾਣਕਾਰੀ ਗੁੰਮ" + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "ਗ਼ੈਰ-ਸਹਾਇਕ ਸਕਰੀਨ ਮੋਡ" + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "ਸਕੈਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ - ਗਰਾਫਿਕਸ ਮੈਮੋਰੀ ਖਤਮ ਹੈ।" + +#~ msgid "Cannot Scan" +#~ msgstr "ਸਕੈਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" + +#~ msgid "&Flip..." +#~ msgstr "ਫਲਿਪ(&F)..." diff --git a/po/pl/docs/kolourpaint/fullscreen_mode.png b/po/pl/docs/kolourpaint/fullscreen_mode.png new file mode 100644 index 0000000..61a4f80 Binary files /dev/null and b/po/pl/docs/kolourpaint/fullscreen_mode.png differ diff --git a/po/pl/docs/kolourpaint/image_balance.png b/po/pl/docs/kolourpaint/image_balance.png new file mode 100644 index 0000000..a220344 Binary files /dev/null and b/po/pl/docs/kolourpaint/image_balance.png differ diff --git a/po/pl/docs/kolourpaint/image_emboss.png b/po/pl/docs/kolourpaint/image_emboss.png new file mode 100644 index 0000000..3d5a9aa Binary files /dev/null and b/po/pl/docs/kolourpaint/image_emboss.png differ diff --git a/po/pl/docs/kolourpaint/image_flatten.png b/po/pl/docs/kolourpaint/image_flatten.png new file mode 100644 index 0000000..dfec79c Binary files /dev/null and b/po/pl/docs/kolourpaint/image_flatten.png differ diff --git a/po/pl/docs/kolourpaint/image_flip.png b/po/pl/docs/kolourpaint/image_flip.png new file mode 100644 index 0000000..8914bde Binary files /dev/null and b/po/pl/docs/kolourpaint/image_flip.png differ diff --git a/po/pl/docs/kolourpaint/image_invert.png b/po/pl/docs/kolourpaint/image_invert.png new file mode 100644 index 0000000..a5d1b33 Binary files /dev/null and b/po/pl/docs/kolourpaint/image_invert.png differ diff --git a/po/pl/docs/kolourpaint/image_reduce_colors.png b/po/pl/docs/kolourpaint/image_reduce_colors.png new file mode 100644 index 0000000..5d573bf Binary files /dev/null and b/po/pl/docs/kolourpaint/image_reduce_colors.png differ diff --git a/po/pl/docs/kolourpaint/image_resize_scale.png b/po/pl/docs/kolourpaint/image_resize_scale.png new file mode 100644 index 0000000..8c1551b Binary files /dev/null and b/po/pl/docs/kolourpaint/image_resize_scale.png differ diff --git a/po/pl/docs/kolourpaint/image_rotate.png b/po/pl/docs/kolourpaint/image_rotate.png new file mode 100644 index 0000000..b543a8e Binary files /dev/null and b/po/pl/docs/kolourpaint/image_rotate.png differ diff --git a/po/pl/docs/kolourpaint/image_skew.png b/po/pl/docs/kolourpaint/image_skew.png new file mode 100644 index 0000000..6c701f9 Binary files /dev/null and b/po/pl/docs/kolourpaint/image_skew.png differ diff --git a/po/pl/docs/kolourpaint/image_soften_sharpen.png b/po/pl/docs/kolourpaint/image_soften_sharpen.png new file mode 100644 index 0000000..64ef3e8 Binary files /dev/null and b/po/pl/docs/kolourpaint/image_soften_sharpen.png differ diff --git a/po/pl/docs/kolourpaint/index.docbook b/po/pl/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..205d622 --- /dev/null +++ b/po/pl/docs/kolourpaint/index.docbook @@ -0,0 +1,1754 @@ + + + ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + + +]> + + + + +Podręcznik programu &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +MarcinKocur
                marcin2006@gmail.com
                Polskie tłumaczenie
                +
                + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2005-12-29 +1.4_relight + + +&kolourpaint; jest wolnym (w sensie wolności), prostym w obsłudze programem graficznym dla &kde;. + + + +kolourpaint +kdegraphics + + +
                + + +Wprowadzenie +&kolourpaint; jest wolnym (w sensie wolności), prostym w obsłudze programem graficznym dla &kde;. Nadaje się świetnie do popularnych zadań, takich jak: + + + +Malowanie - rysowanie diagramów i malowanie odręczne + + +Modyfikacja obrazów - edycja zrzutów ekranu i fotografii; dodawanie efektów + + +Edycja ikon - rysowanie przezroczystych clipartów i log + + + + + +Obsługa programu &kolourpaint; + +Kliknij na poniższe odnośniki, aby zapoznać się z możliwościami &kolourpaint;: + + + +Narzędzia + + +Praca z kolorami + + +Opcje widoku + + +Efekty obrazów + + + + + +Narzędzia + + +Spis narzędzi + +Szybkim sposobem na wybranie narzędzia w &kolourpaint; jest wciśnięcie pojedynczego klawisza, przypisanego do odpowiedniego narzędzia. Informacje na temat tych przypisań znajdują się poniżej, a także w dymkach podpowiedzi, wyświetlanych po najechaniu kursorem myszy na odpowiednie narzędzie, znajdujące się na Pasku narzędzi. Możesz także przytrzymać &Alt;&Shift; podczas naciskania przycisku. Jest to konieczne, jeśli piszesz jakiś tekst (wciśnięcie w tym momencie pojedynczego przycisku spowoduje napisane tej litery, zamiast wyboru narzędzia). Przykładowy wybór Pędzla: &Alt;&Shift;B lub po prostu B (gdy nie wpisujesz tekstu). + + + Pędzel (B) + + Usuwacz koloru (O) + + Narzędzie wybierania koloru (C) + + Połączone linie (N) + + Krzywa (V) + + Elipsa (E) + + Gumka (A) + + Wypełnienie (F) + + Linia (L) + + Pióro (P) + + Wielokąt (G) + + Prostokąt (R) + + Zaokrąglony prostokąt (U) + + Zaznaczenie (eliptyczne) (I) + + Zaznaczenie (dowolny kształt) (M) + + Zaznaczenie (prostokątne) (S) + + Malowanie rozpylaczem (Y) + + Tekst (T) + + + + + +Pędzel <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Kliknij lub przyciśnij i przeciągnij pędzlem po kartce, aby malować. + + + + + + + + + + + + + + +Kliknij na jednym z kształtów, aby wybrać kształt końcówki pędzla. Z kształtów możesz wybrać okrąg, kwadrat, ukośnik lub odwrotny ukośnik. + + + + + + +Lewy przycisk myszy maluje kolorem pierwszoplanowym, prawy przycisk maluje kolorem tła. + + + +Narzędzie wybierania koloru <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Aby za pomocą narzędzia wybierania koloru wybrać kolor pierwszoplanowy, kliknij lewym przyciskiem myszy na fragmencie obrazu. Aby wybrać kolor tła, kliknij prawym przyciskiem myszy na fragmencie obrazu. Po wybraniu koloru, &kolourpaint; wróci do poprzednio używanego narzędzia. + + + + +Połączone linie i Wielokąt <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Kliknij w kilku miejscach, aby narysować połączone linie. Narzędzie wielokątu obsługuje się w ten sam sposób, jednak punkt początkowy i końcowy są automatycznie łączone w formę wielokątu. + +Lewy przycisk myszy rysuje na pierwszym planie. Prawy przycisk myszy rysuje tło, a także odwraca kolor wypełnienia dla wielokątów. + +Możesz wybrać szerokość linii. Dla wielokątów możesz także wybrać sposób wypełniania. + + + + +Krzywa <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Przytrzymaj przycisk myszy i przeciągnij, aby narysować linię - spowoduje to określenie punktu startowego i końcowego. Możesz ustawić do dwóch punktów pośrednich przez klikanie w dowolnych miejscach. Aby zakończyć krzywą bez użycia obu lub choćby jednego punktu pośredniego, kliknij inny przycisk myszy. Narzędzie Krzywa rysuje krzywe Baziera. + +Lewy przycisk myszy maluje kolorem pierwszoplanowym, prawy przycisk maluje kolorem tła. + +Możesz także określić szerokość linii. + + + + +Elipsa <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Przytrzymaj przycisk myszy i przeciągnij, aby narysować elipsę. + +Lewy przycisk myszy rysuje kolor pierwszoplanowy. Prawy przycisk myszy rysuje kolor tła i odwraca kolor wypełnienia. + +Możesz także określić szerokość linii i sposób wypełnienia. + +Dodatkowa funkcjonalność jest dostępna przy użyciu klawiszy modyfikujących: + + + +Przytrzymaj &Shift; i przeciągnij, przytrzymując klawisz myszy, aby narysować okrąg. + + +Aby wybrać środek elipsy, przytrzymaj &Ctrl;, kliknij w miejscu, w którym ma się znaleźć środek elipsy, przytrzymując w dalszym ciągu przycisk myszy, przeciągaj nią tak długo, aż elipsa nabierze odpowiedniego rozmiaru i kształtu. + + +Aby wybrać środek okręgu, przytrzymaj &Ctrl; i &Shift;, kliknij w miejscu, w którym ma się znaleźć środek okręgu, przytrzymując w dalszym ciągu przycisk myszy, przeciągaj nią tak długo, aż okrąg nabierze odpowiedniego rozmiaru. + + + + + + +Wymazywacze + + +Gumka <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Przytrzymaj lewy przycisk myszy i przeciągnij gumką, aby wygumować popełnione błędy. + + +W odróżnieniu od innych narzędzi, gumka rysuje na warstwie koloru tła. Aby rysować na pierwszym planie, użyj prawego przycisku myszy. + + +Gumka posiada tylko kwadratowe kształty. Aby rysować innymi kształtami, takimi jak np. okręgi, użyj Pędzla prawym przyciskiem myszy. + + +Kliknij podwójnie na ikonie gumki, aby wyczyścić cały obszar kartki. Jest to odpowiednik polecenia Wyczyść z menu Obrazek. + + + + + +Usuwacz koloru <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Przytrzymując lewy przycisk myszy, przeciągnij po obrazie, aby zamienić kolor pierwszoplanowy na kolor tła. Aby podmienić piksele o kolorze pierwszoplanowy lub do niego podobnym (przydatne dla obrazków lub zdjęć z efektem wygładzania) na kolor tła, ustaw opcję Podobieństwo kolorów na wartość inną, niż "Dokładne dopasowanie". + + +W odróżnieniu od innych narzędzi, usuwacz koloru rysuje na warstwie koloru tła. Aby rysować na pierwszym planie, użyj prawego przycisku myszy. + + +Możesz określić rozmiar usuwacza koloru. + + +Kliknij podwójnie na ikonę usuwacza koloru, aby zastosować go na całym obrazie. + + + + + + +Wypełnienie <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Kliknij, aby wypełnić obszar. Aby wypełnić wygładzony obszar, ustaw opcję Podobieństwo kolorów na wartość inną, niż "Dokładne dopasowanie". + +Lewy przycisk myszy wypełnia kolorem pierwszopalnowy. Prawy przycisk myszy wypełnia kolorem tła. + + + +Linia <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Przytrzymując klawisz myszy, przeciągnij, aby narysować linię. + +Lewy przycisk myszy maluje kolorem pierwszoplanowym, prawy przycisk maluje kolorem tła. + +Możesz także określić szerokość linii. + + + + + + + + + + + + + + + + + + + + + +Przytrzymaj &Ctrl;, aby rysować linie oddalone od siebie o 30 stopni - ilustruje je diagram czerwony. + + +Przytrzymaj &Shift;, aby rysować linie oddalone od siebie o 45 stopni - ilustruje je diagram niebieski. + + +Przytrzymaj &Ctrl; i &Shift;, aby rysować linie oddalone od siebie o 30 lub 45 stopni - ilustruje je diagram zielony. + + + + + + +Pióro <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Kliknij, aby narysować kropkę lub przytrzymując przeciągnij, aby narysować dowolną linię. + +Lewy przycisk myszy maluje kolorem pierwszoplanowym, prawy przycisk maluje kolorem tła. + + + + +Prostokąty <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Przytrzymaj i przeciągnij, aby narysować prostokąt. Zaokrąglony prostokąt to prostokąt z zaokrąglonymi narożnikami. + +Lewy przycisk myszy rysuje kolor pierwszoplanowy. Prawy przycisk myszy rysuje kolor tła i odwraca kolor wypełnienia. + +Możesz także określić szerokość linii i sposób wypełnienia. + +Dodatkowa funkcjonalność jest dostępna przy użyciu klawiszy modyfikujących: + + + +Przytrzymaj &Shift;, aby narysować kwadrat. + + +Aby wybrać środek prostokąta, przytrzymaj &Ctrl;, przyciśnij przycisk myszy w wybranym punkcie środkowym i przeciągnij nią, aż prostokąt nabierze odpowiedniego rozmiaru i kształtu. + + +Aby wybrać środek kwadratu, przytrzymaj &Ctrl; i &Shift;, przyciśnij przycisk myszy w wybranym punkcie środkowym i przeciągnij nią, aż kwadrat nabierze odpowiedniego rozmiaru. + + + + + + +Zaznaczenia <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Użyj narzędzi do zaznaczania, aby wyznaczyć granice zaznaczenia. + +Aby przesunąć zaznaczenie, przytrzymaj nad nim przycisk myszy i przeciągnij. Obrazek zostanie odpowiednio przesunięty, abyś mógł bez przeszkód dotrzeć nawet do aktualnie niewidocznej jego części. + +Możesz zmienić rozmiar całego obrazka lub płynnie przeskalować zaznaczenie przy użyciu odpowiednich uchwytów. Przytrzymaj &Shift; podczas zmiany rozmiaru zaznaczenia, aby zachować proporcje (najpierw zacznij zmieniać rozmiar, później wciśnij &Shift; - przyp. tłumacza). Prawy przycisk myszy przywołuje menu z popularnymi poleceniami menu Edycja, a także z Efektami obrazów. + + +Możesz użyć przycisków ze strzałkami podczas wyznaczania granicy zaznaczenia lub podczas przenoszenia zaznaczenia. + + +Jeśli wciśniesz &Ctrl; przed przeniesieniem zaznaczenia, spowodujesz przeniesienie kopii tego zaznaczenia. Jeśli wciśniesz &Shift;, zaznaczenie zostanie rozsmarowane podczas przenoszenia. + + + + + + + + + + + + + +Istnieją dwa sposoby zaznaczania. Nieprzezroczysty (domyślny) i przezroczysty. Jeśli użyjesz sposobu przezroczystego, kolor tła stanie się przezroczysty (zostanie usunięty). Pozwoli Ci to na wklejenie zaznaczenia bez tła. Aby usunąć kolor tła na wygładzonym obrazku, użyj podobieństwa kolorów innego, niż "Dokładne dopasowanie". + + + + + + +Możesz zastosować Efekty obrazów na zaznaczeniu - przeczytaj sekcję Efekty obrazów aby uzyskać więcej informacji. + + + +Malowanie rozpylaczem <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Przytrzymując klawisz myszy przeciągaj, aby rysować graffiti za pomocą sprayu. Aby uzyskać bardziej skoncentrowaną farbę, przesuwaj wolniej myszą lub ją zatrzymaj. + + + + + + + + + + + + + +Kliknij na jednym z kształtów, aby wybrać zakres rozpylania farby. Możesz wybrać promień rozpylanej farby w pikselach: 9x9, 17x17 i 29x29. + + + + + + +Lewy przycisk myszy maluje kolorem pierwszoplanowym, prawy przycisk maluje kolorem tła. + + + + +Tekst <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Przytrzymując przycisk myszy, narysuj obszar, w którym chcesz pisać tekst. Przytrzymując przycisk myszy na obramowaniu ramki tekstowej, możesz nią przesuwać. Możesz zmienić rozmiar ramki tekstowej przy użyciu uchwytów lub przy użyciu okna zmiany rozmiaru. + + +Jeśli odznaczyłeś ramkę tekstową, możesz użyć funkcji Cofnij, aby ponownie edytować tekst. + + + +Obsługa przezroczystości kolorów + + + + + + + + +Obrazek po lewej to przykład. Obrazek po prawej to przykład wraz z ramką tekstową o nieprzezroczystym kolorze pierwszoplanowym i nieprzezroczystym kolorze tła. + + + + + + + + + +Obrazek po lewej ukazuje przykład wraz z ramką tekstową o nieprzezroczystym kolorze pierwszoplanowym i przezroczystym kolorze tła. Obrazek po prawej ukazuje przykład wraz z ramką tekstową o przezroczystym kolorze pierwszoplanowym i nieprzezroczystym kolorze tła. + + + + +Wspólne parametry narzędzi + + + + + + + + + + + + + +Kliknij na jednym z kwadratów, aby wybrać rozmiar wymazywacza. Możesz wybrać spomiędzy kwadratów o długości boku 2, 3, 5, 9, 17 i 29 pikseli. + +Powyższe ustawienie działa dla Wymazywaczy. + + + + + + + + + + + +Kliknij na jednej z linii, aby wybrać jej grubość. Możesz ją wybrać spomiędzy odcinków o grubości 1, 2, 3, 5 i 8 pikseli. + +Ustawienie grubości linii ma zastosowanie dla narzędzi: Połączone linie, Krzywa, Elipsa, Linia, Wielokąt, Prostokąt i Zaokrąglony prostokąt. + + + + + + + + + + + +Kliknij na jednym z prostokątów, aby zdecydować o sposobie wypełnienia. Możesz wybrać spomiędzy braku wypełnienia, wypełnienia kolorem tła i wypełnienia kolorem pierwszoplanowym. Ustawienie wypełniania działa dla narzędzi: Elipsa, Wielokąt, Prostokąt i Zaokrąglony prostokąt. + + + + + + + + + + +Praca z kolorem + + +Pasek narzędzi koloru + + + + + + + +Pasek narzędzi koloru + + + + +Pasek narzędzi koloru dzieli się na 3 obszary: Podglądu kolorów, Palety kolorów i Podobieństwa kolorów. + +Podgląd kolorów wyświetla bieżący kolor pierwszoplanowy w postaci kwadratu, położonego na kwadracie koloru tła. Podczas rysowania lewym przyciskiem myszy używany jest kolor pierwszoplanowy, rysowanie prawym przyciskiem myszy powoduje użycie koloru tła (za wyjątkiem Wymazywaczy). Możesz kliknąć na strzałce zakończonej dwoma grotami, aby zamienić kolor tła z kolorem pierwszoplanowym. + +Paleta kolorów wyświetla próbki kolorów, z których można wybierać. Przezroczysta piramida reprezentuje kolor przezroczysty. Kliknięcie lewym przyciskiem myszy na próbce koloru powoduje ustawienie go jako koloru pierwszoplanowego. Kliknięcie prawym przyciskiem myszy na próbce koloru powoduje ustawienie go jako koloru tła. Narzędzie wybierania koloru pozwala na pobranie koloru z obrazka. + +Podobieństwo kolorów pozwala na efektywniejszą pracę z wygładzonymi obrazami i fotografiami. Funkcja ta działa podobnie do funkcji Magic Wand (Magiczna różdżka), znanej z innych programów graficznych. Ma ona zastosowanie do przezroczystych zaznaczeń, jak również do narzędzi Wypełnienie, Usuwacz koloru i Przytnij automatycznie / Usuń wewnętrzną ramkę. Podwójne kliknięcie na obszarze podobieństwa kolorów pozwala określić, jak podobne muszą być kolory, aby zostały potraktowane jak identyczne. Podczas zaznaczania sposobem przezroczystym, każdy kolor w zaznaczeniu, który jest podobny do koloru tła, stanie się przezroczysty. + + + + + + + + + +Po lewej stronie znajduje się przykładowe zdjęcie. Zdjęcia dalej na prawo demonstrują użycie na przykładowym obrazku Wypełnienia z Podobieństwem kolorów ustawionym odpowiednio na 5%, 15% i 30%. Zakładając, że przy podobieństwie kolorów ustawionym na Dokładne dopasowanie użyjesz narzędzia Wypełnienie na pikselu (65, 70), wypełniony zostanie tylko ten jeden piksel, ponieważ piksele otaczające są podobne do niego, lecz nie identyczne. Przy zwiększaniu współczynnika Podobieństwa kolorów, więcej pikseli zostanie zinterpretowanych jako identyczne (choć w rzeczywistości będą tylko podobne), a więc wypełnienie zacznie się rozszerzać na kolejne piksele. + + + + + +Polecenia menu Widok + + +Lista poleceń + +Powiększenie w połączeniu z siatką +Miniaturka + + + + +Powiększenie w połączeniu z siatką +Zwiększ wartość powiększenia, aby edytować obraz z większą precyzją lub zmniejsz, aby zobaczyć więcej obrazka. + + +W powiększeniach, które nie są wielokrotnością 100%, przy edytowaniu pewnych części obrazka, może się wydawać, że te części się poruszają. Mogą wystąpić również inne zakłócenia. + + +Przy powiększeniu 600% lub większym (ale wielokrotnym 100%) możesz wyświetlić siatkę, aby uzyskać lepszą kontrolę nad poszczególnymi pikselami. + + + + + + + + + + + + + + + +Pierwsza ilustracja przedstawia ikonę narzędzia Tekst, zaś druga tę samą ikonę w powiększeniu 600% z włączoną siatką. + + +Jeśli niczego aktualnie nie rysujesz, możesz powiększać obrazek za pomocą kółka myszy, przytrzymując &Ctrl;. + + + + + +Miniaturka + + + + + + + +Jeśli wybrane zostało polecenie Pokaż miniaturkę, cały obraz zostanie wyświetlony w pomniejszeniu w osobnym okienku (obrazek po prawej u góry). +Jeśli cały obraz nie może się zmieścić w oknie miniaturki, wyświetlone zostanie tyle obrazu, ile to tylko możliwe, zaczynając od lewego górnego rogu (obrazek po prawej na dole). + + + + + +Polecenia menu <guilabel +>Obrazek/Zaznaczenie</guilabel +> i Efekty obrazów + + +Spis +Przytnij automatycznie / Usuń wewnętrzną ramkę +Balans +Wyczyść +Uwypuklij +Spłaszcz +Odwróć +Zamień kanały +Zmniejsz liczbę kolorów +Zmień na odcienie szarości +Zmień na monochromatyczny (wygładzony) +Zmień rozmiar / skaluj +Obróć +Ustaw jako obrazek (przytnij) +Pochyl +Rozmiękczanie i wyostrzanie +Więcej efektów +Uwagi + + + +Przytnij automatycznie / Usuń wewnętrzną ramkę + +Funkcja ta usuwa ramkę z obrazka lub zaznaczenia. Jest ona przydatna, gdy masz obiekt, który na obrazku lub w zaznaczeniu nie zajmuje całej jego powierzchni i chcesz pozbyć się pozostałego, białego obszaru, który do obiektu nie należy. Aby użyć tej funkcji na wygładzonej ramce obrazka, włącz Podobieństwo kolorów. + + + + +Balans + +Funkcja ta jest dostępna poprzez okno Więcej efektów. + + + + + + + + +Pozwala ona na ustawienie wartości jasności, kontrastu i gammy obrazka lub zaznaczenia. + + +Zwykle stosowana jednostka gammy (dziesiętna od 0.10 do 10.00) znajduje się pomiędzy suwakiem Gamma, a przyciskiem Przywróć. + + + + +Wyczyść + +Funkcja ta wypełnia cały obrazek lub zaznaczenie kolorem tła. + + +Kliknij podwójnie na narzędziu Gumka, aby uzyskać ten sam efekt. + + + + + +Uwypuklij + +Funkcja ta jest dostępna poprzez okno Więcej efektów. + + + + + + + + +Zaznacz Włącz, aby zastosować efekt uwypuklenia. Powoduje on podkreślenie krawędzi i nadaje obrazkowi lub zaznaczeniu wygląd "wygrawerowanego". + + + +Spłaszcz + +Funkcja ta jest dostępna poprzez okno Więcej efektów. + + + + + + + + +Funkcja ta nadaje obrazowi odcienie dwóch wybranych kolorów. + + + +Odwróć + + + + + + + + + +Funkcja ta powoduje odwrócenie obrazka lub zaznaczenia pionowo lub poziomo. + + + + +Zamień kanały + +Funkcja ta jest dostępna poprzez okno Więcej efektów. + + + + + + + + +Funkcja ta pozwala na zamianę jednego lub więcej kanałów RGB na obrazku lub w zaznaczeniu. Wybierz Wszystkie, aby zamienić obraz w negatyw i na odwrót. Zwykle wygląda to całkiem zabawnie. + + +Aby szybko zamienić wszystkie kanały, nie musisz używać tego okna dialogowego. Zamiast tego możesz wybrać pozycję Odwróć kolory z menu Obrazek lub Zaznaczenie. + + + + + +Zmniejsz liczbę kolorów + +Funkcja ta jest dostępna poprzez okno Więcej efektów. + + + + + + + + +Funkcja ta zmniejsza liczbę kolorów użytych w obrazku lub zaznaczeniu z użyciem lub bez użycia wygładzania. + +Włączenie wygładzania zwykle daje lepszą jakość, jednak możesz wyłączyć wygładzanie, aby uzyskać bardziej artystyczny efekt, np. po użyciu Monochromatycznego zmniejszenia liczby kolorów zamiast Monochromatycznego (wygładzonego) otrzymasz zarys (sylwetkę) jakiejś postaci. + +Kolejną ważną różnicą jest to, że monochromatyczne (wygładzone) zmniejszenie liczby kolorów zawsze zmniejszy liczbę kolorów obrazka lub zaznaczenia do białego i czarnego, a monochromatyczne zmniejszenie liczby kolorów zmniejszy liczbę kolorów tylko wtedy, gdy obrazek lub zaznaczenie zawiera więcej niż 2 kolory. + + +Aby szybko uzyskać monochromatyczny wygładzony obraz lub zaznaczenie, użyj funkcji Zmień na monochromatyczny (wygładzony) z menu Obrazek lub Zaznaczenie. + + + +Zmiana liczby kolorów przy użyciu w/w poleceń nie ma wpływu na głębię kolorów pliku graficznego. Jeśli chcesz zmienić głębię kolorów, powinieneś wybrać odpowiednią opcję w oknie dialogowym zapisu pliku. Zauważ, że (o ironio) zmiana głębi kolorów zmienia także liczbę kolorów. + + + + +Zmień na odcienie szarości + +Funkcja ta redukuje kolory w obrazku lub zaznaczeniu na odcienie szarości. + + + + +Zmień na monochromatyczny (wygładzony) + +Funkcja ta redukuje kolory w obrazku lub zaznaczeniu do czarnego i białego. + + +Jeśli nie chcesz, aby obraz lub zaznaczenie zostało wygładzone, użyj okna Więcej efektów. + + + + +Zmień rozmiar / Skaluj + + + + + + + + + +Zmiana rozmiaru obrazu nie powoduje zmiany jego zawartości. Przeskalowanie obrazu spowoduje transformację zawartości w celu spełnienia nowo ustalonego rozmiaru. Płynne przeskalowanie daje zwykle lepsze rezultaty niż Przeskalowanie, dzięki wygładzeniu sąsiadujących kolorów. + +Nowy rozmiar możesz wyrazić w pikselach lub jako procent rozmiaru oryginalnego. Jeśli zaznaczysz opcję Zachowaj proporcje, wysokość i szerokość obrazu zostaną procentowo zmienione tak samo. + + +Możesz dowolnie Zmieniać rozmiar całego obrazka lub Płynnie przeskalować zaznaczenie, używając odpowiednich poleceń. + + + +Dla zaznaczeń obsługiwane jest tylko skalowanie, a dla pól tekstowych obsługiwana jest tylko zmiana rozmiaru. Przeczytaj Uwagi, aby uzyskać więcej informacji na temat stosowania tych efektów. + + + + +Obróć + + + + + + + + + +Funkcja ta obraca obraz. Możesz określić kąt, o jaki obraz zostanie obrócony oraz kierunek obracania. + + +Kierunek obracania można odwrócić używając ujemnego kąta obrotu. + + + +Przeczytaj Uwagi, aby uzyskać więcej informacji na temat stosowania tych efektów. + + + + +Ustaw jako obrazek (przytnij) + +Funkcja ta spowoduje przekształcenie zaznaczenia w obrazek. + + +Funkcja ta jest dostępna tylko wtedy, gdy na obrazie znajduje się aktywne zaznaczenie. + + + + +Pochyl + + + + + + + + + +Funkcja ta powoduje pochylenie całego obrazka lub zaznaczenia pionowo i/lub poziomo. + + +Przeczytaj Uwagi, aby uzyskać więcej informacji na temat stosowania tych efektów. + + + + +Rozmiękczanie i wyostrzanie + +Funkcja ta jest dostępna poprzez okno Więcej efektów. + + + + + + + + +Użyj tego efektu w celu zmiękczenia lub wyostrzenia zdjęcia. + + + + +Więcej efektów + +Okno to zawiera następujące efekty: Balans, Uwypuklenie, Spłaszczenie, Odwrócenie kolorów, Zmniejszenie liczby kolorów i Rozmiękczanie i wyostrzanie. + + + +Uwagi + +Zmiana rozmiaru / Skalowanie, Obracanie i Pochylanie mogą zmienić rozmiary zdjęcia. Nowe rozmiary możesz zobaczyć w oknie dialogowym każdej z wymienionych tu funkcji. + +Gdy zastosujesz wyżej wymienione funkcje do obrazka, zmieniony zostanie jego rozmiar, jeśli to konieczne. Jeśli jednak zastosujesz wyżej wymienione funkcje do zaznaczenia, rozmiar obrazka nie zostanie zmieniony, nawet jeśli nowo utworzone zaznaczenie nie będzie pasowało. + + + + + + + + + +Obrazek po lewej został obrócony o 30 stopni zgodnie z kierunkiem wskazówek zegara. Ilustruje to obrazek po prawej. Jak widać, &kolourpaint; automatycznie dopasował rozmiary obrazka do powiększonej zawartości. + + + + + + + + + +Zaznaczenie po lewej zostało obrócone o 30 stopni zgodnie z kierunkiem wskazówek zegara. Ilustruje to obrazek po prawej. Rozmiar obrazka jest ten sam, dlatego wykraczające części zaznaczenia nie będą widoczne bez operacji Zmiany rozmiaru (powiększenia) obrazka. + + + + + +Autorzy i licencja + +Carl Tucker +Może nie jest to zwięzła dokumentacja, może nie jest to kompletna dokumentacja, ale na pewno jest porządna. + + +&kolourpaint; +Prawa autorskie do programu © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +&kolourpaint; - prawa autorskie do niektórych ikon © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Dokumentacja i dodatkowa praca artystyczna dla dokumentacji: © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Część dokumentacji powstała z wykorzystaniem i za pozwoleniem strony . + +Marcin Kocurmarcin2006@gmail.com +&underFDL; Ten program jest licencjonowany, jak poniżej: + +Prawa autorskie © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + +Instalacja + +Jak zdobyć program &kolourpaint; +&install.intro.documentation; Częstsze wydania, wspierające starsze wersje &kde; dostępne są na stronie http://kolourpaint.sourceforge.net/. + + + + +Wymagania + +&kolourpaint; 1.4_relight wymaga &kde; 3.5. + + + +Kompilacja i instalacja + + +Jeśli czytasz tą pomoc w &khelpcenter-miejscownik;, oznacza to, że &kolourpaint; jest już zainstalowany w Twoim systemie, więc nie musisz stosować się do poniższych, standardowych instrukcji. + &install.compile.documentation; + + +Konfiguracja + +&kolourpaint; powinien działać bez dodatkowych czynności konfiguracyjnych. + + + + +&documentation.index; +
                + + diff --git a/po/pl/kolourpaint.po b/po/pl/kolourpaint.po new file mode 100644 index 0000000..60fae9c --- /dev/null +++ b/po/pl/kolourpaint.po @@ -0,0 +1,3024 @@ +# translation of kolourpaint.po to Polish +# translation of kolourpaint4.po to +# translation of kolourpaint.po to +# Michal Rudolf , 2004, 2005, 2009. +# Krzysztof Lichota , 2005, 2006. +# Robert Gomulka , 2008. +# Maciej Wikło , 2008. +# Marta Rybczyńska , 2008, 2010. +# Marta Rybczynska , 2009. +# Łukasz Wojniłowicz , 2011, 2012, 2014, 2015, 2016, 2017, 2019, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-03 08:42+0200\n" +"Last-Translator: Łukasz Wojniłowicz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.1\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" +"Michał Rudolf, Michał 'podles' Podlewski, Maciej Wikło, Łukasz Wojniłowicz" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"mrudolf@kdewebdev.org, podles@aster.pl, maciej.wiklo@wp.pl, lukasz." +"wojnilowicz@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Równowaga" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Rozmiękczenie" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Wyostrzenie" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Wyczyszczenie" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Zaznaczenie: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Uwypuklenie" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Spłaszczenie" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Odbarw do odcieni szarości" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Odcień, nasycenie, wartość" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Odwrócenie kolorów" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Odwrócenie" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Odbarw do czarnobiałego (wygładzony)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Odbarw do czarnobiałego" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Odbarw do 256 kolorów (wygładzony)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Odbarw do 256 kolorów" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Korektor histogramu" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Odbicie" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Odbicie w pionie lub w poziomie" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Odbij w poziomie" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Odbij w pionie" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Tekst: Zmiana rozmiaru pola tekstowego" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Zaznaczenie: skalowanie" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Zaznaczenie: Płynne skalowanie" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Zmień rozmiar" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Wyskaluj" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Wyskaluj płynnie" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Obróć" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Pochyl" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "C&ofnij: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Cofnij" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "P&onów: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Ponów" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Cofnij: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Cofnij" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Ponów: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Ponów" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "Jeszcze %1 obiekt" +msgstr[1] "Jeszcze %1 obiekty" +msgstr[2] "Jeszcze %1 obiektów" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Wybierak koloru" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Wypełnij" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Więcej efektów dla obrazu (zaznaczenie)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Więcej efektów dla obrazu" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Odbarwienie" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Rozmiękczanie i wyostrzanie" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Właściwości dokumentu" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Punkty na &cal (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nieokreślone" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "W poziomie:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "W pionie:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Punkty na cal (DPI) określa liczbę pikseli na obrazku, które " +"wydrukowane zostaną w jednym calu (2,54cm).

                Im wyższa wartość DPI " +"obrazu, tym mniejszy wydruk. Zauważ, że to mało prawdopodobne, aby Twoja " +"drukarka dawała wydruki najwyższej jakości, jeśli zwiększysz tą wartość do " +"300 lub 600 DPI, zależnie od drukarki.

                Jeśli chcesz wydrukować obraz o " +"takim samym rozmiarze, jak na ekranie, ustaw wartości DPI obrazu zgodnie z " +"wartościami DPI monitora.

                Również jeśli wartość DPI jest " +"nieokreślona, obraz zostanie wydrukowany w takim samym rozmiarze, jak " +"na ekranie.

                Nie wszystkie formaty obrazków obsługują wartości DPI. " +"Jeśli wybrano dla obrazu format nieobsługujący DPI, wartość ta nie zostanie " +"zapisana.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Przesunięcie" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                The Offset is the relative position where this image should be " +"placed, compared to other images.

                Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                " +msgstr "" +"

                Przesunięcie jest pozycją względną, gdzie obraz powinien być " +"umieszczony, w porównaniu z innymi obrazkami.

                Nie wszystkie formaty " +"obrazków obsługują przesunięcie. Jeśli wybrany format tego nie robi, " +"wartości podane tutaj nie zostaną zapisane.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Pola &tekstowe" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Dod&aj wiersz" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Usuń wiersz" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "Wyze&ruj" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                " +msgstr "" +"

                Pola tekstowe dostarczają dodatkowych informacji o obrazku. " +"Jest to obszar tekstowy, w którym możesz wpisywać dowolne komentarze.

                Jednakże pola te posiadają określone formatowanie, więc mogą " +"teoretycznie być danymi interpretowanymi przez komputer - których nie możesz " +"zmieniać - lecz jest to mało prawdopodobne.

                Nie wszystkie formaty " +"obrazków obsługują pola tekstowe. Jeśli wybrany format ich nie " +"obsługuje, nie zostaną zapisane.

                " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Klucz" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Wartość" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Wartość tekstowa \"%1\" w linii %2 wymaga klucza." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Każdy klucz tekstowy musi być unikalny. Klucze tekstowe \"%1\" w liniach %2 " +"i %3 są identyczne." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Nieprawidłowe pola tekstowe" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Wymiary" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Źródłowy:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Podgląd" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Uaktualnij" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Zmień rozmiar / przeskaluj" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Działa&j na:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Całym obrazie" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Zaznaczeniu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Polu tekstowym" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Czynność" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                " +msgstr "" +"
                • Zmień rozmiar: Rozmiar obrazu zostanie powiększony przez " +"dodanie nowych obszarów o kolorze tła po prawej stronie i na dole obrazu lub " +"zmniejszony poprzez ucięcie odpowiednich obszarów po prawej stronie i na " +"dole obrazu.
                • Przeskaluj: Obraz zostanie rozszerzony przez " +"powielenie pikseli lub zmniejszony przez ich wyrzucenie.
                • Przeskaluj płynnie: Tak samo jak Przeskaluj, ale " +"dodatkowo rozmywa sąsiadujące piksele tak, aby uzyskać wygładzony obraz.
                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Zmień &rozmiar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "Prze&skaluj" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "P&rzeskaluj płynnie" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Szerokość:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Wysokość:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nowy:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Procent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Zachow&aj kształt" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to resize the text box?

                " +msgstr "" +"

                Zmiana rozmiaru pola tekstowego na %1x%2 może wymagać dużej ilości " +"pamięci. Może to spowodować chwilowe spowolnienie systemu i problem z " +"dostępem do zasobów w innych programach.

                Na pewno zmienić rozmiar pola " +"tekstowego?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Czy zmienić rozmiar pola tekstowego?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "&Zmień rozmiar pola tekstowego" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to resize the image?

                " +msgstr "" +"

                Zmiana rozmiaru obrazu na %1x%2 może wymagać dużej ilości pamięci. " +"Może to spowodować chwilowe spowolnienie systemu i problem z dostępem do " +"zasobów w innych programach.

                Na pewno zmienić rozmiar obrazu?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Czy zmienić rozmiar obrazu?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "&Zmień rozmiar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to scale the image?

                " +msgstr "" +"

                Skalowanie obrazu do %1x%2 może wymagać dużej ilości pamięci. Może to " +"spowodować chwilowe spowolnienie systemu i problem z dostępem do zasobów w " +"innych programach.

                Na pewno przeskalować obraz?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Czy przeskalować obraz?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&Skaluj obraz" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to scale the selection?

                " +msgstr "" +"

                Skalowanie zaznaczenia do %1x%2 może wymagać dużej ilości pamięci. " +"Może to spowodować chwilowe spowolnienie systemu i problem z dostępem do " +"zasobów w innych programach.

                Na pewno przeskalować zaznaczenie?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Czy przeskalować zaznaczenie?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Skaluj zaznaczenie" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the image?" +msgstr "" +"

                Płynne skalowanie obrazu do %1x%2 może wymagać dużej ilości pamięci. " +"Może to spowodować chwilowe spowolnienie systemu i problem z dostępem do " +"zasobów w innych programach.

                Na pewno płynnie przeskalować obraz?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Czy przeskalować płynnie obraz?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "&Płynnie skaluj obraz" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to smooth scale the selection?" +"

                " +msgstr "" +"

                Płynne skalowanie zaznaczenia do %1x%2 może wymagać dużej ilości " +"pamięci. Może to spowodować chwilowe spowolnienie systemu i problem z " +"dostępem do zasobów w innych programach.

                Na pewno płynnie przeskalować " +"zaznaczenie?

                " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Czy przeskalować płynnie zaznaczenie?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "&Płynnie skaluj zaznaczenie" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Obróć zaznaczenie" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Obróć obraz" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Po obróceniu:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Kierunek" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Przeciwnie do r&uchu wskazówek zegara" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Z&godnie z ruchem wskazówek zegara" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Kąt" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &stopni" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 s&topni" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 stopn&i" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Inny:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "stopni" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to rotate the selection?

                " +msgstr "" +"

                Obrócenie zaznaczenia do %1x%2 może wymagać dużej ilości pamięci. " +"Może to spowodować chwilowe spowolnienie systemu i problem z dostępem do " +"zasobów w innych programach.

                Czy na pewno chcesz obrócić zaznaczenie?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Czy obróć zaznaczenie?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Obróć &zaznaczenie" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to rotate the image?

                " +msgstr "" +"

                Obrócenie obrazu do %1x%2 może wymagać dużej ilości pamięci. Może to " +"spowodować chwilowe spowolnienie systemu i problem z dostępem do zasobów w " +"innych programach.

                Czy na pewno chcesz obrócić obraz?

                " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Czy obrócić obraz?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "&Obróć obraz" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Pochyl zaznaczenie" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Pochyl obraz" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Po pochyleniu:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "W &poziomie:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "W p&ionie:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                Are you sure you want to skew the selection?

                " +msgstr "" +"

                Pochylenie zaznaczenia do %1x%2 może wymagać dużej ilości pamięci. " +"Może to spowodować chwilowe spowolnienie systemu i problem z dostępem do " +"zasobów w innych programach.

                Czy na pewno chcesz pochylić zaznaczenie?" +"

                " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Czy pochylić zaznaczenie?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&Pochyl zaznaczenie" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                Are you sure you want to skew the image?

                " +msgstr "" +"

                Pochylenie obrazu do %1x%2 może wymagać dużej ilości pamięci. Może to " +"spowodować chwilowe spowolnienie systemu i problem z dostępem do zasobów w " +"innych programach.

                Czy na pewno chcesz pochylić obraz?

                " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Czy pochylić obraz?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&Pochyl obraz" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Podobieństwo kolorów" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Odległość w sześcianie kolorów &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Dokładne dopasowanie" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Czym jest podobieństwo kolorów?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Podgląd zapisu" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 bajt (ok. %2%)" +msgstr[1] "%1 bajty (ok. %2%)" +msgstr[2] "%1 bajtów (ok. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Nie można otworzyć \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Nie można otworzyć \"%1\" - nieobsługiwany format obrazu.\n" +"Plik może być uszkodzony." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Nie można zapisać obrazu - zbyt mało informacji." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Typ MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Błąd wewnętrzny" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                The %1 format may not be able to preserve all of the image's " +"color information.

                Are you sure you want to save in this format?

                " +msgstr "" +"

                Format %1 może nie zachować wszystkich kolorów tego obrazu.

                Na pewno zapisać w tym formacie?

                " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Stratny format pliku" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                Are " +"you sure you want to save at this color depth?

                " +msgstr "" +"

                Zapisanie obrazu w małej głębi kolorów (%1 bitów) może spowodować " +"utratę informacji o kolorach. Utracona zostanie także przezroczystość.

                Czy na pewno chcesz zapisać w tej głębi kolorów?

                " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Niska głębia kolorów" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Nie można zapisać obrazu - nie można stworzyć pliku tymczasowego." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Nie można zapisać jako \"%1\": %2." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Błąd zapisu obrazu" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Nie można zapisać obrazu - problem z wysyłaniem pliku." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "&Usuń wewnętrzną ramkę" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Usuń wewnętrzną ramkę" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Przytnij &automatyczne" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automatyczne przycinanie" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint nie mógł usunąć wewnętrznej ramki zaznaczenia, ponieważ nie " +"udało się jej znaleźć." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Nie można usunąć wewnętrznej ramki" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint nie mógł przyciąć obrazu, ponieważ nie udało się znaleźć jego " +"ramki." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Nie można przyciąć automatycznie" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Ustaw jako obraz" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Zaznaczenie: utwórz" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Prosty program graficzny dla KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Założyciel projektu" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Główny badacz" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Obsługa skanowania, obsługa alfy, obecny opiekun" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikony" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Obsługa metod wejścia" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efekty obrazu" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Przenoszenie na KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Przeniesienie na KF5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Podziękowania dla wielu innych, którzy pomogli w powstaniu tego programu." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Plik obrazu do otwarcia, opcjonalne" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Wypisz wszystkie rodzaje MIME możliwe do odczytania" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Widok" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "Obra&z" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Kolory" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Główny pasek narzędzi" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Pasek narzędzi tekstowych" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menu wyboru narzędzia" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Edycja" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Przeciągnij uchwyt lewym przyciskiem myszy, by zmienić rozmiar obrazu." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Zmień rozmiar: puść wszystkie przyciski myszki." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Zmień rozmiar: naciśnij prawy przycisk, by zaniechać." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Tekst" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Nie można otworzyć palety kolorów \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Nie można otworzyć palety kolorów \"%1\" - nieobsługiwany format.\n" +"Plik może być uszkodzony." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Nie można otworzyć palety kolorów KDE \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Nie można zapisać palety kolorów jako \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Bez tytułu" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Użyj wartości domyślnych KolourPainta" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Otwórz..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Wczytaj &ponownie" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Zapisz" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Zapisz &jako..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Dodaj wiersz" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Usuń ostatni wiersz" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Kolory" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Paleta kolorów \"%1\" została zmieniona.\n" +"Czy zachować zmiany?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Paleta kolorów KDE \"%1\" została zmieniona.\n" +"Czy zapisać ją do pliku?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Domyślna paleta kolorów została zmieniona.\n" +"Czy zapisać ją do pliku?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Otwórz paletę kolorów" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Paleta kolorów \"%1\" została zmieniona.\n" +"Ponowne otwarcie spowoduje utratę niezapisanych zmian.\n" +"Czy jesteś pewien?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "W&czytaj ponownie" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Paleta kolorów KDE \"%1\" została zmieniona.\n" +"Ponowne otwarcie spowoduje utratę zmian.\n" +"Czy jesteś pewien?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Domyślna paleta kolorów została zmieniona.\n" +"Ponowne otwarcie spowoduje utratę zmian.\n" +"Czy jesteś pewien?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Zapisz paletę kolorów jako" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Wklej w &nowym oknie" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Wyczyść &zaznaczenie" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "S&kopiuj do pliku..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "W&klej z pliku..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Tekst: stwórz pole tekstowe" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Tekst: wklej" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint nie może wkleić zawartości schowka jako iż przechowuje on w " +"sobie nieznany format." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Nie można wkleić" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Tekst: usuń pole tekstowe" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Zaznaczenie: usuń" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Tekst: zakończ" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Zaznaczenie: odznacz" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Skopiuj do pliku" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Wklej z pliku" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "Wye&ksportuj..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skanuj..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Zrób zrzut ekranu" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Właściwości" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "W&czytaj ponownie" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Wszystkie obsługiwane pliki (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Otwórz obraz" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Nieudane otwieranie okna skanowania." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Nieudane skanowanie" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Opóźnienie migawki" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekunda" +msgstr[1] " sekundy" +msgstr[2] " sekund" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Bez opóźnień" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Ukryj główne okno" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Właściwości dokumentu" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Zapisz obraz jako" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Wyeksportuj" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokument \"%1\" uległ zmianie.\n" +"Ponowne jego otwarcie spowoduje utratę niezapisanych zmian.\n" +"Czy jesteś pewien?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokument \"%1\" został zmieniony.\n" +"Ponowne otwarcie spowoduje utratę zmian w pliku.\n" +"Czy jesteś pewien?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Wydruk obrazu" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Musisz zapisać obraz przed wysłaniem.\n" +"Zapisać go?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokument \"%1\" uległ zmianie.\n" +"Czy chcesz go zapisać?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&Zmień rozmiar / skaluj..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "&Ustaw jako obraz (przytnij)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Odbij (do góry nogami)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Lustrzane odbicie (poziome)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "O&bróć..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Obróć w &lewo" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Obróć w &prawo" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Poc&hyl..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Zmień na &monochromatyczny (wygładzony)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Zmień na &odcienie szarości" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Odwróć kolory" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Wy&czyść" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Uczyń poufnym" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Więcej efektów..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "Obr&az" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Z&aznaczenie" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Po&każ ścieżkę" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Rysuj wygładzone" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Rodzina czcionek" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Rozmiar czcionki" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Pogrubienie" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursywa" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Podkreślenie" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Przekreślenie" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Poprzednie ustawienie narzędzia (grupa #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Następne ustawienie narzędzia (grupa #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Poprzednie ustawienie narzędzia (grupa #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Następne ustawienie narzędzia (grupa #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Nieprzezroczysty" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Podobieństwo kolorów..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Narzędzia" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Pokaż &siatkę" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Pokaż &miniaturę" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Tryb powiększonych miniatur" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Włącz &prostokąt miniatur" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Powiększenie" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Pobierz obraz" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Otwarcie wybranego skanera nie powiodło się." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pędzel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Rysuj pędzlami o różnych kształtach i rozmiarach" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Naciśnij, by rysować punkty lub przeciągnij, by rysować krzywe." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Usuwacz koloru" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Zastępuje piksele w kolorze pierwszoplanowym pikselami w kolorze tła" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" +"Naciśnij lub przeciągnij, by usunąć piksele o kolorze pierwszoplanowym." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Gumka" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Pozwala usunąć pomyłki" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Naciśnij lub przeciągnij, by wymazać." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Puść wszystkie przyciski myszy." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pióro" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Rysuje punkty linie odręczne" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Malowanie rozpylaczem" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Spray do graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Naciśnij lub przeciągnij, by malować graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Naciśnij prawy przycisk, by zaniechać." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Naciśnij lewy przycisk, by zaniechać." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Pozwala na wybór koloru z obrazu" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Naciśnij, by wybrać kolor." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Wypełnia obszary obrazu" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Naciśnij, by wypełnić obszar." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Powiększenie" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Powiększa i oddala obraz" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Naciśnij, żeby zbliżyć lub oddalić obraz albo zaznacz myszką określony " +"obszar." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Krzywa" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Rysuje krzywą" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Przeciągnij punkty początkowy i końcowy." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Wciśnij lewy przycisk, by ustawić pierwszy punkt kontrolny lub prawy, by " +"zakończyć." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Wciśnij prawy przycisk, by ustawić pierwszy punkt kontrolny lub lewy, by " +"zakończyć." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Wciśnij lewy przycisk, by ustawić ostatni punkt kontrolny lub prawy, by " +"zakończyć." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Wciśnij prawy przycisk, by ustawić ostatni punkt kontrolny lub lewy, by " +"zakończyć." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linia" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Rysuje linie" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Naciśnij i przeciągnij, aby coś narysować." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Wielokąt" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Rysuje wielokąty" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Przeciągnij, by narysować pierwszą linię." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Wciśnij lewy przycisk, by rysować następną linię lub prawy, by zakończyć." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Wciśnij prawy przycisk, by rysować następną linię lub lewy, by zakończyć." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Połączone linie" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Rysuje połączone linie" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipsa" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Rysuje elipsy i okręgi" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Prostokąt" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Rysuje prostokąty i kwadraty" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Zaokrąglony prostokąt" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Rysuje prostokąty i kwadraty z zaokrąglonymi rogami" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Przeciągnij lewym klawiszem myszy aby zaznaczyć obszar." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Przeciągnij lewym przyciskiem myszy aby przenieść zaznaczenie." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Przeciągnij lewym klawiszem myszy aby przeskalować zaznaczenie." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Zaznaczenie: Nieprzepuszczalne" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Zaznaczenie: Przeźroczyste" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Zaznaczenie: Kolor przeźroczystości" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Zaznaczenie: Podobieństwo koloru przeźroczystości" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Zaznaczenie (elipsą)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Zaznacza okrąg lub elipsę" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Zaznaczenie (dowolnym kształtem)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Zaznacza dowolny kształt" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Zaznaczenie (prostokątem)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Zaznacza prostokątny obszar" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Zaznaczenie: Przemieść" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Rozsmaruj" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Wypisuje tekst" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Tekst: cofnij" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Tekst: usuń" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Tekst: nowy wiersz" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: napisz" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Przeciągnij lewym klawiszem myszy aby stworzyć pole tekstowe." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Przeciągnij pole tekstowe lewym klawiszem myszy." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Tekst: przesuń pole tekstowe" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Przeciągnij lewym klawiszem myszy aby zmienić rozmiar pola tekstowego." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Naciśnij lewy przycisk myszy aby zmienić pozycję znacznika." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Tekst: nieprzezroczyste tło" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Tekst: przezroczyste tło" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Tekst: zamień kolory" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Tekst: kolor pierwszoplanowy" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Tekst: kolor tła" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Tekst: czcionka" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Tekst: rozmiar czcionki" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Tekst: pogrubiony" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Tekst: kursywa" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Tekst: podkreślony" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Tekst: przekreślony" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Tryb powiększonych miniatur" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                This feature applies " +"to:

                • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                To configure it, click on the cube.

                " +msgstr "" +"

                Podobieństwo kolorów - jak podobne muszą być kolory " +"różnych pikseli, aby były traktowane jako takie same.

                Jeśli ustawisz " +"tą opcję na inną niż Dokładne dopasowanie, może to pozytywnie wpłynąć " +"na efektywność pracy na wygładzanych obrazkach i zdjęciach. Funkcja ta " +"działa podobnie do funkcji \"Magiczna różdżka\" w innych programach " +"graficznych.

                Ma ona zastosowanie do:

                • Zaznaczeń " +"przezroczystych (każdy kolor w zaznaczeniu, który jest podobny " +"do koloru tła, stanie się przezroczysty), jak również do funkcji
                • Wypełnienie (dla obszarów z podobnymi - ale nie takimi " +"samymi - kolorami pikseli, najwyższe wartości w ustawieniach wypełniają " +"najwięcej pikseli),
                • Usuwacz koloru (każdy piksel, którego " +"kolor jest podobny do koloru pierwszoplanowego zostanie zastąpiony " +"kolorem tła.
                • Przytnij automatyczne i Usuń wewnętrzną " +"ramkę (dla ramek z podobnymi - ale nie takimi samymi - kolorami " +"pikseli,najwyższe wartości w ustawieniach mogą przyciąć całą ramkę),
                • Najwyższe wartości w ustawieniach powodują oznaczanie większej ilości " +"pikseli podobnych jako takich samych. Dlatego też powinno się " +"zwiększyć te wartości, jeśli zamierzony efekt nie działa w zadowalającym " +"stopniu.

                  Jeśli powoduje to z kolei zaznaczenie zbyt dużej ilości " +"podobnych pikseli (np. jeśli Wypełnienie powoduje zapełnienie całego " +"obrazu), powinno się wartości te zmniejszyć.

                  Aby je odpowiednio " +"ustawić, kliknij na kostce.

                  " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                  Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                  If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                  This feature applies " +"to:

                  • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                  • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                  • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                  • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                  Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                  However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                  " +msgstr "" +"

                  Podobieństwo kolorów - jak podobne muszą być kolory " +"różnych pikseli, aby były traktowane jako takie same.

                  Jeśli ustawisz " +"tą opcję na inną niż Dokładne dopasowanie, może to pozytywnie wpłynąć " +"na efektywność pracy na wygładzanych obrazkach i zdjęciach. Funkcja ta " +"działa podobnie do funkcji \"Magiczna różdżka\" w innych programach " +"graficznych.

                  Ma ona zastosowanie do:

                  • Zaznaczeń " +"przezroczystych (każdy kolor w zaznaczeniu, który jest podobny " +"do koloru tła, stanie się przezroczysty), jak również do funkcji
                  • Wypełnienie (dla obszarów z podobnymi - ale nie takimi " +"samymi - kolorami pikseli, najwyższe wartości w ustawieniach wypełniają " +"najwięcej pikseli),
                  • Usuwacz koloru (każdy piksel, którego " +"kolor jest podobny do koloru pierwszoplanowego zostanie zastąpiony " +"kolorem tła.
                  • Przytnij automatyczne i Usuń wewnętrzną " +"ramkę (dla ramek z podobnymi - ale nie takimi samymi - kolorami " +"pikseli,najwyższe wartości w ustawieniach mogą przyciąć całą ramkę),
                  • Najwyższe wartości w ustawieniach powodują oznaczanie większej ilości " +"pikseli podobnych jako takich samych. Dlatego też powinieneś " +"zwiększyć te wartości, jeśli zamierzony efekt nie działa w zadowalającym " +"stopniu.

                    Jednakże jeśli powoduje to zaznaczenie zbyt dużej ilości " +"podobnych pikseli (np. jeśli Wypełnienie powoduje zapełnienie całego " +"obrazu), powinieneś wartości te zmniejszyć.

                    " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                    Color Similarity: %1%

                    Click to configure.

                    " +msgstr "" +"

                    Podobieństwo kolorów: %1%

                    Naciśnij, aby ustawić." + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                    Color Similarity: Exact Match

                    Click to configure." +msgstr "" +"

                    Podobieństwo kolorów: dokładne dopasowanie

                    Naciśnij, aby ustawić.

                    " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Jasność:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Wyze&ruj" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Wyze&ruj" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanały:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Wszystkie" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Czerwony" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Zielony" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Niebieski" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Wyzeruj wszystkie w&artości" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Ustawienia" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Ilość:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Włącz" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Kolory" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Odcień:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "Na&sycenie:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Wartość:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Czerwony" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Zielony" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Niebieski" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Wszystkie" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanały" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monochromatyczny" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "M&onochromatyczny (wygładzony)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 ko&lorów" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 ko&lorów (wygładzony)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bitową paletę kolorów" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Odbarw na" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Ziarnistość:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                    To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                    To change the color of a color cell itself, double-click on it.

                    You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                    " +msgstr "" +"

                    Aby wybrać kolor pierwszoplanowy, naciśnij lewym przyciskiem myszy na " +"komórkę z kolorem. Aby wybrać kolor tła, naciśnij na komórkę z kolorem " +"prawym przyciskiem myszy.

                    Aby zmienić kolor w komórce, dwukrotnie ją " +"naciśnij.

                    Metodą \"przeciągnij i upuść\" możesz zamienić kolory dwóch " +"komórek. Jeśli przy tej operacji przytrzymasz klawisz Ctrl, docelowy " +"kolor zostanie zastąpiony zamiast zamiany z kolorem źródłowym.

                    " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "&Konwertuj do:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Jakość:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Podgląd" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Czarnobiałego" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Czarnobiałego (wygładzony)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 kolorów" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 kolorów (wygładzony)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitowych kolorów" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "&Położenie obrazu" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Na śro&dku strony" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&Lewy górny róg strony" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Przezroczysty" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Wartości domyślne KolourPainta" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Kolory: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Kolory: %1 [zmienione]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Okrąg" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kwadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Ukośnik" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Odwrotny ukośnik" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Brak wypełnienia" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Wypełnij kolorem tła" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Wypełnij kolorem pierwszoplanowym" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Nieprzezroczysty" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Dokument \"%1\" już istnieje.\n" +#~ "Zastąpić go?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Paleta kolorów o nazwie \"%1\" już istnieje.\n" +#~ "Zastąpić ją?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Ustawienie powiększenia o wartości nie będącej wielokrotnością 100% " +#~ "spowoduje nieprecyzyjną edycję i zakłócenia.\n" +#~ "Na pewno ustawić powiększenie na %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Ustaw powiększenie na %1%" + +#~ msgid "None" +#~ msgstr "Brak" + +#~ msgid "" +#~ "

                    Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                    Are you sure want to resize the image?

                    " +#~ msgstr "" +#~ "

                    Zmiana rozmiaru obrazu na %1x%2 może wymagać dużej ilości pamięci. " +#~ "Może to spowodować chwilowe spowolnienie systemu i problem z dostępem do " +#~ "zasobów w innych programach.

                    Na pewno zmienić rozmiar obrazu?

                    " + +#~ msgid "Overwrite" +#~ msgstr "Zastąp" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Nie można otworzyć \"%1\" - nieznany typ MIME." + +#~ msgid "Save Preview" +#~ msgstr "Podgląd zapisu" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "W celu uzyskania wsparcia prosimy odwiedzić stronę www." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Nie znaleziono żadnej wtyczki, która zapewniłaby okno dialogowe skanera.\n" +#~ "Zazwyczaj oznacza to, że nie zainstalowano pakietu dostarczającego " +#~ "ksaneplugin." + +#~ msgid "No Scanning Support" +#~ msgstr "Brak obsługi skanowania" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Nie zainstalowano obsługi skanowania." + +#~ msgid "" +#~ "

                    KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

                    This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

                    " +#~ msgstr "" +#~ "

                    KolourPaint nie mógł wkleić zawartości schowka, ponieważ dane " +#~ "nieoczekiwanie znikły.

                    Zwykle oznacza to, że program odpowiedzialny " +#~ "za zawartość schowka został zamknięty.

                    " + +#~ msgid "Flip Selection" +#~ msgstr "Odwróć zaznaczenie" + +#~ msgid "Flip Image" +#~ msgstr "Odwróć obrazek" + +#~ msgid "&Horizontal" +#~ msgstr "P&oziomo" + +#~ msgid "" +#~ "

                    The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                    If you save this image, any color loss will become " +#~ "permanent.

                    To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


                    It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

                    If you save this " +#~ "image, this loss of translucency will become permanent.

                    " +#~ msgstr "" +#~ "

                    Obrazek \"%1\" może zawierać więcej kolorów, niż można wyświetlić " +#~ "w aktualnym trybie pracy monitora. Aby je wyświetlić, niektóre kolory " +#~ "mogły zostać zmienione.

                    Spróbuj zwiększyć głębie koloru " +#~ "przynajmniej do %2bpp i wtedy uruchom ponownie program KolourPaint.


                    Zawiera on także elementy półprzezroczyste, które nie są w " +#~ "pełni obsługiwane. Zostaną one przybliżone jednobitową maską " +#~ "przezroczystości.

                    Jeśli zapiszesz ten obrazek, przezroczystość " +#~ "zostanie utracona na stałe

                    " + +#~ msgid "" +#~ "

                    The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                    If you save this image, any color loss will become " +#~ "permanent.

                    To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

                    " +#~ msgstr "" +#~ "

                    Obrazek \"%1\" może zawierać więcej kolorów, niż można wyświetlić " +#~ "w aktualnym trybie pracy monitora. Aby je wyświetlić, niektóre kolory " +#~ "mogły zostać zmienione.

                    Jeśli zapisałeś ten obrazek, wszystkie " +#~ "kolory mogą zostać utracone na stałe.

                    Spróbuj zwiększyć głębie " +#~ "koloru do przynajmniej %2bpp i wtedy uruchom ponownie program KolourPaint." +#~ "

                    " + +#~ msgid "" +#~ "

                    The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                    If you save this image, this loss of " +#~ "translucency will become permanent.

                    " +#~ msgstr "" +#~ "

                    Obrazek \"%1\" zawiera elementy półprzezroczyste, które nie są w " +#~ "pełni obsługiwane. Zostaną one przybliżone jednobitową maską " +#~ "przezroczystości.

                    Jeśli zapiszesz ten obrazek, przezroczystość " +#~ "może zostać utracona na stałe.

                    " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Nie można otworzyć \"%1\" - za mało pamięci dla grafiki." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Scanning Support" +#~ msgstr "Obsługa skanowania" + +#~ msgid "" +#~ "

                    The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                    If you save this image, any color loss will " +#~ "become permanent.

                    To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


                    It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

                    If you save " +#~ "this image, this loss of translucency will become permanent.

                    " +#~ msgstr "" +#~ "

                    Wklejany obrazek może zawierać więcej kolorów, niż można " +#~ "wyświetlić w aktualnym trybie pracy monitora. Aby je wyświetlić, niektóre " +#~ "kolory mogły zostać zmienione.

                    Jeśli zapiszesz ten obrazek, " +#~ "wszystkie kolory zostaną utracone na stałe.

                    Spróbuj zwiększyć " +#~ "głębie koloru przynajmniej do %1bpp i wtedy uruchom ponownie program " +#~ "KolourPaint.


                    Zawiera on także elementy półprzezroczyste, które " +#~ "nie są w pełni obsługiwane. Zostaną one przybliżone jednobitową maską " +#~ "przezroczystości.

                    Jeśli zapiszesz ten obrazek, przezroczystość " +#~ "będzie utracona na stałe.

                    " + +#~ msgid "" +#~ "

                    The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                    If you save this image, any color loss will " +#~ "become permanent.

                    To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

                    " +#~ msgstr "" +#~ "

                    Wklejany obrazek może zawierać więcej kolorów, niż można " +#~ "wyświetlić w aktualnym trybie pracy monitora, niektóre informacje o " +#~ "kolorach mogą zostać usunięte.

                    Jeśli zapiszesz ten obrazek, " +#~ "wszystkie kolory zostaną utracone na stałe.

                    Aby uniknąć błędów, " +#~ "spróbuj zwiększyć głębie koloru do przynajmniej %1bpp i wtedy uruchom " +#~ "ponownie program KolourPaint.

                    " + +#~ msgid "" +#~ "

                    The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                    If you save this image, this loss of " +#~ "translucency will become permanent.

                    " +#~ msgstr "" +#~ "

                    Wklejany obrazek zawiera elementy półprzezroczyste, które nie są w " +#~ "pełni obsługiwane. Zostaną one przybliżone jednobitową maską " +#~ "przezroczystości.

                    Jeśli zapiszesz ten obrazek, przezroczystość " +#~ "zostanie utracona na stałe.

                    " + +#~ msgid "

                    There is nothing in the clipboard to paste.

                    " +#~ msgstr "

                    W schowku nie ma nic do wklejenia.

                    " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Ustaw jako &tapetę pulpitu (wyśrodkowaną)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Ustaw jako tapetę (ka&felki)" + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Nie można skanować - brak pamięci na grafikę." + +#~ msgid "Cannot Scan" +#~ msgstr "Nie można skanować" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Zanim obrazek zostanie ustawiony jako tapeta pulpitu musi zostać zapisany " +#~ "jako plik lokalny.\n" +#~ "Zapisać go?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Zanim obrazek zostanie ustawiony jako tapeta pulpitu musi zostać " +#~ "zapisany.\n" +#~ "Zapisać go?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Nie można zmienić tapety pulpitu." + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Tworzenie &zrzutów ekranu" + +#~ msgid "" +#~ "

                    To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

                    You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

                    Alternatively, you may try the application KSnapshot.

                    " +#~ msgstr "" +#~ "

                    Żeby utworzyć zrzut ekranu, wciśnij %1. Zrzut zostanie " +#~ "umieszczony w schowku i można go będzie wkleić do programu KolourPaint.

                    Skrót do zrzutu pulpitu można skonfigurować w module Ustawień " +#~ "systemowych Skróty klawiszowe.

                    Można też użyć programu KSnapshot.

                    " + +#~ msgid "" +#~ "

                    You do not appear to be running KDE.

                    Once you have loaded KDE:" +#~ "

                    To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

                    Alternatively, you may try the " +#~ "application KSnapshot.

                    " +#~ msgstr "" +#~ "

                    Wygląda na to, że KDE nie jest uruchomione.

                    Po uruchomieniu " +#~ "KDE:\n" +#~ "

                    By utworzyć zrzut ekranu, wciśnij %1. Zrzut " +#~ "zostanie umieszczony w schowku i można go będzie wkleić do programu " +#~ "KolourPaint.

                    Można też użyć programu KSnapshot.

                    " + +#~ msgid "&Flip..." +#~ msgstr "O&dwróć..." + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Informacja o utraconych kolorach i przezroczystości" + +#~ msgid "Loss of Color Information" +#~ msgstr "Informacja o utraconych kolorach" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Informacja o utraconej przezroczystości" + +#~ msgid "" +#~ "

                    KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

                    To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

                    " +#~ msgstr "" +#~ "

                    KolourPaint nie obsługuje obecnej głębi %1bpp. KolourPaint " +#~ "spróbuje się uruchomić, ale może nie działać prawidłowo.

                    Aby tego " +#~ "uniknąć, proszę zmienić głębię ekranu do 24bpp i wtedy ponownie uruchomić " +#~ "KolourPaint.

                    " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Nieobsługiwany tryb graficzny ekranu" + +#~ msgid "" +#~ "

                    This effect does not support the current screen depth of %1bpp.

                    To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

                    " +#~ msgstr "" +#~ "

                    Ten efekt nie obsługuje obecnej głębi %1bpp.

                    Aby uniknąć " +#~ "problemów, proszę zmienić głębię ekranu do 24bpp i wtedy ponownie " +#~ "uruchomić KolourPaint.

                    " diff --git a/po/pt/docs/kolourpaint/index.docbook b/po/pt/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..47a2d11 --- /dev/null +++ b/po/pt/docs/kolourpaint/index.docbook @@ -0,0 +1,1776 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +O Manual do &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +JoséPires
                    zepires@gmail.com
                    Tradução
                    +
                    + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2016-07-25 +Aplicações 16.08 + + +O &kolourpaint; é um programa livre e simples de usar do &kde;. + + + +kolourpaint +kdegraphics + + +
                    + + +Introdução +O &kolourpaint; é um programa de desenho livre e simples de usar do &kde;. É perfeito para as tarefas do dia-a-dia como: + + + +Desenho - desenhar diagramas e pinturas manuais + + +Manipular Capturas do Ecrã - adquirir e editar capturas + + +Manipulação de Imagens - editar imagens e capturas; aplicar efeitos + + +Edição de Ícones - desenhar imagens e logótipos com transparência + + + + + + + + + + + + + +Utilizar o &kolourpaint; + +Carregue nas seguintes referências para explorar as capacidades do &kolourpaint;: + + + +Ferramentas + + +Trabalhar com Cores + + +Opções de Visualização + + +Efeitos de Imagens + + + + + +Ferramentas + + +Adquirir Capturas do Ecrã + +Uma captura do ecrã é uma imagem do que se passa no ecrã do seu computador. Pode ser útil para explicar algumas acções que deverão ser feitas para obter o resultado ou para demonstrar o problema com que se deparou. +Para tornar uma captura do ecrã pronta para ser editada na janela do &kolourpaint;, pode usar a opção FicheiroCapturar o Ecrã do menu principal do &kolourpaint;. + + + + + + + +Ao usar a janela aberta, poderá mudar o Atraso da Captura (em segundos) e optar por Esconder a Janela Principal durante a captura. Quando estiver tudo pronto, basta carregar em OK. A imagem capturada será colocada então directamente na área de edição do &kolourpaint;. + + + +Referência de Ferramentas + +Uma forma rápida de seleccionar uma ferramenta no &kolourpaint; é carregar no atalho de teclado associado a ele, o qual aparece documentado em baixo e nas dicas da Caixa de Ferramentas. Poderá também manter carregado o &Alt;&Shift; enquanto carrega na tecla, o que é necessário quando você estiver a escrever texto (dado que os atalhos de teclado com teclas simples ficarão desactivados). Por exemplo, para seleccionar o pincel, carregue em &Alt;&Shift;B ou apenas em B (quando não estiver a escrever texto). + + + Pincel (B) + + Borracha de Cores (O) + + Extractor de Cores (C) + + Linhas Interligadas (N) + + Curva (V) + + Elipse (E) + + Borracha (A) + + Preenchimento (F) + + Linha (L) + + Traço (P) + + Polígono (G) + + Rectângulo (R) + + Rectângulo Arredondado (U) + + Selecção (Elíptica) (I) + + Selecção (Livre) (M) + + Selecção (Rectangular) (S) + + 'Spray' (Y) + + Texto (T) + + + + + +Pincel <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Carregue simplesmente ou carregue e arraste o pincel para desenhar. + + + + + + + + + + + + + + +Carregue numa das formas para seleccionar a forma geométrica do pincel. Você poderá usar uma forma de pincel circular, quadrada, em barra ou em barra invertida. + + + + + + +O &LMB; desenha com a cor principal. O &RMB; desenha com a cor de fundo. + + + +Obter uma Cor <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Para atribuir a nova cor de desenho, carregue com o botão esquerdo num pixel. Para atribuir a nova cor de fundo, carregue com o &RMB; num pixel. O &kolourpaint; irá então voltar à ferramenta seleccionada anteriormente. + + + + +Linhas Interligadas e Polígonos <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue e arraste para desenhar linhas interligadas ou poligonais. A ferramenta do polígono é usada da mesma forma, só que os pontos iniciais e final são automaticamente ligados para formar um polígono. + +O &LMB; desenha com a cor principal. O &RMB; desenha com a cor de fundo e irá inverter também a cor de preenchimento dos polígonos. + +Você poderá definir a espessura do traço. Para os polígonos, você também poderá definir o estilo de preenchimento. + + + + +Curva <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue e arraste para desenhar uma linha - isto configurar os pontos inicial e final. Você poderá definir até dois pontos de controlo por arrastamento. Para terminar a curva sem usar qualquer um dos pontos de controlo, carregue com o outro botão do rato. A ferramenta de curvas desenha uma Bezier Cúbica. + +O &LMB; desenha com a cor principal. O &RMB; desenha com a cor de fundo. + +Você poderá também configurar a espessura do traço. + + + + +Elipse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue e arraste para desenhar uma elipse. + +O &LMB; desenha com a cor principal. O &RMB; desenha com a cor de fundo e irá inverter também a cor de preenchimento. + +Você poderá também configurar a espessura do traço e o estilo do preenchimento. + +Para as funcionalidades adicionais, use as teclas modificadoras: + + + +Mantenha o &Shift; carregado e arraste para desenhar um círculo. + + +Para desenhar uma elipse com um ponto central à sua escolha, mantenha o &Ctrl; carregado, carregue no ponto central e arraste até que a elipse tenha o tamanho e forma correctos. + + +Para desenhar um círculo com um ponto central à sua escolha, mantenha o &Ctrl; e o &Shift; carregados, carregue no ponto central e arraste até que o círculo tenha o tamanho correcto. + + + + + + +Borrachas + + +Borracha <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue a arraste a borracha para apagar os erros. + + +Ao contrário das outras ferramentas, as borrachas desenham com a cor de fundo. Para desenhar com a cor principal, use o &RMB;. + + +A borracha só tem formas quadradas. Para desenhar com outras formas, como por exemplo, círculos, use o Pincel e o &RMB;. + + +Faça duplo-click no ícone da Borracha para limpar a imagem por inteiro. Isto é equivalente a usar a opção Limpar do menu Imagem. + + + + + +Limpeza de Cor <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue e arraste para substituir os pixels da cor principal com a cor de fundo. Para substituir todos os pixels de cores semelhantes (mas não necessariamente iguais) à cor principal, como nas imagens com meios-tons e nas fotos, use uma configuração de Semelhança de Cores em vez da Exacta. + + +Ao contrário das outras ferramentas, as borrachas desenham com a cor de fundo. Para substituir os pixels da cor de fundo com a cor principal, use o &RMB;. + + +Você poderá configurar o tamanho da borracha. + + +Faça duplo-click no ícone da Borracha de Cor para o aplicar à imagem inteira. + + + + + + +Preenchimento <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue para preencher uma dada região. Para preencher uma região com meios-tons, use uma configuração de Semelhança de Cores em vez da Exacta. + +O &LMB; preenche com a cor principal. O &RMB; preenche com a cor de fundo. + + + +Linha <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue e arraste para desenhar uma linha. + +O &LMB; desenha com a cor principal. O &RMB; desenha com a cor de fundo. + +Você poderá também configurar a espessura do traço. + + + + + + + + + + + + + + + + + + + + + +Mantenha o &Ctrl; carregado para desenhar linhas com ângulos com o múltiplo de 30 graus mais próximo - estas são as linhas no diagrama vermelho. + + +Mantenha o &Shift; carregado para desenhar linhas com ângulos com o múltiplo de 45 graus mais próximo - estas são as linhas no diagrama azul. + + +Mantenha o &Ctrl; e &Shift; carregado para desenhar linhas com ângulos com o múltiplo de 30 ou 45 graus mais próximo - estas são as linhas no diagrama verde. + + + + + + +Traço <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue para desenhar um ponto ou carregue e arraste para desenhar uma linha livre. + +O &LMB; desenha com a cor principal. O &RMB; desenha com a cor de fundo. + + + + +Rectângulos <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue e arraste para desenhar um rectângulo. O Rectângulo Arredondado ou Rectângulo Arredondado é um rectângulo com os cantos arredondados. + +O &LMB; desenha com a cor principal. O &RMB; desenha com a cor de fundo e irá inverter também a cor de preenchimento. + +Você poderá também configurar a espessura do traço e o estilo do preenchimento. + +Para as funcionalidades adicionais, use as teclas modificadoras: + + + +Mantenha o &Shift; carregado e arraste para desenhar um quadrado. + + +Para desenhar um rectângulo com um ponto central à sua escolha, mantenha o &Ctrl; carregado, carregue no ponto central e arraste até que o rectângulo tenha o tamanho e forma correctos. + + +Para desenhar um quadrado com um ponto central à sua escolha, mantenha o &Ctrl; e o &Shift; carregados, carregue no ponto central e arraste até que o quadrado tenha o tamanho correcto. + + + + + + +Selecções <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Use as ferramentas de selecção para definir o contorno de uma selecção. + +Para mover a selecção, carregue e arraste-a. A janela principal deslocar-se-á para lhe permitir mover a selecção para uma parte da imagem que não esteja visível de momento. + +Poderá fazer uma Escala Suave da selecção ou Redimensionar a imagem com as pegas. Mantenha o &Shift; carregado, enquanto faz uma escala livre, para manter as proporções de tamanho. O &RMB; invoca um menu de contexto com comandos comuns para Editar e Efeitos de Imagem. + + +Você poderá usar as teclas dos cursores enquanto define o limite da selecção ou enquanto a muda de posição. + + +Se você mantiver carregado o &Ctrl; antes de mover a selecção, então você irá mudar de posição uma cópia do mesmo. Se mantiver o &Shift; carregado antes de mudar de posição a selecção, você irá manchá-la. + + + + + + + + + + + + + +Existem dois módulos de selecção: o Opaco (por omissão) e o Transparente. Se você usar o modo de selecção Transparente, todos os pixels com a cor de fundo ficarão transparentes (subtracção do fundo). Isto permite-lhe colar uma selecção sem o fundo. Para efectuar a subtracção de fundo numa imagem com meios-tons, use uma configuração de Semelhança de Cores em vez da Exacta. + + + + + + +Você poderá aplicar Efeitos de Imagem a uma selecção - veja a secção sobre Efeitos de Imagens para mais informações. + +É possível gravar a selecção para um ficheiro, usando o item Copiar para um Ficheiro... do menu de contexto da selecção ou a opção EditarCopiar para um Ficheiro... do menu principal. + + + +Lata de spray <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue e arraste para fazer 'graffitis' com 'spray'. Mantenha o botão do rato carregado para um 'spray' mais concentrado. + + + + + + + + + + + + + +Carregue numa das formas para seleccionar o tamanho do 'spray'. Você poderá seleccionar os tamanhos do 'spray' 9x9, 17x17 e 29x29. + + + + + + +O &LMB; desenha com a cor principal. O &RMB; desenha com a cor de fundo. + + + + +Texto <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Carregue e arraste uma área na qual irá escrever algum texto. Carregue e arraste o contorno para o mudar de posição. Poderá dimensionar a área de texto, arrastando as pegas ou usando a janela para Dimensionar. + + +Se você tiver deseleccionado uma área de texto, você poderá carregar em Desfazer para editar o texto de novo. + + + +Usar a Cor Transparente + + + + + + + + +A imagem da esquerda mostra a imagem de exemplo. A imagem da direita mostra a adição de texto com uma cor de texto e de fundo opacas. + + + + + + + + + +A imagem da esquerda mostra a adição do texto com uma cor de texto opaca e de fundo transparente. A imagem da direita mostra a adição de texto com uma cor de texto transparente e de fundo opaca. + + + + +Opções Comuns das Ferramentas + + + + + + + + + + + + + +Carregue num dos quadrados para seleccionar o tamanho da borracha. Você poderá seleccionar quadrados cujo tamanho tenha 2, 3, 5, 9, 17 e 29 pixels. + +A configuração do tamanho afecta as Borrachas. + + + + + + + + + + + +Carregue numa das linhas para seleccionar a espessura do traço. Você poderá seleccionar as espessuras de traços de 1, 2, 3, 5 e 8 pixel(s). + +A configuração da espessura do traço afecta as Linhas Interligadas, Curva, Elipse, Linha, Polígono, Rectângulos e Rectângulos Arredondados. + + + + + + + + + + + +Carregue num dos rectângulos para seleccionar o tipo de preenchimento. Você poderá optar por Sem Preenchimento, Preencher com a Cor de Fundo e Preencher com a Cor Principal. O estilo de preenchimento afecta as ferramentas Elipse, Polígono, Rectângulo e Rectângulo Arredondado. + + + + + + + + + + +Trabalhar com Cores + + +A Área de Cores + + + + + + + +Área de Cores + + + + +A Área de Cores tem três secções principais: a Tableta de Cores, a Paleta de Cores e o Selector de Semelhança de Cores. + +A Tableta de Cores mostra a cor principal actual como um quadrado por cima de outro quadrado que representa a cor de fundo actual. Ao desenhar com o &LMB;, é usada a cor principal e, ao desenhar com o &RMB;, é usada a cor de fundo (excepto nas Borrachas). Você poderá carregar na seta de duas pontas para trocar as cores. + +A Paleta de Cores mostra uma selecção de cores onde você poderá escolher a cor a usar. A pirâmide translúcida representa a cor transparente. Carregue com o &LMB; para definir a cor principal e com o &RMB; para definir a cor de fundo. Você poderá também arrastar e largar qualquer cor opaca nos quadrados da Tableta de Cores. Para editar uma cor na Tableta ou na Paleta de Cores, faça duplo-click nela. A ferramenta de Extracção de Cores permite-lhe seleccionar uma cor da imagem. + +A Semelhança de Cores permite-lhe trabalhar de forma mais efectiva com as imagens com meios-tons e com as fotos, de forma semelhante à Varinha Mágica de outros programas. Ela aplica-se às selecções transparentes, assim como ao Preenchimento, à Borracha de Cores e ao Auto-corte / Remover o Contorno Interno. Faça duplo-click no selector de Semelhança de Cores para indicar como é que as cores semelhantes poderão ser consideradas iguais. Ao usar as selecções no modo Transparente, todas as cores da selecção que sejam semelhantes às cores de fundo ficarão também transparentes. + + + + + + + + + +A figura da esquerda mostra a imagem de exemplo. As figuras à direita demonstram a utilização de um preenchimento com a opção de Semelhança de Cores a 5%, 15% e 30%. Neste exemplo, com uma opção de Semelhança de Cores Exacta, um preenchimento em (80, 100) iria só preencher um pixel, dado que os pixels adjacentes não são idênticos. À medida que a Semelhança de Cores vai aumentando. os pixels que sejam semelhantes em termos de cores são considerados idênticos, daí o preenchimento se extender mais um pouco. + + + + + +Opções de Visualização + + +Referência das Opções de Visualização + +Ampliação com Grelha Incorporada +Miniatura + + + + +Ampliação com grelha incorporada +Aumenta o nível de ampliação para editar as imagens com maior precisão ou reduz-lo, para ver mais partes da imagem. + + +No caso dos níveis de ampliação que não sejam múltiplos de 100%, partes da imagem irão parecer que se movem, quando o utilizador interage com elas. Poderão também ocorrer algumas pequenas falhas de actualização nesses níveis de ampliação. + + +Nos níveis de ampliação de 400% ou superior, que sejam também múltiplos de 100%, poderá Mostrar a Grelha para editar com maior precisão os pixels individuais. + + + + + + + + + + + + + + + +A primeira imagem mostra o ícone da ferramenta de Texto, enquanto a última mostra-a com uma ampliação de 600%, com a grelha activada. + + +Outra forma de ampliar, quando não está a desenhar, é deslocar a roda do rato enquanto carrega no &Ctrl;. + + + + + +Miniatura + + + + + + + +Se estiver seleccionado o Modo de Miniaturas Ampliadas, a imagem inteira é apresentada e dimensionada como for necessário para caber na janela de miniaturas (imagem do canto superior direito). +Caso contrário, a miniatura mostra o máximo possível da imagem, a começar no canto superior esquerdo da área principal (imagem inferior-direita). + + + + + +Efeitos de Imagens + + +Referência dos Efeitos de Imagens +Auto-corte / Remover o Contorno Interno +Balanceamento +Limpar +Gravar +Aplanar +Inverter (baixo para cima) +Inverter +Reduzir as Cores +Reduzir para Tons de Cinzento +Reduzir para Monocromático (Rasterizado) +Espelho (horizontal) +Redimensionar +Rodar +Definir como Imagem (Recortar) +Inclinar +Suavizar & Afiar +Mais Efeitos +Notas + + + +Auto-corte / Remover o Contorno Interno + +Isto remove automaticamente o contorno de uma imagem ou da selecção. Use o Auto-Corte se tiver uma figura que não ocupe a imagem inteira e deseja remover o espaço em branco em excesso. Para auto-cortar uma imagem com um contorno de imagem com meios-tons, use também a Semelhança de Cores. + + + + +Balanceamento + +Esta funcionalidade está acessível através da janela Mais Efeitos. + + + + + + + + +Isto permite-lhe definir o brilho, o contraste e o factor 'gama' da imagem ou da área seleccionada. + + +A medida mais comum do 'gama' (um valor decimal de 0,10 a 10,00) está localizado entre o campo incremental Gama e o botão Limpar. + + + + +Limpar + +Isto preenche a imagem inteira ou a selecção com a cor de fundo. + + +Faça duplo-click no ícone da Borracha para limpar a imagem por inteiro. + + + + + +Gravar + +Esta funcionalidade está acessível através da janela Mais Efeitos. + + + + + + + + +Carregue em Activar para aplicar o efeito de Gravação. Isto realça os extremos e dá à imagem ou selecção um "efeito de gravado". + + + +Aplanar + +Esta funcionalidade está acessível através da janela Mais Efeitos. + + + + + + + + +Volta a colorir a imagem com tons variados das duas cores seleccionadas. + + + +Inverter (baixo para cima) + +Isto inverte a imagem inteira ou a selecção na vertical. + + + + +Inverter + +Esta funcionalidade está acessível através da janela Mais Efeitos. + + + + + + + + +Isto permite-lhe inverter um ou mais canais RGB na imagem ou na selecção. Seleccione Tudo para mudar uma foto para o seu negativo e vice-versa. Isto normalmente cria um efeito bastante engraçado. + + +Para inverter rapidamente todos os canais, não precisa de usar esta janela. Poderá aceder em alternativa ao item Inverter as Cores do menu Imagem ou Selecção. O item Selecção só aparece no menu se usar uma das ferramentas de selecção. Adicionalmente, poderá chegar a esta opção com o menu de contexto que aparece com o &RMB; sobre a área da imagem. + + + + + +Espelho (horizontal) + +Isto inverte a imagem inteira ou a selecção na horizontal. + + + + +Reduzir as Cores + +Esta funcionalidade está acessível através da janela Mais Efeitos. + + + + + + + + +Isto reduz o número de cores usado pela imagem ou pela selecção, com ou sem rasterização. + +A rasterização oferece normalmente melhores resultados de qualidade, contudo, poderá querer desactivá-la para efeitos artísticos; ⪚ ao usar o Monocromático em vez do Monocromático (Rasterizado) irá dar um efeito de silhueta. + +Outra distinção importante é que, enquanto o Monocromático (Rasterizado) irá reduzir sempre a imagem inteira ou a selecção para preto-e-branco, o Monocromático só fará isso se a imagem ou a selecção tiver mais que 2 cores. + + +Para uma imagem monocromática rápida e rasterizada, use o item Reduzir para Monocromático (Rasterizado) do menu Imagem ou Selecção. O item Selecção só aparece no menu se usar uma das ferramentas de selecção. Adicionalmente, poderá chegar a esta opção com o menu de contexto que aparece com o &RMB; sobre a área da imagem. + + + +A alteração das cores aqui não terá efeito na profundidade de cor do formato do ficheiro. Se quiser alterar a profundidade de cor, o utilizador devê-la-á seleccionar nas janelas de gravação de ficheiros. Repare que, confusamente, a alteração da profundidade de cor irá também alterar o número de cores. + + + + +Reduzir para Tons de Cinzento + +Isto reduz a imagem completa ou a selecção para tons de cinzento. + + + + +Reduzir para Monocromático (Rasterizado) + +Isto reduz a imagem inteira ou a selecção para preto e branco. + + +Se não quiser que a imagem ou a selecção seja rasterizada, use a janela para Reduzir as Cores. + + + + +Redimensionar + + + + + + + + + +O redimensionamento de uma imagem altera as dimensões da mesma sem aplicar uma transformação do conteúdo existente. A mudança de escala irá reduzir o conteúdo existente para as dimensões novas. A Escala Suave normalmente dá melhores resultados de qualidade que a Escala, misturando as cores adjacentes. + +Você poderá exprimir as novas dimensões em pixels, ou como uma percentagem do tamanho original. Se você seleccionar a opção Manter as proporções, a largura e a altura serão escaladas na mesma medida. + + +Poderá fazer uma Escala Suave livre da selecção ou Redimensionar a imagem com as pegas. + + + +Só é permitido o redimensionamento por escala para as selecções, e só é permitido o redimensionamento para as zonas de texto. Veja as Notas para mais detalhes sobre a aplicação destes efeitos. + + + + +Rodar + + + + + + + + + +Isto roda a imagem. Você poderá especificar o ângulo e a direcção da rotação. + + +Você poderá inverter a direcção da rotação se indicar um ângulo negativo. + + + +Veja as Notas para mais detalhes sobre como aplicar este efeito a uma selecção. + + + + +Definir como Imagem (Recortar) + +Isto fará com que a selecção passe a ser a imagem em si. + + +Isto só está disponível quando você tiver uma selecção activa. + + + + +Inclinar + + + + + + + + + +Isto inclina a imagem inteira ou a selecção na horizontal e/ou na vertical. + + +Veja as Notas para mais detalhes sobre como aplicar este efeito a uma selecção. + + + + +Suavizar & Afiar + +Esta funcionalidade está acessível através da janela Mais Efeitos. + + + + + + + + +Use este efeito para suavizar ou afiar os detalhes da imagem. + + + + +Mais Efeitos + +Esta janela contém as funcionalidades para Balanceamento, Gravar, Aplanar, Inverter, Reduzir Cores e Suavizar & Afiar. + + + +Notas + +O Redimensionamento, a Rotação e a Inclinação podem alterar as dimensões da imagem. Você poderá ver as novas dimensões na janela. + +Se você aplicar estes efeitos a uma imagem, esta será redimensionada se necessário. Contudo, se você aplicar estes efeitos a uma selecção, a imagem não será redimensionada, mesmo que a selecção transformada não caiba. + + + + + + + + + +A imagem da esquerda foi rodada 30 graus no sentido dos ponteiros do relógio para formar a imagem correcta. O &kolourpaint; alargou automaticamente a imagem para acomodar o conteúdo maior. + + + + + + + + + +A selecção da esquerda foi rodada 30 graus para formar a selecção correcta. O tamanho da imagem manteve-se o mesmo, dado que partes da selecção não serão visíveis sem Redimensionar a imagem. + + + + + +Créditos e Licença + +Carl Tucker +Poderá não ser uma documentação concisa, poderá não ser completa, mas é documentação honesta. + + +&kolourpaint; +Programa Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Ícones específicos do &kolourpaint; com 'copyright' © 2004, 2005 de Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Documentação e desenhos adicionais da documentação Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail;. + +Partes foram reproduzidas com permissão de . + +Tradução de José Nuno Pires zepires@gmail.com +&underFDL; Este programa está licenciado da seguinte forma: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; +
                    + + diff --git a/po/pt/kolourpaint.po b/po/pt/kolourpaint.po new file mode 100644 index 0000000..a3642ad --- /dev/null +++ b/po/pt/kolourpaint.po @@ -0,0 +1,2749 @@ +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-04 00:18+0100\n" +"Last-Translator: Pedro Morais \n" +"Language-Team: pt \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Spell-Extra: KPaint spray Redondângulo\n" +"X-POFile-SpellExtra: KolourPaint KSnapshot InputMethod image Zoom zoom bpp\n" +"X-POFile-IgnoreConsistency: C&lockwise\n" +"X-POFile-SpellExtra: Backspace aprox Kazuki Mike Danny Laurent Clarence\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-POFile-SpellExtra: Thurston Kristof Gashler Koller Dang Montel\n" +"X-POFile-SpellExtra: toolToolBarHiddenMenu DPI Borrey Granularidade Ohta\n" +"X-POFile-SpellExtra: and Control drag drop Tasuku Suzuki Feck Christoph KF\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "José Nuno Pires,Pedro Morais" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "zepires@gmail.com,morais@kde.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Saldo" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Suavizar" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Afiamento" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Limpar" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selecção: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Elevar" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Alisar" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduzir para Tons de Cinzento" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Matiz, Saturação, Valor" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inverter as Cores" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverter" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduzir para Monocromático (Rasterizado)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduzir para Monocromático" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduzir para 256 Cores (Rasterizado)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduzir para 256 Cores" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Equalizador do Histograma" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Inverter" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Inverter horizontalmente e verticalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Inverter horizontalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Inverter verticalmente" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Texto: Mudar o Tamanho da Caixa" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Selecção: Escala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selecção: Escala Suave" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Dimensionar" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Escala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Escala Suave" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rodar" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Inclinar" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "Desfa&zer: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "Desfa&zer" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Refazer: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Refazer" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Desfazer: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Desfazer" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Refazer: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Refazer" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "mais %1 item" +msgstr[1] "mais %1 itens" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Obter uma Cor" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Preenchimento" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Mais Efeitos de Imagem (Escolha)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Mais Efeitos de Imagem" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efeito:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reduzir as Cores" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Suavizar e Afiar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Propriedades do Documento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Pontos &Por Polegada (PPP)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Não indicada" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                    Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                    The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                    If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                    If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                    Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                    " +msgstr "" +"

                    Os Pontos por Polegada (PPP ou DPI) definem o número de pixels " +"da imagem que deverão ser impressos dentro de uma polegada (2,54cm).

                    Quanto maior os PPP da imagem, menor é a imagem impressa. Lembre-se que " +"a sua impressora tem pouca probabilidade de produzir impressões de qualidade " +"se você aumentar este valor para mais de 300 ou 600 PPP, dependendo da " +"impressora.

                    Se quiser imprimir a imagem, de modo que tenha o mesmo " +"tamanho com que é apresentada no ecrã, defina os valores de PPP da imagem " +"como sendo iguais aos do ecrã.

                    Se ambos os valores de PPP estiverem " +"Não Indicados, a imagem será também impressa com o mesmo tamanho da " +"do ecrã.

                    Nem todos os formatos de imagem suportam os valores de PPP. " +"Se o formato com que gravar não os suportar, estes não serão gravados.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Desl&ocamento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                    The Offset is the relative position where this image should be " +"placed, compared to other images.

                    Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                    " +msgstr "" +"

                    O Deslocamento é a posição relativa onde a imagem deverá ser " +"colocada, em relação às outras imagens.

                    Nem todos os formatos de " +"imagem suportam a funcionalidades do Deslocamento. Se o formato com " +"que gravar não o suportar, os valores aqui indicados não serão gravados." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Campos de &Texto" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Adicionar uma Linha" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Apa&gar a Linha" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Reiniciar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                    Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                    However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                    Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                    " +msgstr "" +"

                    Os Campos de Texto oferecem informações extra acerca da " +"imagem. Isto é provavelmente uma área de comentários onde poderá escrever à " +"vontade qualquer texto.

                    Contudo, este é específico do formato, pelo " +"que os campos poderiam ser dados interpretados pelo computador, em teoria - " +"que não deverá modificar - mas isto é pouco provável.

                    Nem todos os " +"formatos de imagem suportam os Campos de Texto. Se o formato em que " +"gravar não os suportar, estes não serão gravados.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Chave" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "O valor de texto \"%1\" na linha %2 necessita de uma chave." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Todas as chaves de texto deverão ser únicas. A chave de texto \"%1\" nas " +"linhas %2 e %3 é idêntica." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Campos de Texto Inválidos" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensões" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Antevisão" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Act&ualizar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Dimensionar / Escalar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Ac&tuar em:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Toda a Imagem" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selecção" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Caixa de Texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operação" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                    • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                    • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                    • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                    " +msgstr "" +"
                    • Mudar o Tamanho: O tamanho da imagem será aumentado " +"criando áreas novas à direita e/ou em baixo (preenchidas com a cor de fundo) " +"ou diminuída cortando à direita e/ou em baixo.
                    • Escala: A " +"imagem será expandida duplicando pontos ou encolhida perdendo alguns pixels." +"
                    • Escala Suave: O mesmo do que Escala, excepto que " +"mistura os pontos vizinhos para produzir uma imagem com um aspecto mais " +"suave.
                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Dimensiona&r" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "E&scalar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "E&scala Suave" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Largura:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Altura:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Novo:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Percentagem:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Manter &as proporções" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                    Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to resize the text box?

                    " +msgstr "" +"

                    Mudar o tamanho da caixa de texto para %1x%2 pode ocupar uma " +"quantidade substancial de memória. Isto poderá reduzir a capacidade de " +"resposta do sistema e provocar problemas de recursos a outras aplicações.

                    Tem a certeza que deseja redimensionar a caixa de texto?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Dimensionar a Caixa de Texto?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Dimensionar a Caixa d&e Texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                    Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to resize the image?

                    " +msgstr "" +"

                    Mudar o tamanho da imagem para %1x%2 pode ocupar uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e provocar problemas de recursos a outras aplicações.

                    Tem a " +"certeza que deseja redimensionar a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Dimensionar a Imagem?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Dim&ensionar a Imagem" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                    Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to scale the image?

                    " +msgstr "" +"

                    Escalar a imagem para %1x%2 pode ocupar uma quantidade substancial de " +"memória. Isto poderá reduzir a capacidade de resposta do sistema e provocar " +"problemas de recursos a outras aplicações.

                    Tem a certeza que deseja " +"escalar a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Escalar a Imagem?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&Escalar a Imagem" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                    Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to scale the selection?

                    " +msgstr "" +"

                    Escalar a selecção para %1x%2 poderá consumir uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e poderá provocar outros problemas de recursos da aplicação.

                    Tem a certeza que deseja escalar a selecção?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Escalar a Selecção?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Escalar a Selecção" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                    Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the image?" +msgstr "" +"

                    Escalar suavemente a imagem para %1x%2 pode ocupar uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e provocar problemas de recursos a outras aplicações.

                    Tem a " +"certeza que deseja escalar suavemente a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Escalar Suavemente a Imagem?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "&Escalar Suavemente a Imagem" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                    Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the selection?" +"

                    " +msgstr "" +"

                    Escalar suavemente a selecção para %1x%2 pode ocupar uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e provocar problemas de recursos a outras aplicações.

                    Tem a " +"certeza que deseja escalar suavemente a selecção?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Escalar Suavemente a Selecção?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "&Escalar Suavemente a Selecção" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rodar a Selecção" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rodar a Imagem" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Depois de rodar:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direcção" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Se&ntido Anti-horário" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Sen&tido Horário" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Ângulo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 gr&aus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&raus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Personalizado:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                    Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to rotate the selection?

                    " +msgstr "" +"

                    Rodar a selecção para %1x%2 poderá consumir uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e poderá provocar outros problemas de recursos da aplicação.

                    Tem a certeza que deseja rodar a selecção?

                    " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rodar a Selecção?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rodar a S&elecção" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                    Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to rotate the image?

                    " +msgstr "" +"

                    Rodar a imagem para %1x%2 poderá consumir uma quantidade substancial " +"de memória. Isto poderá reduzir a capacidade de resposta do sistema e poderá " +"provocar outros problemas de recursos da aplicação.

                    Tem a certeza que " +"deseja rodar a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rodar a Imagem?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rodar a Imag&em" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Inclinar a Selecção" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Inclinar a Imagem" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Depois de inclinar:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                    Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to skew the selection?

                    " +msgstr "" +"

                    Inclinar a selecção para %1x%2 poderá consumir uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e poderá provocar outros problemas de recursos da aplicação.

                    Tem a certeza que deseja inclinar a selecção?

                    " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Inclinar a Selecção?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Inclinar a Sel&ecção" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                    Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to skew the image?

                    " +msgstr "" +"

                    Inclinar a imagem para %1x%2 poderá consumir uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e poderá provocar outros problemas de recursos da aplicação.

                    Tem a certeza que deseja inclinar a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Inclinar a Imagem?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Inclinar a Imag&em" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Semelhança de Cores" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Distância no Cubo de Cores &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Correspondência Perfeita" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"O que é a Semelhança de Cores?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Gravar a Antevisão" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 byte (aprox. %2%)" +msgstr[1] "%1 bytes (aprox. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Não foi possível abrir \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Não foi possível aceder ao \"%1\" - formato de imagem não suportado.\n" +"O ficheiro poderá estar corrompido." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Não foi possível gravar a imagem - informações insuficientes." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Tipo MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Erro Interno" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                    The %1 format may not be able to preserve all of the image's " +"color information.

                    Are you sure you want to save in this format?

                    " +msgstr "" +"

                    O formato %1 poderá não ser capaz de preservar toda a " +"informação de cor da imagem.

                    Tem a certeza que deseja gravar neste " +"formato?

                    " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Formato de Ficheiro com Perdas" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                    Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                    Are " +"you sure you want to save at this color depth?

                    " +msgstr "" +"

                    A gravação da imagem na profundidade de cor baixa de %1 bits poderá " +"resultar na perda de informação de cores. A transparência será também " +"removida.

                    Tem a certeza que deseja gravar nesta profundidade de cor?" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Profundidade de Cor Baixa" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Não foi possível gravar a image - não é possível criar um ficheiro " +"temporário." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Não foi possível gravar como \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Erro ao gravar a imagem" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Não foi possível gravar a imagem - o envio falhou." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Rem&over o Contorno Interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Remover o Contorno Interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "C&orte Automático" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Corte Automático" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"O KolourPaint não consegue remover o contorno interno da selecção, dado que " +"não o consegue localizar." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Não É Possível Remover o Contorno Interno" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"O KolourPaint não consegue recortar automaticamente a imagem, dado que o seu " +"contorno não consegue ser localizado." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Não É Possível Cortar" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Definir como Imagem" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selecção: Criar" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programa de Desenho do KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Fundador do Projecto" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Investigador Chefe" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Suporte de Digitalização, Suporte de Alfa, Manutenção Actual" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ícones" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Suporte de 'InputMethod'" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efeitos de Imagem" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Mudanças para o KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Migração para o KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Muito obrigado às várias pessoas que ajudaram a tornar este programa " +"possível." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Ficheiros de imagem a abrir (opcional)" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Apresentar todos os tipos MIME de imagens legíveis" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Ver" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imagem" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Cores" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barra Principal" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra de Texto" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menu do Botão Direito da Ferramenta de Selecção" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Editar" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Arraste a pega com o botão esquerdo para redimensionar a imagem." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Mudar Tamanho da Imagem: Largue todos os botões do rato." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Mudar Tamanho da Imagem: Carregue com o botão direito para cancelar." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Não foi possível abrir a paleta de cores \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Não foi possível abrir a paleta de cores \"%1\" - formato de imagem não " +"suportado.\n" +"O ficheiro poderá estar corrompido." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Não foi possível abrir a paleta de cores do KDE \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Não foi possível gravar a paleta de cores como \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sem Título" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Usar a Predefinição do KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Usar a do KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Abrir..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "A&ctualizar" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Gravar" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Gr&avar Como..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Adicionar uma Linha" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Apagar a Última Linha" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Área de Cores" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"A paleta de cores \"%1\" foi modificada.\n" +"Deseja gravá-la?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"A paleta de cores do KDE \"%1\" foi modificada.\n" +"Deseja gravá-la num ficheiro?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"A paleta de cores predefinida foi modificada.\n" +"Deseja gravá-la num ficheiro?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Abrir a Paleta de Cores" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"A paleta de cores \"%1\" foi modificada.\n" +"Uma nova leitura da mesma irá perder todas as alterações desde que a " +"gravou.\n" +"Tem a certeza?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Recarregar" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"A paleta de cores do KDE \"%1\" foi modificada.\n" +"Uma nova leitura da mesma irá perder todas as alterações.\n" +"Tem a certeza?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"A paleta de cores predefinida foi modificada.\n" +"Uma nova leitura da mesma irá perder todas as alterações.\n" +"Tem a certeza?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Gravar a Paleta de Cores Como" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Colar em &Nova Janela" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Apa&gar a Selecção" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opiar para Ficheiro..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Colar de &Ficheiro..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Texto: Criar Caixa" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Texto: Colar" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"O KolourPaint não consegue colar o conteúdo da área de transferência, " +"dado estar num formato desconhecido." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Não É Possível Colar" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Texto: Apagar Caixa" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selecção: Apagar" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Texto: Terminar" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selecção: Deseleccionar" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copiar para um Ficheiro" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Colar de um Ficheiro" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportar..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Procurar...." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Capturar o Ecrã" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Propriedades" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "A&ctualizar" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Todos os Ficheiros Suportados (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Abrir a Imagem" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Não foi possível abrir a janela de digitalização." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Digitalização sem Sucesso" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Atraso da Fotografia" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " segundo" +msgstr[1] " segundos" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Sem atraso" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Esconder a Janela Principal" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Propriedades do Documento" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Gravar a Imagem Como" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportar" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"O documento \"%1\" foi modificado.\n" +"Uma nova leitura do mesmo irá perder todas as alterações desde que o " +"gravou.\n" +"Tem a certeza?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"O documento \"%1\" foi modificado.\n" +"Uma nova leitura do mesmo irá perder todas as alterações.\n" +"Tem a certeza?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Imprimir a Imagem" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Deve gravar a imagem antes de a enviar.\n" +"Deseja gravá-la?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"O documento \"%1\" foi modificado.\n" +"Deseja gravá-lo?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&edimensionar / Escalar..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Definir como Imagem (Cor&tar)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Inverter (verticalmente)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Espelho (horizontalmente)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rodar..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rodar para a Es&querda" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rodar para a Direi&ta" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Inc&linar..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reduzir para Mo&nocromático (Rasterizado)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduzir para Tons de Cin&zento" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inverter as Cores" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Limpar" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Tornar Confidencial" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Mais Efeitos..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imagem" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Sel&ecção" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Mostrar a &Localização" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Desenhar Suavizado" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Família do Tipo de Letra" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Tamanho da Letra" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Negrito" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Itálico" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Sublinhado" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Riscado" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Opção Anterior da Ferramenta (Grupo #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Opção Seguinte da Ferramenta (Grupo #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Opção Anterior da Ferramenta (Grupo #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Opção Seguinte da Ferramenta (Grupo #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Desenho Opaco" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Desenhar com Semelhança de Cores..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Caixa de Ferramentas" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Mostrar a &Grelha" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Mostrar a Minia&tura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Modo de &Miniaturas Ampliadas" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Activar um &Rectângulo da Miniatura" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Ampliação" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Capturar a Imagem" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "O acesso ao 'scanner' seleccionado falhou." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pincel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Desenhar usando pincéis de várias formas e tamanhos" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Carregue para desenhar pontos ou arraste para desenhar traços." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Limpeza de Cor" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Substitui os pixels da cor de primeiro plano com a cor de fundo" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Carregue ou arraste para apagar pontos na cor de primeiro plano." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Borracha" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Permite-lhe apagar os erros" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Carregue ou arraste para apagar." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Largue todos os botões do rato." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Caneta" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Desenha pontos e traços livres" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Lata de spray" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "'Spray' de graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Carregue ou arraste para colocar graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Carregue com o botão direito para cancelar." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Carregue com o botão esquerdo para cancelar." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permite-lhe seleccionar uma cor da imagem" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Carregue para escolher uma cor." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Preenche regiões da imagem" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Carregue para preencher uma região." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Ampliação" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Amplia e reduz a imagem" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Carregue para ampliar/reduzir ou arraste com o botão esquerdo para ampliar " +"uma dada área." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Curva" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Desenha curvas" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Arraste o ponto inicial e final." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Arraste com o botão esquerdo para colocar o primeiro ponto de controlo ou " +"carregue com o botão direito para terminar." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Arraste com o botão direito para colocar o primeiro ponto de controlo ou " +"carregue com o botão esquerdo para terminar." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Arraste com o botão esquerdo para colocar o último ponto de controlo ou " +"carregue com o botão direito para terminar." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Arraste com o botão direito para colocar o último ponto de controlo ou " +"carregue com o botão esquerdo para terminar." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linha" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Desenha linhas" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Arraste para desenhar." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polígono" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Desenha polígonos" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Arraste para desenhar a primeira linha." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Arraste outro linha com o botão esquerdo ou carregue com o botão direito " +"para terminar." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Arraste outro linha com o botão direito ou carregue com o botão esquerdo " +"para terminar." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Linhas Ligadas" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Desenha linhas ligadas" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Desenha elipses e círculos" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rectângulo" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Desenha rectângulos e quadrados" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rectângulo Arredondado" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Desenha rectângulos e quadrados com cantos arredondados" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Arrastar com o botão esquerdo para criar selecção." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Arrastar com o botão esquerdo para mover selecção." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Arraste com o botão esquerdo para redimensionar a selecção." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Selecção: Opaca" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Selecção: Transparente" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Selecção: Cor de Transparência" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Selecção: Semelhança de Cores da Transparência" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Selecção (Elíptica)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Cria uma selecção elíptica ou circular" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Selecção (Livre)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Faz uma selecção livre" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Selecção (Rectangular)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Faz uma selecção rectangular" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Selecção: Mover" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Borrar" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Escreve o texto" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Texto: 'Backspace'" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Texto: Apagar" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Texto: Nova Linha" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Texto: Escrever" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Arraste com o botão esquerdo para criar um caixa de texto." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Arraste com o botão esquerdo para mover a caixa de texto." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Texto: Mover Caixa" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Arraste com o botão esquerdo para redimensionar a caixa de texto." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Carregue com o botão esquerdo para mudar a posição do cursor." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Texto: Fundo Opaco" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Texto: Fundo Transparente" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Texto: Trocar Cores" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Texto: Cor de Primeiro Plano" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Texto: Cor de Fundo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Texto: Tipo de Letra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Texto: Tamanho de Letra" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Texto: Negrito" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Texto: Itálico" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Texto: Sublinhado" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Texto: Riscado" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Miniatura - Modo sem Ampliação" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    To configure it, click on the cube.

                    " +msgstr "" +"

                    A Semelhança de Cores é a forma quão semelhantes as " +"cores dos diferentes pixels deverão ser, no caso de operações que pensem ser " +"as mesmas. Se configurar para algo diferente da Correspondência Exacta, poderá trabalhar de forma mais eficaz com imagens rasterizadas com meios-" +"tons, de forma comparável à \"Varinha Mágica\" dos outros programas de " +"pintura.

                    Esta funcionalidade aplica-se a:

                    • Selecções: " +"No modo Transparente, todas as cores da selecção que sejam " +"semelhantes à cor de fundo ficarão transparentes.
                    • Preenchimento: Para a regiões com pixels coloridos com cores " +"semelhantes - mas não idênticas -, um valor mais elevado conseguirá " +"preencher mais pixels.
                    • Borracha de Cor: Todos os pixels cujas " +"cores sejam semelhantes à cor principal serão substituídos pela cor " +"de fundo.
                    • Recorte Automático e Remover o Contorno " +"Interno: Para os contornos com pixels coloridos com cores " +"semelhantes - mas não idênticas -, um valor mais elevado poderá " +"recortar o contorno inteiro.

                    Os valores mais elevados significam " +"que as operações têm em consideração uma gama mais alargada de cores " +"consideradas semelhantes como sendo a mesma. Como tal, deverá " +"aumentar este valor se as operações acima não estão a afectar os pontos " +"cujas cores acha que sejam semelhantes o suficiente.

                    Contudo, se " +"fizerem demasiado efeito e estiverem a alterar pontos cujas cores não acha " +"que sejam semelhantes o suficiente (p.ex., se o Preenchimento estiver " +"a alterar demasiados pontos), deverá diminuir este valor.

                    Para o " +"configurar, carregue no cubo.

                    " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    " +msgstr "" +"

                    A Semelhança de Cores é a forma quão semelhantes as " +"cores dos diferentes pixels deverão ser, no caso de operações que pensem ser " +"as mesmas. Se configurar para algo diferente da Correspondência Exacta, poderá trabalhar de forma mais eficaz com imagens rasterizadas com meios-" +"tons, de forma comparável à \"Varinha Mágica\" dos outros programas de " +"pintura.

                    Esta funcionalidade aplica-se a:

                    • Selecções: " +"No modo Transparente, todas as cores da selecção que sejam " +"semelhantes à cor de fundo ficarão transparentes.
                    • Preenchimento: Para a regiões com pixels coloridos com cores " +"semelhantes - mas não idênticas -, um valor mais elevado conseguirá " +"preencher mais pixels.
                    • Borracha de Cor: Todos os pixels cujas " +"cores sejam semelhantes à cor principal serão substituídos pela cor " +"de fundo.
                    • Recorte Automático e Remover o Contorno " +"Interno: Para os contornos com pixels coloridos com cores " +"semelhantes - mas não idênticas -, um valor mais elevado poderá " +"recortar o contorno inteiro.

                    Os valores mais elevados significam " +"que as operações têm em consideração uma gama mais alargada de cores " +"consideradas semelhantes como sendo a mesma. Como tal, deverá " +"aumentar este valor se as operações acima não estão a afectar os pontos " +"cujas cores acha que sejam semelhantes o suficiente.

                    Contudo, se " +"fizerem demasiado efeito e estiverem a alterar pontos cujas cores não acha " +"que sejam semelhantes o suficiente (p.ex., se o Preenchimento estiver " +"a alterar demasiados pontos), deverá diminuir este valor.

                    " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                    Color Similarity: %1%

                    Click to configure.

                    " +msgstr "" +"

                    Semelhança de Cores: %1%

                    Carregue para configurar." +"

                    " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                    Color Similarity: Exact Match

                    Click to configure." +msgstr "" +"

                    Semelhança de Cores: Correspondência Exacta

                    Carregue para configurar.

                    " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Brilho:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Reini&ciar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntraste:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gama:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Re&iniciar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Ca&nais:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Tudo" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Vermelho" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Azul" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Repor Todos os V&alores" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Configuração" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "Qu&antidade:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Ac&tivar" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Cores" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tom:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturação:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valor:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "Ve&rmelho" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Verde" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "A&zul" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Tudo" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canais" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monocromático" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nocromático (rasterizado)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 co&res" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 c&ores (rasterizado)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Cor de 24 &bits" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduzir Para" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularidade:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                    To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                    To change the color of a color cell itself, double-click on it.

                    You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                    " +msgstr "" +"

                    Para seleccionar a cor principal com que as ferramentas desenham, " +"carregue com o botão esquerdo numa célula de cores preenchida. Para " +"seleccionar a cor de fundo, carregue com o botão direito.

                    Faça duplo-" +"click sobre uma célula de cor para mudar a mesma.

                    Também poderá trocar " +"as células de cores preenchidas com o 'drag and drop'. Se mantiver carregada " +"a tecla Ctrl, a célula de destino será substituída, em vez de ser " +"trocada com a célula de origem.

                    " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Conver&ter para:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Quali&dade:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Ante&visão" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monocromático" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monocromático (Rasterizado)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Cores" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Cores (Rasterizado)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Cor de 24 Bits" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Posição da I&magem" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centro da página" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Canto superior-es&querdo da página" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparente" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Predefinição do KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Cores: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Cores: %1 [modificada]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Círculo" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Quadrado" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barra Invertida" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Sem Preenchimento" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Preencher com a Cor de Fundo" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Preencher com a Cor Principal" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaco" diff --git a/po/pt_BR/docs/kolourpaint/KolourPaint.png b/po/pt_BR/docs/kolourpaint/KolourPaint.png new file mode 100644 index 0000000..a228801 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/KolourPaint.png differ diff --git a/po/pt_BR/docs/kolourpaint/brush_shapes.png b/po/pt_BR/docs/kolourpaint/brush_shapes.png new file mode 100644 index 0000000..4693962 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/brush_shapes.png differ diff --git a/po/pt_BR/docs/kolourpaint/color_box.png b/po/pt_BR/docs/kolourpaint/color_box.png new file mode 100644 index 0000000..2dbfe7a Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/color_box.png differ diff --git a/po/pt_BR/docs/kolourpaint/eraser_shapes.png b/po/pt_BR/docs/kolourpaint/eraser_shapes.png new file mode 100644 index 0000000..15f19bc Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/eraser_shapes.png differ diff --git a/po/pt_BR/docs/kolourpaint/fcc_std_text.png b/po/pt_BR/docs/kolourpaint/fcc_std_text.png new file mode 100644 index 0000000..a5b705c Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/fcc_std_text.png differ diff --git a/po/pt_BR/docs/kolourpaint/fcc_trans_text.png b/po/pt_BR/docs/kolourpaint/fcc_trans_text.png new file mode 100644 index 0000000..f3c6780 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/fcc_trans_text.png differ diff --git a/po/pt_BR/docs/kolourpaint/fill_color_similarity.png b/po/pt_BR/docs/kolourpaint/fill_color_similarity.png new file mode 100644 index 0000000..1155db0 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/fill_color_similarity.png differ diff --git a/po/pt_BR/docs/kolourpaint/fill_style.png b/po/pt_BR/docs/kolourpaint/fill_style.png new file mode 100644 index 0000000..0456d1a Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/fill_style.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_balance.png b/po/pt_BR/docs/kolourpaint/image_balance.png new file mode 100644 index 0000000..09470a3 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_balance.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_emboss.png b/po/pt_BR/docs/kolourpaint/image_emboss.png new file mode 100644 index 0000000..8dfa9f8 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_emboss.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_flatten.png b/po/pt_BR/docs/kolourpaint/image_flatten.png new file mode 100644 index 0000000..49f899f Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_flatten.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_invert.png b/po/pt_BR/docs/kolourpaint/image_invert.png new file mode 100644 index 0000000..f2303e5 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_invert.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_reduce_colors.png b/po/pt_BR/docs/kolourpaint/image_reduce_colors.png new file mode 100644 index 0000000..81a9f6f Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_reduce_colors.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_resize_scale.png b/po/pt_BR/docs/kolourpaint/image_resize_scale.png new file mode 100644 index 0000000..e7387d5 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_resize_scale.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_rotate.png b/po/pt_BR/docs/kolourpaint/image_rotate.png new file mode 100644 index 0000000..5084619 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_rotate.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_skew.png b/po/pt_BR/docs/kolourpaint/image_skew.png new file mode 100644 index 0000000..d5bd8ac Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_skew.png differ diff --git a/po/pt_BR/docs/kolourpaint/image_soften_sharpen.png b/po/pt_BR/docs/kolourpaint/image_soften_sharpen.png new file mode 100644 index 0000000..81bb3de Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/image_soften_sharpen.png differ diff --git a/po/pt_BR/docs/kolourpaint/index.docbook b/po/pt_BR/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..2698e68 --- /dev/null +++ b/po/pt_BR/docs/kolourpaint/index.docbook @@ -0,0 +1,1819 @@ + + + ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + + +]> + + + + +Manual do &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +MarcusGama
                    marcus.gama@gmail.com
                    Tradução
                    André MarceloAlvarenga
                    andrealvarenga@gmx.net
                    Tradução
                    +
                    + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +03/04/2011 +&kde; 4.7 + + +O &kolourpaint; é um programa de desenho livre e fácil de usar para o &kde;. + + + +kolourpaint +kdegraphics + + +
                    + + +Introdução +O &kolourpaint; é um programa de desenho livre e fácil de usar para o &kde;. Ele é perfeito para as tarefas do dia a dia, tais como: + + + +Pintura - desenho de diagramas e pinturas manuais + + +Manipulação de capturas de tela - captura e edição de telas + + +Manipulação de imagens - edição de fotos e imagens capturadas; aplicação de efeitos + + +Edição de ícones - desenho de imagens e logotipos com transparência + + + + + + + + + + + + + +Usando o &kolourpaint; + +Clique nas seguintes referências para explorar as capacidades do &kolourpaint;: + + + +Ferramentas + + +Trabalhando com cores + + +Opções de visualização + + +Efeitos de imagem + + + + + +Ferramentas + + +Capturando imagens da tela + +Uma captura de tela é uma fotografia do que está na tela do seu computador. Isto pode ser útil para explicar algumas ações que devem ser feitas para obter um determinado resultado, ou para mostrar algo que você encontrou. +Para capturar uma tela e editá-la na janela do &kolourpaint; você pode usar o item ArquivoCapturar tela do menu principal do &kolourpaint;. + + + + + + + +Na janela aberta você pode mudar o Atraso de captura (em segundos), e optar por Ocultar a janela principal durante a captura. Quando estiver pronto para capturar a tela, basta clicar em OK. A tela capturada será colocada diretamente na área de edição do &kolourpaint;. + + + +Relação de ferramentas + +Uma forma rápida de selecionar uma ferramenta no &kolourpaint; é pressionar o atalho de teclado associado a ela, que aparece documentado abaixo e nas dicas da Caixa de ferramentas. Você também poderá manter pressionado o &Alt;&Shift; enquanto pressiona a tecla, o que é necessário quando você estiver escrevendo texto (uma vez que os atalhos de teclado com teclas simples ficarão desativados). Por exemplo, para selecionar o pincel, pressione &Alt;&Shift;B ou apenas em B (quando não estiver escrevendo texto). + + + Pincel (B) + + Borracha de cores (O) + + Seletor de cores (C) + + Linhas conectadas (N) + + Curva (V) + + Elipse (E) + + Borracha (A) + + Preenchimento (F) + + Linha (L) + + Caneta (P) + + Polígono (G) + + Retângulo (R) + + Retângulo arredondado (U) + + Seleção (elíptica) (I) + + Seleção (livre) (M) + + Seleção (retangular) (S) + + Lata de spray (Y) + + Texto (T) + + + + + +Pincel <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Apenas clique ou clique e arraste o pincel para desenhar. + + + + + + + + + + + + + + +Clique em uma das formas para selecionar a forma do pincel. Você poderá usar uma forma de pincel circular, quadrada, em barra ou em barra invertida. + + + + + + +O &LMB; desenha com a cor do primeiro plano. O &RMB; desenha com a cor do plano de fundo. + + + +Seletor de cores <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Para definir a nova cor do primeiro plano, clique com o &LMB; em um pixel. Para definir a nova cor do plano de fundo, clique com o &RMB; em um pixel. O &kolourpaint; irá então voltar à ferramenta selecionada anteriormente. + + + + +Linhas conectadas e Polígono <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste para desenhar linhas conectadas. A ferramenta polígono é usada da mesma forma, só que os pontos inicial e final são automaticamente conectados para formar um polígono. + +O &LMB; desenha com a cor do primeiro plano. O &RMB; desenha com a cor do plano de fundo e irá inverter também a cor de preenchimento dos polígonos. + +Você poderá definir a espessura da linha. Para os polígonos, você também poderá definir o estilo de preenchimento. + + + + +Curva <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste para desenhar uma linha - isto define os pontos inicial e final. Você poderá definir até dois pontos de controle por arrastamento. Para terminar a curva sem usar qualquer um dos pontos de controle, clique com o outro botão do mouse. A ferramenta de curvas desenha uma Bezier Cúbica. + +O &LMB; desenha com a cor do primeiro plano. O &RMB; desenha com a cor do plano de fundo. + +Você poderá também definir a espessura da linha. + + + + +Elipse <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste para desenhar uma elipse. + +O &LMB; desenha com a cor do primeiro plano. O &RMB; desenha com a cor do plano de fundo e irá inverter também a cor de preenchimento. + +Você poderá também definir a espessura da linha e o estilo do preenchimento. + +Para as funcionalidades adicionais, use as teclas modificadoras: + + + +Mantenha o &Shift; pressionado e arraste para desenhar um círculo. + + +Para desenhar uma elipse com um ponto central à sua escolha, mantenha o &Ctrl; pressionado, clique no ponto central e arraste até que a elipse tenha o tamanho e forma corretos. + + +Para desenhar um círculo com um ponto central à sua escolha, mantenha o &Ctrl; e o &Shift; pressionados, clique no ponto central e arraste até que o círculo tenha o tamanho correto. + + + + + + +Borrachas + + +Borracha <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste com a borracha para apagar os erros. + + +Ao contrário das outras ferramentas, as borrachas desenham com a cor do plano de fundo. Para desenhar com a cor do primeiro plano, use o &RMB;. + + +A borracha só possui formas quadradas. Para desenhar com outras formas, como por exemplo, círculos, use o Pincel e o &RMB;. + + +Faça um duplo-clique no ícone da Borracha para limpar a imagem inteira. Isto é equivalente a usar a opção Limpar do menu Imagem. + + + + + +Borracha de cores <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste para substituir os pixels da cor do primeiro plano com a cor do plano de fundo. Para substituir todos os pixels de cores semelhantes (mas não necessariamente iguais) com a cor do primeiro plano, como nas imagens pontilhadas e nas fotos, use uma configuração de Semelhança de cores em vez da Coincidência exata. + + +Ao contrário das outras ferramentas, as borrachas desenham com a cor de fundo. Para substituir os pixels da cor do plano de fundo com a cor do primeiro plano, use o &RMB;. + + +Você poderá configurar o tamanho da borracha. + + +Faça um duplo-clique no ícone da Borracha de cores para aplicá-la à imagem inteira. + + + + + + +Preenchimento <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique para preencher uma determinada região. Para preencher uma região pontilhada, use uma configuração de Semelhança de cores em vez da Coincidência exata. + +O &LMB; preenche com a cor do primeiro plano. O &RMB; preenche com a cor do plano de fundo. + + + +Linha <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste para desenhar uma linha. + +O &LMB; desenha com a cor do primeiro plano. O &RMB; desenha com a cor do plano de fundo. + +Você poderá também definir a espessura da linha. + + + + + + + + + + + + + + + + + + + + + +Mantenha o &Ctrl; pressionado para desenhar linhas com ângulos múltiplos de 30 graus mais próximo - estas são as linhas no diagrama vermelho. + + +Mantenha o &Shift; pressionado para desenhar linhas com ângulos múltiplos de 45 graus mais próximo - estas são as linhas no diagrama azul. + + +Mantenha o &Ctrl; e o &Shift; pressionados para desenhar linhas com ângulos múltiplos de 30 ou 45 graus mais próximo - estas são as linhas no diagrama verde. + + + + + + +Caneta <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique para desenhar um ponto ou clique e arraste para desenhar uma linha livre. + +O &LMB; desenha com a cor do primeiro plano. O &RMB; desenha com a cor do plano de fundo. + + + + +Retângulos <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste para desenhar um retângulo. O Retângulo arredondado é um Retângulo com os cantos arredondados. + +O &LMB; desenha com a cor do primeiro plano. O &RMB; desenha com a cor do plano de fundo e irá inverter também a cor de preenchimento. + +Você poderá também definir a espessura da linha e o estilo do preenchimento. + +Para as funcionalidades adicionais, use as teclas modificadoras: + + + +Mantenha o &Shift; pressionado e arraste para desenhar um quadrado. + + +Para desenhar um retângulo com um ponto central à sua escolha, mantenha o &Ctrl; pressionado, clique no ponto central e arraste até que o retângulo tenha o tamanho e forma corretos. + + +Para desenhar um quadrado com um ponto central à sua escolha, mantenha o &Ctrl; e o &Shift; pressionados, clique no ponto central e arraste até que o quadrado tenha o tamanho correto. + + + + + + +Seleções <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Use as ferramentas de seleção para definir o contorno de uma seleção. + +Clique e arraste para mover a seleção. A janela principal se deslocará para lhe permitir mover a seleção para uma parte da imagem que não esteja atualmente visível. + +Você poderá Redimensionar a imagem inteira ou Escalonar suavemente a seleção usando os manipuladores correspondentes. Mantenha o &Shift; pressionado, enquanto faz um escalonamento livre da seleção para manter as proporções. O &RMB; invoca um menu de contexto com comandos comuns para Editar e Efeitos de imagem. + + +Você poderá usar as teclas dos cursores enquanto define o limite da seleção ou enquanto muda a sua posição. + + +Se você mantiver o &Ctrl; pressionado antes de mover a seleção, então você moverá uma cópia da mesma. Se mantiver o &Shift; pressionado antes de mover a seleção, você irá manchá-la. + + + + + + + + + + + + + +Existem dois modos de seleção: o Opaco (padrão) e o Transparente. Se você usar o modo de seleção Transparente, todos os pixels com a cor do plano de fundo ficarão transparentes (subtração do plano de fundo). Isto permite-lhe colar uma seleção sem o plano de fundo. Para efetuar a subtração do plano de fundo em uma imagem pontilhada, use uma configuração de Semelhança de cores em vez da Coincidência exata. + + + + + + +Você poderá aplicar efeitos de imagem a uma seleção - veja a seção sobre Efeitos de imagem para mais informações. + +É possível salvar a seleção para um arquivo usando o item Copiar para o arquivo... do menu de contexto da seleção ou o item EditarCopiar para o arquivo... do menu principal. + + + +Lata de spray <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste para fazer grafites com spray. Mantenha o botão do mouse pressionado para um spray mais concentrado. + + + + + + + + + + + + + +Clique em uma das formas para selecionar o tamanho do spray. Você poderá selecionar os tamanhos de spray 9x9, 17x17 e 29x29. + + + + + + +O &LMB; desenha com a cor do primeiro plano. O &RMB; desenha com a cor do plano de fundo. + + + + +Texto <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Clique e arraste uma área na qual irá escrever algum texto. Assim que o contorno for exibido, você pode iniciar a digitação do texto. Clique e arraste o contorno para movê-lo. Você poderá redimensionar a caixa de texto arrastando os manipuladores ou usando o diálogo Redimensionar. + + +Se você desmarcou uma caixa de texto, você poderá clicar em Desfazer para editá-la novamente. + + + +Usando a cor transparente + + + + + + + + +A imagem da esquerda mostra a imagem exemplo. A imagem da direita mostra a adição de texto com cores do primeiro plano e do plano de fundo opacas. + + + + + + + + + +A imagem da esquerda mostra a adição do texto com cores do primeiro plano opacas e cor do plano de fundo transparente. A imagem da direita mostra a adição de texto com a cor do primeiro plano transparente e a cor do plano de fundo opaca. + + + + +Opções das ferramentas comuns + + + + + + + + + + + + + +Clique em um dos quadrados para selecionar o tamanho da borracha. Você poderá selecionar quadrados com tamanhos de 2, 3, 5, 9, 17 e 29 pixels. + +A configuração do tamanho afeta as Borrachas. + + + + + + + + + + + +Clique em uma das linhas para selecionar a espessura da linha. Você poderá selecionar as espessuras de linha de 1, 2, 3, 5 e 8 pixels. + +A configuração da espessura da linha afeta as ferramentas Linhas conectadas, Curva, Elipse, Linha, Polígono, Retângulo e Retângulo arredondado. + + + + + + + + + + + +Clique em um dos retângulos para selecionar o estilo de preenchimento. Você poderá escolher entre Sem preenchimento, Preencher com a cor do plano de fundo e Preencher com a cor do primeiro plano. O estilo de preenchimento afeta as ferramentas Elipse, Polígono, Retângulo e Retângulo arredondado. + + + + + + + + + + +Trabalhando com cores + + +A caixa de cores + + + + + + + +Caixa de cores + + + + +A caixa de cores possui três seções principais: a tabela de cores, a paleta de cores e o seletor de semelhança de cores. + +A tabela de cores mostra a cor do primeiro plano atual com um quadrado sobre outro, que representa a cor do plano de fundo atual. Ao desenhar com o &LMB;, a cor do primeiro plano é usada e, ao desenhar com o &RMB;, a cor do plano de fundo é usada (exceto para as Borrachas). Você poderá clicar na seta de duas pontas para trocar as cores. + +A paleta de cores mostra uma seleção de cores onde você poderá escolher a cor a ser usada. A pirâmide translúcida representa a cor transparente. Clique com o &LMB; para definir a cor do primeiro plano e com o &RMB; para definir a cor do plano de fundo. Você poderá também arrastar e soltar qualquer cor opaca nos quadrados da tabela de cores. Para editar uma cor na tabela ou na paleta de cores, faça duplo-clique nela. A ferramenta Seletor de cores permite-lhe selecionar uma cor da imagem. + +A Semelhança de cores permite-lhe trabalhar de forma mais eficaz com as fotos e imagens pontilhadas, de maneira semelhante ao recurso Varinha mágica de outros programas de pintura. Ela aplica-se às seleções transparentes, assim como ao Preenchimento, à Borracha de cores e ao Corte automático / Remover borda interna. Faça duplo-clique no seletor de Semelhança de cores para escolher como as cores semelhantes poderão ser consideradas iguais. Ao usar as seleções no modo Transparente, todas as cores da seleção que sejam semelhantes às cores do plano de fundo, também ficarão transparentes. + + + + + + + + + +A figura da esquerda mostra a imagem exemplo. As figuras à direita demonstram a utilização de um preenchimento com a opção de Semelhança de cores a 5%, 15% e 30%. Neste exemplo, com uma opção de Semelhança de cores com Coincidência exata, um preenchimento em (80, 100) só preencheria um pixel, uma vez que os pixels adjacentes não são idênticos. À medida que a Semelhança de cores vai aumentando, mais pixels que sejam semelhantes em cores serão considerados idênticos, e como consequência, o preenchimento se estende um pouco mais. + + + + + +Opções de exibição + + +Relação de opções de exibição + +Ampliação com grade incorporada +Miniatura + + + + +Ampliação com grade incorporada +Aumenta o nível de ampliação para editar as imagens com maior precisão ou o reduz, para ver mais partes da imagem. + + +No caso dos níveis de ampliação que não sejam múltiplos de 100%, partes da imagem parecerão se mover, quando o usuário interage com elas. Poderão também ocorrer algumas pequenas falhas de atualização nesses níveis de ampliação. + + +Nos níveis de ampliação de 400% ou superior, que sejam também múltiplos de 100%, você poderá Mostrar grade para editar com maior precisão os pixels individuais. + + + + + + + + + + + + + + + +A primeira imagem mostra o ícone da ferramenta de Texto, enquanto a última, mostra-a com uma ampliação de 600% e com a grade ativada. + + +Outra forma de ampliar quando não estiver desenhando é girar a roda do mouse, mantendo a tecla &Ctrl; pressionada. + + + + + +Miniatura + + + + + + + +Se o Modo de miniaturas ampliadas estiver selecionado, a imagem inteira será mostrada e ajustada para a janela da miniatura (imagem superior à direita). +Caso contrário, a miniatura mostrará o máximo possível da imagem, iniciando no canto superior esquerdo da área principal (imagem inferior à direita). + + + + + +Efeitos de imagem + + +Relação dos efeitos de imagem +Corte automático/remover borda interna +Equilíbrio +Limpar +Relevo +Achatar +Refletir (de cima para baixo) +Inverter +Reduzir as cores +Reduzir para escala de cinza +Reduzir para monocromático (pontilhado) +Espelhar (horizontalmente) +Redimensionar/escalonar +Girar +Definir como imagem (cortar) +Inclinar +Suavização e nitidez +Mais efeitos +Notas + + + +Corte automático / Remover borda interna + +Remove automaticamente o contorno de uma imagem ou seleção. Use o Corte automático se tiver uma figura que não ocupe a imagem inteira ou seleção e deseja remover o excesso de espaço em branco. Para usar este recurso com uma imagem pontilhada, você pode também usar a Semelhança de cores. + + + + +Equilíbrio + +Este recurso está acessível através do diálogo Mais efeitos. + + + + + + + + +Permite-lhe definir o brilho, o contraste e o fator gama da imagem ou da seleção. + + +A medida mais comum do gama (um valor decimal de 0.10 a 10.00) está localizada entre o campo incremental Gama e o botão Restaurar. + + + + +Limpar + +Preenche a imagem inteira ou a seleção com a cor do plano de fundo. + + +Faça duplo-clique no ícone da Borracha para limpar a imagem inteira. + + + + + +Relevo + +Este recurso está acessível através do diálogo Mais efeitos. + + + + + + + + +Selecione Habilitar para aplicar o efeito de Relevo. Isto realça os extremos e dá à imagem ou seleção um "aparência esculpida". + + + +Achatar + +Este recurso está acessível através do diálogo Mais efeitos. + + + + + + + + +Altera as cores da imagem com variação da tonalidade das duas cores selecionadas. + + + +Refletir (de cima para baixo) + +Reflete a imagem inteira ou a seleção verticalmente. + + + + +Inverter + +Este recurso está acessível através do diálogo Mais efeitos. + + + + + + + + +Permite-lhe inverter um ou mais canais RGB da imagem ou seleção. Selecione Todos para alterar uma foto para o seu negativo e vice-versa. Isto normalmente cria uma aparência muito engraçada. + + +Para inverter rapidamente todos os canais, você não precisa usar este diálogo. Você pode acessar o item Inverter as cores do menu Imagem ou do menu Seleção. O item Seleção somente é exibido na barra de menu se você usar uma das ferramentas de seleção. Adicionalmente você pode alcançar esta ação do menu de contexto aberto com um clique &RMB; na área da imagem. + + + + + +Espelhar (horizontalmente) + +Espelha a imagem inteira ou a seleção horizontalmente. + + + + +Reduzir as cores + +Este recurso está acessível através do diálogo Mais efeitos. + + + + + + + + +Reduz o número de cores usado pela imagem ou seleção, com ou sem pontilhamento. + +O pontilhamento normalmente apresenta melhores resultados na qualidade. Entretanto, você pode querer desativá-lo para efeitos artísticos; ⪚, ao usar o Monocromático em vez do Monocromático (pontilhado) apresentará um efeito de silhueta. + +Outra importante distinção é que, enquanto o Monocromático (pontilhado) irá sempre reduzir para preto-e-branco a imagem inteira ou a seleção, o Monocromático só fará isso se a imagem ou a seleção possuir mais de duas cores. + + +Para uma rápida imagem monocromática pontilhada, use o item Reduzir para monocromático (pontilhado) do menu Imagem ou do menu Seleção. O item Seleção somente é exibido na barra de menu se você usar uma das ferramentas de seleção. Adicionalmente você pode alcançar esta ação do menu de contexto aberto com um clique &RMB; na área da imagem. + + + +A alteração do número de cores efetuada aqui não terá efeito na profundidade de cor do formato do arquivo. Se você quiser alterar a profundidade de cor deverá selecioná-la nos diálogos de salvamento de arquivo. Lembre-se que, ao contrário, a alteração da profundidade de cor irá também alterar o número de cores. + + + + +Reduzir para escala de cinza + +Reduz a imagem inteira ou seleção para escala de cinza. + + + + +Reduzir para monocromático (pontilhado) + +Reduz a imagem inteira ou seleção para preto-e-branco. + + +Se você não quiser que a imagem ou seleção seja pontilhada, use o diálogo Reduzir as cores. + + + + +Redimensionar / Escalonar + + + + + + + + + +O redimensionamento da imagem altera as suas medidas, sem implicar em transformação do conteúdo existente. A mudança de escala irá reduzir o conteúdo existente para as novas dimensões. A opção Escalonar suavemente normalmente apresenta melhores resultados na qualidade que Escalonar, misturando as cores adjacentes. + +Você poderá inserir as novas dimensões em pixels ou como uma porcentagem do tamanho original. Se você selecionar a opção Manter a proporção, a largura e a altura serão escalonadas com o mesmo percentual. + + +Você poderá livremente Redimensionar a imagem inteira ou Escalonar suavemente através de seus manipuladores. + + + +Para as seleções, somente é permitido o escalonamento e para as caixas de texto, somente o redimensionamento. Veja as Notas para mais detalhes sobre a aplicação destes efeitos. + + + + +Girar + + + + + + + + + +Gira a imagem. Você poderá especificar o ângulo e a direção da rotação. + + +Você poderá inverter a direção da rotação se especificar um ângulo negativo. + + + +Veja as Notas para mais detalhes sobre como aplicar este efeito a uma seleção. + + + + +Definir como imagem (cortar) + +Isto fará com que a seleção passe a ser a imagem. + + +Isto só está disponível quando você tiver uma seleção ativa. + + + + +Inclinar + + + + + + + + + +Inclina a imagem inteira ou seleção, na horizontal e/ou na vertical. + + +Veja as Notas para mais detalhes sobre como aplicar este efeito a uma seleção. + + + + +Suavização e nitidez + +Este recurso está acessível através do diálogo Mais efeitos. + + + + + + + + +Use este efeito para suavizar a imagem ou dar-lhe maior nitidez. + + + + +Mais efeitos + +Este diálogo contém os recursos Equilíbrio, Relevo, Achatar, Inverter, Reduzir as cores e Suavização e nitidez. + + + +Notas + +O Redimensionamento, a Rotação e a Inclinação podem alterar as dimensões da imagem. Você poderá ver as novas dimensões no diálogo. + +Se você aplicar estes efeitos a uma imagem, ela será redimensionada se necessário. Contudo, se você aplicar estes efeitos a uma seleção, a imagem não será redimensionada, mesmo que a seleção transformada não caiba na imagem. + + + + + + + + + +A imagem da esquerda foi girada 30 graus no sentido horário, para formar a imagem correta. O &kolourpaint; aumentou automaticamente a imagem para acomodar o conteúdo maior. + + + + + + + + + +A seleção da esquerda foi girada 30 graus no sentido horário, para formar a seleção correta. O tamanho da imagem foi mantido, uma vez que partes da seleção não serão visíveis sem o Redimensionamento da imagem. + + + + + +Créditos e licença + +Carl Tucker +Pode não ser uma documentação concisa e completa, mas é uma documentação honesta. + + +&kolourpaint; +Direitos autorais do programa © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Ícones específicos do &kolourpaint; com direitos autorais © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Documentação e desenhos adicionais da documentação com direitos autorais © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Partes foram reproduzidas com a permissão de . + +Tradução de Marcus Gama marcus.gama@gmail.comRevisão e atualização de André Marcelo Alvarenga andrealvarenga@gmx.net +&underFDL; Este programa está licenciado da seguinte forma: + +Direitos autorais © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Todos os direitos reservados. + + +A redistribuição e uso nas formas de código ou binária, com ou sem +modificação, são permitidas desde que as seguintes condições +sejam atendidas: + +1. As redistribuições do código-fonte devem possuir as notas de direitos autorais + acima, esta lista de condições e a declaração a seguir. + +2. As redistribuições na forma binária devem reproduzir a nota de direitos autorais + acima, esta lista de condições e a declaração a seguir na documentação + e/ou outros materiais fornecidos com a distribuição. + + +ESTE PROGRAMA É FORNECIDO PELO AUTOR ''COMO ESTÁ'' SEM NENHUMA GARANTIA EXPRESSA OU +DEDUZIDA, INCLUINDO, MAS NÃO SE LIMITANDO AS GARANTIAS DEDUZIDAS DE MERCADO +E UTILIZAÇÃO PARA UMA FINALIDADE PARTICULAR QUE SEJA DECLARADA. +EM NENHUMA SITUAÇÃO O AUTOR SERÁ RESPONSÁVEL POR QUALQUER DANO DIRETO, INDIRETO +ACIDENTAL, ESPECIAL, EXEMPLAR OU EM CONSEQUÊNCIA (INCLUINDO, MAS NÃO SE LIMITANDO +A OBTENÇÃO DE BENS DE SUBSTITUIÇÃO OU SERVIÇOS, PERDA DE DADOS DO USUÁRIO, OU +DE LUCROS; OU INTERRUPÇÃO DE NEGÓCIO) SEJA CAUSADO EM QUALQUER TEORIA DE RESPONSABILIDADE +SEJA NO CONTRATO, NA RESPONSABILIDADE ESTRITA, OU OUTRO (INCLUINDO NEGLIGÊNCIA +OU OUTRA SITUAÇÃO) QUE LEVANTA-SE EM QUALQUER MANEIRA FORA DO USO DESTE SOFTWARE, +MESMO SE ALERTADO DA POSSIBILIDADE DE TAIS DANOS. + + + + +Instalação + +Como obter o &kolourpaint; +&install.intro.documentation; As versões mais frequentes, com o suporte para as versões anteriores do &kde; estão disponíveis em http://kolourpaint.sourceforge.net/. + + + + +Compilação e instalação + + +Se você está lendo esta ajuda no &khelpcenter;, então o &kolourpaint; já está instalado neste sistema e você não precisa seguir estas instruções genéricas. + &install.compile.documentation; + + + +&documentation.index; +
                    + + diff --git a/po/pt_BR/docs/kolourpaint/line_width.png b/po/pt_BR/docs/kolourpaint/line_width.png new file mode 100644 index 0000000..fd8ac7d Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/line_width.png differ diff --git a/po/pt_BR/docs/kolourpaint/lines_30_45_deg.png b/po/pt_BR/docs/kolourpaint/lines_30_45_deg.png new file mode 100644 index 0000000..87ec232 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/lines_30_45_deg.png differ diff --git a/po/pt_BR/docs/kolourpaint/lines_30_deg.png b/po/pt_BR/docs/kolourpaint/lines_30_deg.png new file mode 100644 index 0000000..c516df0 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/lines_30_deg.png differ diff --git a/po/pt_BR/docs/kolourpaint/lines_45_deg.png b/po/pt_BR/docs/kolourpaint/lines_45_deg.png new file mode 100644 index 0000000..f4beec7 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/lines_45_deg.png differ diff --git a/po/pt_BR/docs/kolourpaint/rotate_image_30.png b/po/pt_BR/docs/kolourpaint/rotate_image_30.png new file mode 100644 index 0000000..b207f26 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/rotate_image_30.png differ diff --git a/po/pt_BR/docs/kolourpaint/rotate_selection_30.png b/po/pt_BR/docs/kolourpaint/rotate_selection_30.png new file mode 100644 index 0000000..65fd553 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/rotate_selection_30.png differ diff --git a/po/pt_BR/docs/kolourpaint/screenshot_acquiring.png b/po/pt_BR/docs/kolourpaint/screenshot_acquiring.png new file mode 100644 index 0000000..0f8f352 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/screenshot_acquiring.png differ diff --git a/po/pt_BR/docs/kolourpaint/selections_opaque_transparent.png b/po/pt_BR/docs/kolourpaint/selections_opaque_transparent.png new file mode 100644 index 0000000..a5b236a Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/selections_opaque_transparent.png differ diff --git a/po/pt_BR/docs/kolourpaint/spraycan_patterns.png b/po/pt_BR/docs/kolourpaint/spraycan_patterns.png new file mode 100644 index 0000000..93552d9 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/spraycan_patterns.png differ diff --git a/po/pt_BR/docs/kolourpaint/text_zoom_grid.png b/po/pt_BR/docs/kolourpaint/text_zoom_grid.png new file mode 100644 index 0000000..4451e41 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/text_zoom_grid.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_brush.png b/po/pt_BR/docs/kolourpaint/tool_brush.png new file mode 100644 index 0000000..1400141 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_brush.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_color_picker.png b/po/pt_BR/docs/kolourpaint/tool_color_picker.png new file mode 100644 index 0000000..ba37259 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_color_picker.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_color_washer.png b/po/pt_BR/docs/kolourpaint/tool_color_washer.png new file mode 100644 index 0000000..12dab02 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_color_washer.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_curve.png b/po/pt_BR/docs/kolourpaint/tool_curve.png new file mode 100644 index 0000000..4197f50 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_curve.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_ellipse.png b/po/pt_BR/docs/kolourpaint/tool_ellipse.png new file mode 100644 index 0000000..27522af Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_ellipse.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_elliptical_selection.png b/po/pt_BR/docs/kolourpaint/tool_elliptical_selection.png new file mode 100644 index 0000000..3cb5c7e Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_elliptical_selection.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_eraser.png b/po/pt_BR/docs/kolourpaint/tool_eraser.png new file mode 100644 index 0000000..69125b3 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_eraser.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_flood_fill.png b/po/pt_BR/docs/kolourpaint/tool_flood_fill.png new file mode 100644 index 0000000..b62db09 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_flood_fill.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_free_form_selection.png b/po/pt_BR/docs/kolourpaint/tool_free_form_selection.png new file mode 100644 index 0000000..6b06f6b Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_free_form_selection.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_line.png b/po/pt_BR/docs/kolourpaint/tool_line.png new file mode 100644 index 0000000..93401c3 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_line.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_pen.png b/po/pt_BR/docs/kolourpaint/tool_pen.png new file mode 100644 index 0000000..98738cc Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_pen.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_polygon.png b/po/pt_BR/docs/kolourpaint/tool_polygon.png new file mode 100644 index 0000000..3a05da0 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_polygon.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_polyline.png b/po/pt_BR/docs/kolourpaint/tool_polyline.png new file mode 100644 index 0000000..857f1cc Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_polyline.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_polystar.png b/po/pt_BR/docs/kolourpaint/tool_polystar.png new file mode 100644 index 0000000..39edbf2 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_polystar.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_rect_selection.png b/po/pt_BR/docs/kolourpaint/tool_rect_selection.png new file mode 100644 index 0000000..130db30 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_rect_selection.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_rectangle.png b/po/pt_BR/docs/kolourpaint/tool_rectangle.png new file mode 100644 index 0000000..3471854 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_rectangle.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_rectangles.png b/po/pt_BR/docs/kolourpaint/tool_rectangles.png new file mode 100644 index 0000000..dd3d276 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_rectangles.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_rounded_rectangle.png b/po/pt_BR/docs/kolourpaint/tool_rounded_rectangle.png new file mode 100644 index 0000000..206c284 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_rounded_rectangle.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_selections.png b/po/pt_BR/docs/kolourpaint/tool_selections.png new file mode 100644 index 0000000..d4dd891 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_selections.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_spraycan.png b/po/pt_BR/docs/kolourpaint/tool_spraycan.png new file mode 100644 index 0000000..f7ed21e Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_spraycan.png differ diff --git a/po/pt_BR/docs/kolourpaint/tool_text.png b/po/pt_BR/docs/kolourpaint/tool_text.png new file mode 100644 index 0000000..aac66c5 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/tool_text.png differ diff --git a/po/pt_BR/docs/kolourpaint/view_thumbnails.png b/po/pt_BR/docs/kolourpaint/view_thumbnails.png new file mode 100644 index 0000000..d0e5068 Binary files /dev/null and b/po/pt_BR/docs/kolourpaint/view_thumbnails.png differ diff --git a/po/pt_BR/kolourpaint.po b/po/pt_BR/kolourpaint.po new file mode 100644 index 0000000..72b1f93 --- /dev/null +++ b/po/pt_BR/kolourpaint.po @@ -0,0 +1,2808 @@ +# Translation of kolourpaint.po to Brazilian Portuguese +# Copyright (C) 2004, 2005, 2008, 2009, 2010, 2011, 2012, 2014, 2015 Free Software Foundation, Inc. +# +# Daniel S Carvalho , 2004. +# Lisiane Sztoltz Teixeira , 2004. +# Lisiane Sztoltz Teixeira , 2004. +# Henrique Pinto , 2005. +# André Marcelo Alvarenga , 2008, 2009, 2010, 2011, 2012, 2014, 2015. +# Luiz Fernando Ranghetti , 2009, 2010, 2016, 2017, 2018, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-06 11:17-0300\n" +"Last-Translator: Luiz Fernando Ranghetti \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 20.04.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" +"Daniel de Souza Carvalho, Lisiane Sztoltz Teixeira,Henrique Pinto,André " +"Marcelo Alvarenga" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"danielscarvalho@netscape.net,lisiane@kdemail.net,henrique.pinto@kdemail.net," +"alvarenga@kde.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Equilíbrio" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Suavização" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Nitidez" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Limpar" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Seleção: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Relevo" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Achatar" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduzir para escala de cinza" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Tonalidade, saturação, brilho" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inverter as cores" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverter" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduzir para monocromático (pontilhado)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduzir para monocromático" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduzir para 256 cores (pontilhado)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduzir para 256 cores" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Equalizador do histograma" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Refletir" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Refletir horizontal e verticalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Refletir horizontalmente" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Refletir verticalmente" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Texto: Redimensionar caixa" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Seleção: Escalonar" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Seleção: Escalonar suavemente" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Redimensionar" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Escalonar" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Escalonar suavemente" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Girar" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Inclinar" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Desfazer: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Desfazer" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Refazer: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Refazer" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Desfazer: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Desfazer" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Refazer: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Refazer" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "mais %1 item" +msgstr[1] "mais %1 itens" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Seletor de cores" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Preenchimento" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Mais efeitos de imagem (seleção)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Mais efeitos de imagem" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efeito:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reduzir as cores" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Suavização e nitidez" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Propriedades do documento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Pontos Por Polegada (PPP ou DPI)" + +# Alterada a tradução para "Não indicado" para ficar totalmente visível. (Alvarenga +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Não indicado" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                    Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                    The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                    If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                    If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                    Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                    " +msgstr "" +"

                    Os Pontos Por Polegada (PPP ou DPI) especificam o número de " +"pixels da imagem, que deverão ser impressos dentro de uma polegada (2,54cm)." +"

                    Quanto maior os PPP da imagem, menor é a imagem impressa. Lembre-se " +"que provavelmente a sua impressora não consegue produzir impressões com alta " +"qualidade se você aumentar este valor para mais que 300 ou 600 PPP, " +"dependendo da impressora.

                    Se você quiser imprimir a imagem, de modo " +"que ela tenha o mesmo tamanho que é mostrada na tela, defina os valores de " +"PPP iguais aos da tela.

                    Se ambos os valores de PPP estiverem indicados " +"como Não especificado, a imagem será impressa com o mesmo tamanho que " +"é mostrada na tela.

                    Nem todos os formatos de imagem suportam valores " +"de PPP. Se o formato que você salvar a imagem não suportá-los, eles não " +"serão gravados.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Desl&ocamento" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                    The Offset is the relative position where this image should be " +"placed, compared to other images.

                    Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                    " +msgstr "" +"

                    O Deslocamento é a posição relativa onde a imagem deverá ser " +"colocada, em relação às outras imagens.

                    Nem todos os formatos de " +"imagem suportam as funcionalidades do recurso de Deslocamento. Se o " +"formato que você salvar a imagem não suportá-lo, os valores especificados " +"não serão gravados.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Campos de &texto" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Adicionar linha" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Excluir linha" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "Res&taurar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                    Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                    However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                    Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                    " +msgstr "" +"

                    Os Campos de texto fornecem informações adicionais sobre a " +"imagem. Esta é uma área de comentários que você pode livremente escrever " +"qualquer texto.

                    Entretanto, eles têm um formato específico, pelos " +"quais, ao menos teoricamente, os dados poderiam ser interpretados pelo " +"computador - que você não deverá alterar - mas isto é improvável.

                    Nem " +"todos os formatos de imagem suportam os Campos de texto. Se o formato " +"que você salvar a imagem não suportá-los, eles não serão gravados.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Chave" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valor" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "O valor do texto \"%1\" na linha %2 precisa de uma chave." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Todas as chaves de texto precisam ser exclusivas. As chaves de texto \"%1\" " +"nas linhas %2 e %3 são idênticas." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Campos de texto inválidos" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensões" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Visualização" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "At&ualizar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Redimensionar / Escalonar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "A&tuar em:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Imagem inteira" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Seleção" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Caixa de texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operação" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                    • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                    • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                    • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                    " +msgstr "" +"
                    • Redimensionar: O tamanho da imagem será aumentado através " +"da criação de novas áreas à direita e/ou abaixo (preenchidas com a cor do " +"plano de fundo), ou diminuído pelo corte à direita e/ou abaixo.
                    • Escalonar: A imagem será expandida pela duplicação de pixels " +"ou reduzida pela supressão de pixels.
                    • Escalonar suavemente: É " +"o mesmo que Escalonar, com exceção da mistura dos pixels que estão " +"próximos, para produzir uma imagem com uma aparência mais suave.
                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Redimensionar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "E&scalonar" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Escalonar suave&mente" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Largura:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Altura:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nova:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Porcenttagem:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "&Manter a taxa de proporção" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                    Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to resize the text box?

                    " +msgstr "" +"

                    Redimensionar a caixa de texto para %1x%2 pode ocupar uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e causar outros problemas.

                    Tem certeza de que deseja " +"redimensionar a caixa de texto?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Redimensionar a caixa de texto?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "R&edimensionar a caixa de texto" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                    Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to resize the image?

                    " +msgstr "" +"

                    Redimensionar a imagem para %1x%2 pode ocupar uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e outros problemas.

                    Tem certeza de que deseja redimensionar a " +"imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Redimensionar a imagem?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&edimensionar a imagem" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                    Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to scale the image?

                    " +msgstr "" +"

                    Escalonar a imagem para %1x%2 pode ocupar uma quantidade substancial " +"de memória. Isto poderá reduzir a capacidade de resposta do sistema e causar " +"outros problemas.

                    Tem certeza de que deseja escalonar a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Escalonar a imagem?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "&Escalonar a imagem" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                    Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to scale the selection?

                    " +msgstr "" +"

                    Escalonar a seleção para %1x%2 pode ocupar uma quantidade substancial " +"de memória. Isto poderá reduzir a capacidade de resposta do sistema e causar " +"outros problemas.

                    Tem certeza de que deseja escalonar a seleção?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Escalonar a seleção?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Escalonar a seleção" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                    Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the image?" +msgstr "" +"

                    Escalonar suavemente a imagem para %1x%2 pode ocupar uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e causar outros problemas.

                    Tem certeza de que deseja escalonar " +"suavemente a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Escalonar suavemente a imagem?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "&Escalonar suavemente a imagem" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                    Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the selection?" +"

                    " +msgstr "" +"

                    Escalonar suavemente a seleção para %1x%2 pode ocupar uma quantidade " +"substancial de memória. Isto poderá reduzir a capacidade de resposta do " +"sistema e causar outros problemas.

                    Tem certeza de que deseja escalonar " +"suavemente a seleção?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Escalonar suavemente a seleção?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "&Escalonar suavemente a seleção" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Girar a seleção" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Girar a imagem" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Após girar:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direção" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Sentido &anti-horário" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "Sentido &horário" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Ângulo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&raus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 gr&aus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Personalizado:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "graus" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                    Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to rotate the selection?

                    " +msgstr "" +"

                    Girar a seleção para %1x%2 pode ocupar uma quantidade substancial de " +"memória. Isto poderá reduzir a capacidade de resposta do sistema e causar " +"outros problemas.

                    Tem certeza de que deseja girar a seleção?

                    " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Girar a seleção?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Girar a s&eleção" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                    Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to rotate the image?

                    " +msgstr "" +"

                    Girar a imagem para %1x%2 pode ocupar uma quantidade substancial de " +"memória. Isto poderá reduzir a capacidade de resposta do sistema e causar " +"outros problemas.

                    Tem certeza de que deseja girar a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Girar a imagem?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Girar a imag&em" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Inclinar seleção" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Inclinar imagem" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Após inclinar:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                    Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to skew the selection?

                    " +msgstr "" +"

                    Inclinar a seleção para %1x%2 pode ocupar uma quantidade substancial " +"de memória. Isto poderá reduzir a capacidade de resposta do sistema e causar " +"outros problemas.

                    Tem certeza de que deseja inclinar a seleção?

                    " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Inclinar a seleção?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Inclinar a s&eleção" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                    Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to skew the image?

                    " +msgstr "" +"

                    Inclinar a imagem para %1x%2 pode ocupar uma quantidade substancial " +"de memória. Isto poderá reduzir a capacidade de resposta do sistema e causar " +"outros problemas.

                    Tem certeza de que deseja inclinar a imagem?

                    " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Inclinar a imagem?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Inclinar a imag&em" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Semelhança de cores" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Afastamento do cubo de cores &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Coincidência exata" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"O que é semelhança de cores?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Salvar a visualização" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (aprox. %2%)" +msgstr[1] "%1 bytes (aprox. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Não foi possível abrir \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Não foi possível abrir \"%1\" - formato de imagem não suportado.\n" +"O arquivo pode estar corrompido." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Não foi possível salvar a imagem - informações insuficientes." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Tipo MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Erro interno" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                    The %1 format may not be able to preserve all of the image's " +"color information.

                    Are you sure you want to save in this format?

                    " +msgstr "" +"

                    O formato %1 pode não ser capaz de preservar todas as " +"informações de cores da imagem.

                    Tem certeza de que deseja salvá-la " +"neste formato?

                    " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Formato de arquivo com perdas" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                    Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                    Are " +"you sure you want to save at this color depth?

                    " +msgstr "" +"

                    O salvamento da imagem em uma baixa profundidade de cores de %1 bits " +"poderá resultar em perda de informações de cores. Qualquer transparência " +"também será removida.

                    Tem certeza de que deseja salvá-la nesta " +"profundidade de cor?

                    " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Baixa profundidade de cores" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Não foi possível salvar a imagem - impossível criar o arquivo temporário." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Não foi possível salvar como \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Erro ao salvar imagem" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Não foi possível salvar a imagem - o envio falhou." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Remover &borda interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Remover borda interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "&Corte automático" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Corte automático" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"O KolourPaint não conseguiu remover a borda interna da seleção, porque não " +"foi possível localizá-la." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Não foi possível remover a borda interna" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"O KolourPaint não conseguiu recortar automaticamente a imagem, porque não " +"foi possível localizar a sua borda." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Não foi possível cortar automaticamente" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Definir como imagem" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Seleção: Criar" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Programa de desenho do KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Fundador do projeto" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Investigador Chefe" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Suporte de digitalização, Suporte de alfa, Manutenção atual" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ícones" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Suporte aos métodos de introdução de caracteres" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Efeitos de imagem" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Migração para o KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Migração para o KDE 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Muito obrigado a todas as pessoas que ajudaram a fazer este programa " +"possível." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Arquivos de imagem a abrir, opcionalmente" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Listar todos os tipo MIME de imagens legíveis" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "E&xibir" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imagem" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Cores" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Barra de ferramentas principal" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Barra de ferramentas de texto" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Menu do botão direito da ferramenta de seleção" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Editar" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatura" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" +"Arraste o manipulador com o botão esquerdo para redimensionar a imagem." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Redimensionar imagem: Solte todos os botões do mouse." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Redimensionar imagem: clique com o botão direito para cancelar." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Texto" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Não foi possível abrir a paleta de cores \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Não foi possível abrir a paleta de cores \"%1\" - formato não suportado.\n" +"O arquivo pode estar corrompido." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Não foi possível abrir a paleta de cores do KDE \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Não foi possível salvar a paleta de cores como \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Sem título" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Usar as padrões do KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Usar as do KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Abrir..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Recarre&gar" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Salvar" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Salvar &como..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Adicionar linha" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Excluir a última linha" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Caixa de cores" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"A paleta de cores \"%1\" foi modificada.\n" +"Deseja salvá-la?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"A paleta de cores do KDE \"%1\" foi modificada.\n" +"Deseja salvá-la em um arquivo?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"A paleta de cores padrão foi modificada.\n" +"Deseja salvá-la em um arquivo?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Abrir paleta de cores" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"A paleta de cores \"%1\" foi modificada.\n" +"Recarregá-la ocasionará a perda de todas as alterações efetuadas desde o " +"último salvamento.\n" +"Confirma a operação mesmo assim?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Recarregar" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"A paleta de cores do KDE \"%1\" foi modificada.\n" +"Recarregá-la ocasionará a perda de todas as alterações efetuadas desde o " +"último salvamento.\n" +"Confirma a operação mesmo assim?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"A paleta de cores padrão foi modificada.\n" +"Recarregá-la ocasionará a perda de todas as alterações.\n" +"Confirma a operação mesmo assim?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Salvar a paleta de cores como" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Colar em &nova janela" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Excluir a seleção" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "&Copiar para o arquivo..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Colar do ar&quivo..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Texto: Criar caixa" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Texto: Colar" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"O KolourPaint não consegue colar o conteúdo da área de transferência por " +"estar em um formato desconhecido." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Não foi possível colar" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Texto: Excluir caixa" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Seleção: Excluir" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Texto: Finalizar" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Seleção: Desmarcar" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copiar para o arquivo" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Colar do arquivo" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportar..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Digitalizar..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Capturar imagem da tela" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Propriedades" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Recarre&gar" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Todos os arquivos suportados (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Abrir imagem" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Não foi possível abrir a caixa de diálogo de digitalização." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Erro na digitalização" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Atraso na captura de tela" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " segundo" +msgstr[1] " segundos" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Sem atraso" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Ocultar a janela principal" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Propriedades do documento" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Salvar a imagem como" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportar" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"O documento \"%1\" foi modificado.\n" +"Recarregá-lo ocasionará a perda de todas as alterações efetuadas desde o " +"último salvamento.\n" +"Confirma a operação mesmo assim?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"O documento \"%1\" foi modificado.\n" +"Recarregá-lo ocasionará a perda de todas as alterações.\n" +"Confirma a operação mesmo assim?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Imprimir imagem" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Você precisa salvar a imagem antes de enviá-la.\n" +"Deseja salvá-la?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"O documento \"%1\" foi modificado.\n" +"Deseja salvá-lo?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&edimensionar / Escalonar..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "&Definir como imagem (cortar)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Re&fletir (de cima para baixo)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Refletir (horizontalmente)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Girar..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Girar à &esquerda" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Girar à &direita" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Inclinar..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Redu&zir para monocromático (pontilhado)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduzir para &escala de cinza" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inverter as cores" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Limpar" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Tornar confidencial" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Mais &efeitos..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imagem" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "S&eleção" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&Mostrar o caminho" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Desenhar suavizado" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Família da fonte" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Tamanho da fonte" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Negrito" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Itálico" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Sublinhado" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Tachado" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Opção anterior da ferramenta (grupo #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Opção seguinte da ferramenta (grupo #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Opção anterior da ferramenta (grupo #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Opção seguinte da ferramenta (grupo #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Desenhar opaco" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Desenhar com semelhança de cores..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Caixa de ferramentas" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Mostrar &grade" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Mostrar &miniatura" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Modo de &miniaturas ampliadas" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Habilitar &retângulo da miniatura" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zoom" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Adquirir imagem" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Falha no acesso ao scanner selecionado." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pincel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Desenha usando pincéis com diferentes formas e tamanhos" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Clique para desenhar pontos ou arraste para desenhar riscos." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Borracha de cores" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" +"Substitui os pixels com a cor de primeiro plano pela cor do plano de fundo" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Clique ou arraste para apagar os pixels da cor de primeiro plano." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Borracha" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Deixa você apagar os erros" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Clique ou arraste para apagar." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Largue todos os botões do mouse." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Caneta" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Desenha pontos e traços livres" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Lata de spray" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Spray de grafite" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Clique ou arraste para acionar o spray de grafite." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Clique com o botão direito para cancelar." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Clique com o botão esquerdo para cancelar." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Permite selecionar uma cor da imagem" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Clique para selecionar uma cor." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Preenche regiões da imagem" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Clique para preencher uma região." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zoom" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Amplia e reduz a imagem" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Clique para ampliar/reduzir ou arraste com o botão esquerdo para ampliar uma " +"área específica." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Curva" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Desenha curvas" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Arraste o ponto inicial e final." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Arraste com o botão esquerdo para colocar o primeiro ponto de controle ou " +"clique com o botão direito para concluir." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Arraste com o botão direito para colocar o primeiro ponto de controle ou " +"clique com o botão esquerdo para concluir." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Arraste com o botão esquerdo para colocar o último ponto de controle ou " +"clique com o botão direito para concluir." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Arraste com o botão direito para colocar o último ponto de controle ou " +"clique com o botão esquerdo para concluir." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linha" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Desenha linhas" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Arraste para desenhar." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polígono" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Desenha polígonos" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Arraste para desenhar a primeira linha." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Arraste outra linha com o botão esquerdo ou clique com o botão direito para " +"concluir." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Arraste outra linha com o botão direito ou clique com o botão esquerdo para " +"concluir." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Linhas conectadas" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Desenha linhas conectadas" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipse" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Desenha elipses e círculos" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Retângulo" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Desenha retângulos e quadrados" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Retângulo arredondado" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Desenha retângulos e quadrados com os cantos arredondados" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Arraste com o botão esquerdo para criar a seleção." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Arraste com o botão esquerdo para mover a seleção." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Arraste com o botão esquerdo para redimensionar a seleção." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Seleção: Opaco" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Seleção: Transparente" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Seleção: Cor da transparência" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Seleção: Semelhança de cores da transparência" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Seleção (elíptica)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Cria uma seleção elíptica ou circular" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Seleção (livre)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Cria uma seleção livre" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Seleção (retangular)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Cria uma seleção retangular" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Seleção: Mover" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Borrar" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Escreve o texto" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Texto: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Texto: Excluir" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Texto: Nova linha" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Texto: Escrever" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Arraste com o botão esquerdo para criar uma caixa de texto." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Arraste com o botão esquerdo para mover a caixa de texto." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Texto: Mover caixa" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Arraste com o botão esquerdo para redimensionar a caixa de texto." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Clique com o botão esquerdo para alterar a posição do cursor." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Texto: Plano de fundo opaco" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Texto: Plano de fundo transparente" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Texto: Trocar as cores" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Texto: Cor de primeiro plano" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Texto: Cor do plano de fundo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Texto: Fonte" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Texto: Tamanho da fonte" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Texto: Negrito" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Texto: Itálico" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Texto: Sublinhado" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Texto: Tachado" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Modo sem ampliação - Miniatura" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatura" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    To configure it, click on the cube.

                    " +msgstr "" +"

                    A semelhança de cores é a forma quão semelhantes às " +"cores dos diferentes pixels deverão ser, para que as operações as " +"identifiquem como iguais.

                    Se você defini-la com algo diferente da " +"Coincidência exata, você poderá trabalhar de forma mais eficaz com " +"imagens pontilhadas e fotos, de forma comparável ao recurso \"varinha mágica" +"\" dos outros programas de pintura.

                    Esta funcionalidade é aplicada " +"para:

                    • Seleções: No modo Transparente, qualquer cor " +"da seleção que seja semelhante à cor do plano de fundo ficará " +"transparente.
                    • Preenchimento: Para as regiões com pixels " +"coloridos com cores semelhantes - mas não idênticas -, um valor mais " +"elevado conseguirá preencher mais pixels.
                    • Borracha de cor: " +"Qualquer pixel, cuja cor seja semelhante à cor do primeiro plano, " +"será substituída pela cor do plano de fundo.
                    • Recorte automático e Remover borda interna: Para as bordas com pixels coloridos com " +"cores semelhantes - mas não idênticas -, um valor mais elevado poderá " +"recortar a borda inteira.

                    Os valores mais elevados significam " +"que as operações consideram uma quantidade maior de cores consideradas " +"semelhantes como sendo a mesma. Sendo assim, você deverá aumentar " +"este valor se as operações acima não estão afetando os pontos cujas cores " +"você acha que sejam suficientemente semelhantes.

                    Entretanto, se o " +"efeito for muito grande e alterarem pontos cujas cores você não entende que " +"sejam suficientemente semelhantes (ex., se o Preenchimento alterar " +"muitos pontos), você deverá diminuir este valor.

                    Para configurá-la, " +"clique no cubo.

                    " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    " +msgstr "" +"

                    A semelhança de cores é a forma quão semelhantes às " +"cores dos diferentes pixels deverão ser, para que as operações as " +"identifiquem como iguais.

                    Se você defini-la com algo diferente da " +"Coincidência exata, você poderá trabalhar de forma mais eficaz com " +"imagens pontilhadas e fotos, de forma comparável ao recurso \"varinha mágica" +"\" dos outros programas de pintura.

                    Esta funcionalidade é aplicada " +"para:

                    • Seleções: No modo Transparente, qualquer cor " +"da seleção que seja semelhante à cor do plano de fundo ficará " +"transparente.
                    • Preenchimento: Para as regiões com pixels " +"coloridos com cores semelhantes - mas não idênticas -, um valor mais " +"elevado conseguirá preencher mais pixels.
                    • Borracha de cor: " +"Qualquer pixel, cuja cor seja semelhante à cor do primeiro plano, " +"será substituída pela cor do plano de fundo.
                    • Recorte automático e Remover borda interna: Para as bordas com pixels coloridos com " +"cores semelhantes - mas não idênticas -, um valor mais elevado poderá " +"recortar a borda inteira.

                    Os valores mais elevados significam " +"que as operações consideram uma quantidade maior de cores consideradas " +"semelhantes como sendo a mesma. Sendo assim, você deverá aumentar " +"este valor se as operações acima não estão afetando os pontos cujas cores " +"você acha que sejam suficientemente semelhantes.

                    Entretanto, se o " +"efeito for muito grande e alterarem pontos cujas cores você não entende que " +"sejam suficientemente semelhantes (ex., se o Preenchimento alterar " +"muitos pontos), você deverá diminuir este valor.

                    " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                    Color Similarity: %1%

                    Click to configure.

                    " +msgstr "" +"

                    Semelhança de cores: %1%

                    Clique para configurar." + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                    Color Similarity: Exact Match

                    Click to configure." +msgstr "" +"

                    Semelhança de cores: Coincidência exata

                    Clique " +"para configurar.

                    " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Brilho:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Re&staurar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "&Contraste:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gama:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Res&taurar" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Ca&nais:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Todos" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Vermelho" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Azul" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Rest&aurar todos os valores" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Configurações" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Quantidade:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Habilitar" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Cores" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Tonalidade:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturação:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Brilho:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Vermelho" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "Ver&de" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "A&zul" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Todos" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canais" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monocromático" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nocromático (pontilhado)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 co&res" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 c&ores (pontilhado)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Cores de 24 &bits" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduzir para" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularidade:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                    To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                    To change the color of a color cell itself, double-click on it.

                    You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                    " +msgstr "" +"

                    Para selecionar a cor do primeiro plano, utilizada pelas ferramentas " +"de desenho, clique com o botão esquerdo em uma célula de cores preenchida. " +"Para selecionar a cor do plano de fundo, clique com o botão direito.

                    Para alterar a cor da célula, dê um clique duplo sobre ela.

                    Você " +"também pode trocar a cor da célula preenchida, usando o arrastar e soltar. " +"Além disso, se você manter pressionada a tecla Ctrl, a cor da célula " +"de destino será substituída, em vez de ser trocada com a célula de origem." + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Converter ¶:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Qualidade:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Visualização" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monocromático" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monocromático (pontilhado)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 cores" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 cores (pontilhado)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Cores de 24 bits" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Posição da i&magem" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centro da página" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Can&to superior esquerdo da página" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparente" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Padrões do KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Cores: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Cores: %1 [modificado]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Círculo" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Quadrado" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Barra" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Barra invertida" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Sem preenchimento" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Preencher com a cor do plano de fundo" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Preencher com a cor do primeiro plano" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opaco" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Já existe um documento chamado \"%1\".\n" +#~ "Deseja sobrescrevê-lo?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Já existe uma paleta de cores chamada \"%1\".\n" +#~ "Deseja sobrescrevê-la?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "A definição do nível de zoom para um valor que não seja múltiplo de 100% " +#~ "resultará em edição imprecisa e em falhas ao redesenhar.\n" +#~ "Deseja realmente definir o nível de zoom para %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Definir o nível de zoom para %1%" + +#~ msgid "None" +#~ msgstr "Nenhum" + +#~ msgid "" +#~ "

                    Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                    Are you sure want to resize the image?

                    " +#~ msgstr "" +#~ "

                    O redimensionamento da imagem para %1x%2 pode ocupar uma " +#~ "quantidade substancial de memória. Isto poderá reduzir a capacidade de " +#~ "resposta do sistema e poderá causar outros problemas.

                    Tem certeza " +#~ "de que deseja redimensionar a imagem?

                    " + +#~ msgid "Overwrite" +#~ msgstr "Sobrescrever" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Não foi possível abrir \"%1\" - tipo MIME desconhecido." + +#~ msgid "Save Preview" +#~ msgstr "Salvar a visualização" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Para obter suporte, visite a página na Internet." diff --git a/po/ro/kolourpaint.po b/po/ro/kolourpaint.po new file mode 100644 index 0000000..ae7ba86 --- /dev/null +++ b/po/ro/kolourpaint.po @@ -0,0 +1,2772 @@ +# translation of kolourpaint.po to Romanian +# Claudiu Costin , 2004, 2005. +# Sergiu Bivol , 2008, 2009, 2010. +# Sergiu Bivol , 2010, 2012, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-26 14:33+0100\n" +"Last-Translator: Sergiu Bivol \n" +"Language-Team: Romanian\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Lokalize 19.12.3\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Claudiu Costin" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "claudiuc@kde.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balans" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Înmoaie" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Ascute" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, fuzzy, kde-format +msgid "Clear" +msgstr "Șterge" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Selecție: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "R&eliefare" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Aplatizare" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, fuzzy, kde-format +msgid "Reduce to Grayscale" +msgstr "Reduce to &nuanțe de gri" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Nuanță, saturație, valoare" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inversează culorile" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inversează" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reduce la monocrom (Împrăștiere)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reduce la monocrom" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reduce la 256 culori (Împrăștiere)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reduce la 256 culori" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Egalizator histogramă" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, fuzzy, kde-format +msgid "Flip" +msgstr "Întoarcere" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Răstoarnă orizontal" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Răstoarnă vertical" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, fuzzy, kde-format +msgid "Selection: Scale" +msgstr "Selecție: %1" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, fuzzy, kde-format +msgid "Selection: Smooth Scale" +msgstr "Selecție: %1" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, fuzzy, kde-format +msgid "Resize" +msgstr "Redimensionare" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Scalează" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, fuzzy, kde-format +msgid "Rotate" +msgstr "Rotește" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, fuzzy, kde-format +msgid "Skew" +msgstr "Îc&lină..." + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Des-face: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Desfă" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Re-face: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Refă" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Des-face: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Desfă" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Re-face: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Refă" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, fuzzy, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "încă %1 item" +msgstr[1] "încă %1 itemi" +msgstr[2] "încă %1 de itemi" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Pipetă de culoare" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Umplere" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, fuzzy, kde-format +#| msgid "More Image Effects (Selection)" +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Mai multe efecte (selecție)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "More Image Effects" +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Mai multe efecte" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efect:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reduce culorile" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, fuzzy, kde-format +#| msgid "Document Properties" +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Proprietăți document" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, fuzzy, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "600 DPI" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nespecificat" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Orizontal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertical:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                    Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                    The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                    If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                    If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                    Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                    " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, fuzzy, kde-format +#| msgid "&Effect:" +msgid "O&ffset" +msgstr "Deplasare" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                    The Offset is the relative position where this image should be " +"placed, compared to other images.

                    Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                    " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, fuzzy, kde-format +#| msgid "Text: Finish" +msgid "&Text Fields" +msgstr "Text: Finalizează" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Adaugă rînd" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Ș&terge rîndul" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Reinițializează" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                    Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                    However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                    Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                    " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Cheie" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Valoare" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, fuzzy, kde-format +#| msgid "Text: Finish" +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Text: Finalizează" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensiuni" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Previzualizare" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Actualizează" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "Resize / Scale" +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Redimensionează / Scalează" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Acționează asupra:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Toată imaginea" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Selecție" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Casetă textulaă" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operație" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                    • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                    • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                    • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Redimensionează" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Scalează" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Scalare li&nă" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Lățime:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Înălțime:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nou:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Procent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                    Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to resize the text box?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Text" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, fuzzy, kde-format +msgid "R&esize Text Box" +msgstr "Text" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                    Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to resize the image?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +#| msgid "Resize Image?" +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Redimensionați imaginea?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "R&edimensionează imaginea" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                    Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to scale the image?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +#| msgid "Scale Image?" +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Scalați imaginea?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Scal&ează imaginea" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                    Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to scale the selection?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Scale Selection?" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Scalați selecția?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Scal&ează selecția" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                    Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Selecție: %1" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, fuzzy, kde-format +msgid "Smooth Scal&e Image" +msgstr "Selecție: %1" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                    Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the selection?" +"

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Selecție: %1" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, fuzzy, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Selecție: %1" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rotește selecția" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rotește imaginea" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "După rotire:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Direcție" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Unghi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 de gra&de" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 de grad&e" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 de &grade" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Personalizat:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "grade" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                    Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to rotate the selection?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +#| msgid "Rotate Selection?" +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rotiți selecția?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rot&ește selecția" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                    Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to rotate the image?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +#| msgid "Rotate Image?" +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rotiți imaginea?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rot&ește imaginea" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Selecție" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "&Imagine" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Orizontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertical:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                    Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to skew the selection?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Selecție" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, fuzzy, kde-format +msgid "Sk&ew Selection" +msgstr "Ș&terge selecția" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                    Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to skew the image?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Deschidere imagine" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, fuzzy, kde-format +msgid "Sk&ew Image" +msgstr "&Imagine" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, fuzzy, kde-format +#| msgid "Color Similarity" +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Similaritate culori" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Potrivire exactă" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Ce este similaritatea culorilor?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, fuzzy, kde-format +#| msgid "Save Preview" +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Salvează previzualizarea" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 octet (aprox. %2%)" +msgstr[1] "%1 octeți (aprox. %2%)" +msgstr[2] "%1 de octeți (aprox. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Nu am putut deschide „%1”." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Nu am putut deschide „%1”- format de imagine nesuportat.\n" +"Fișierul ar putea fi defect." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Nu am putut salva imaginea - informații insuficiente." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Tip MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, fuzzy, kde-format +#| msgid "Internal Error" +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Eroare internă" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                    The %1 format may not be able to preserve all of the image's " +"color information.

                    Are you sure you want to save in this format?

                    " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, fuzzy, kde-format +#| msgid "Lossy File Format" +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Format de fișier cu pierderi" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                    Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                    Are " +"you sure you want to save at this color depth?

                    " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, fuzzy, kde-format +#| msgid "Low Color Depth" +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Adîncime de culoare mică" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Nu am putut salva imaginea - nu pot crea fișier temporar." + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Nu am putut salva ca „%1”." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Nu am putut salva imaginea - încărcarea distantă a eșuat." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, fuzzy, kde-format +msgid "Remove Internal Border" +msgstr "Eroare internă" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "&Decupare automată" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Decupare automată" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Eroare internă" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, fuzzy, kde-format +#| msgid "Autocrop" +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Decupare automată" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, fuzzy, kde-format +msgid "Set as Image" +msgstr "Salvează imaginea ca" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Selecție: Creează" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "Program de desenare pentru KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Investigator șef" + +#: kolourpaint.cpp:72 +#, fuzzy, kde-format +msgid "Martin Koller" +msgstr "Bară de unelte text" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Pictograme" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Suport pentru metoda de introducere" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, fuzzy, kde-format +#| msgid "More Image Effects" +msgid "Image Effects" +msgstr "Mai multe efecte" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, fuzzy, kde-format +msgid "KDE 4 Porting" +msgstr "Portarea KDE4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +msgid "KF 5 Porting" +msgstr "Portarea KDE4" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "Fișierul imagine de deschis" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Vizualizare" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imagine" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Culori" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Bara de unelte principală" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Bara de text" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, fuzzy, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Selecție: %1" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Editare" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +#| msgid "Thumbnail" +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Mini-imagine" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Imposibil de deschis paleta de culori „%1”." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Imposibil de deschis paleta de culori „%1” - format nesusținut.\n" +"Fișierul ar putea fi defect." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Imposibil de deschis paleta de culori KDE „%1”." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Imposibil de salvat paleta de culori ca „%1”." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Fără titlu" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Utilizează valorile implicite KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Deschidere..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "&Reîncarcă" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Salvează" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Salv&are ca..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Adaugă rând" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Șterge ultimul rând" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, fuzzy, kde-format +msgid "Color Box" +msgstr "Culori" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Documentul „%1” a fost modificat.\n" +"Doriți să îl salvez?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Documentul „%1” a fost modificat.\n" +"Doriți să îl salvez?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Documentul „%1” a fost modificat.\n" +"Doriți să îl salvez?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Deschide paleta de culori" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Reîncarcă" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Documentul „%1” a fost modificat.\n" +"Doriți să îl salvez?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Documentul „%1” a fost modificat.\n" +"Doriți să îl salvez?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, fuzzy, kde-format +#| msgid "Invert Colors" +msgid "Save Color Palette As" +msgstr "Inversează culorile" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Lipește în fereastră &nouă" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Ș&terge selecția" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "C&opiază în fișier..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Lipește &din fișier..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: Creează casetă" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: Lipește" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Nu pot lipi" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: Șterge casetă" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Selecție: Șterge" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: Finalizează" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Selecție: Deselectează" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, fuzzy, kde-format +#| msgid "Copy to File" +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Copiază în fișier" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, fuzzy, kde-format +#| msgid "Paste From File" +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Lipește din fișier" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportă..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Scanare..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Proprietăți" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&Reîncarcă" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +#| msgid "Open Image" +msgctxt "@title:window" +msgid "Open Image" +msgstr "Deschide imagine" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, fuzzy, kde-format +#| msgid "Paste in &New Window" +msgid "Hide Main Window" +msgstr "Lipește în fereastră &nouă" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Proprietăți document" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Salvează imaginea ca" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, fuzzy, kde-format +#| msgid "Export" +msgctxt "@title:window" +msgid "Export" +msgstr "Exportă" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, fuzzy, kde-format +#| msgid "Print Image" +msgctxt "@title:window" +msgid "Print Image" +msgstr "Tipărește imaginea" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Trebuie să salvați imaginea înainte de a o trimite.\n" +"Doriți să o salvați?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Documentul „%1” a fost modificat.\n" +"Doriți să îl salvați?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&edimensionează / Scalează..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Se&tează ca imagine (Decupare)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, fuzzy, kde-format +#| msgid "&Vertical (upside-down)" +msgid "&Flip (upside down)" +msgstr "&Vertical (cu susul în jos)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, fuzzy, kde-format +#| msgid "Flip horizontally" +msgid "Mirror (horizontally)" +msgstr "Răstoarnă orizontal" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rotește..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, fuzzy, kde-format +msgid "Rotate &Left" +msgstr "Rotește spre stânga" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, fuzzy, kde-format +msgid "Rotate Righ&t" +msgstr "Rotește spre dreapta" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Îc&lină..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reduce la mo&nocrom (Împrăstiere)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, fuzzy, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reduce to &nuanțe de gri" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Inversează culorile" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Ș&terge" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Mai multe efecte..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imagine" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, fuzzy, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Selecție: %1" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Afișează &calea" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Familie font" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Dimensiune font" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Aldin" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Cursiv" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Subliniat" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Tăiat" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, fuzzy, kde-format +msgid "Tool Box" +msgstr "Text" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Afișează &grila" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Afișează &mini-imaginea" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Lupă" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Toată imaginea" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pensulă" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Desenează utilizînd pensule de diferite forme și mărimi" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Eliberați toate butoanele șoricelului." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Tub de spray" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Tub de spray graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Dați clic și trageți pentru a desena graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Dați clic dreapta pentru anulare." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Dați clic stînga pentru anulare." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Vă permite să alegeți o culoare din imagine" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Apăsați pentru a alege o culoare." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, fuzzy, kde-format +msgid "Zoom" +msgstr "Scalează" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linie" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Poligon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipsă" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, fuzzy, kde-format +msgid "Rectangle" +msgstr "Dreptunghiular" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, fuzzy, kde-format +msgid "Selection: Opaque" +msgstr "Selecție: %1" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, fuzzy, kde-format +msgid "Selection: Transparent" +msgstr "Selecție: %1" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, fuzzy, kde-format +msgid "Text: Font" +msgstr "Font text..." + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, fuzzy, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Ascunde &mini-imaginea" + +#: views/kpZoomedThumbnailView.cpp:65 +#, fuzzy, kde-format +msgid "%1% - Thumbnail" +msgstr "Mini-imagine" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    To configure it, click on the cube.

                    " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                    Color Similarity: %1%

                    Click to configure.

                    " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                    Color Similarity: Exact Match

                    Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Luminozitate:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Re&setează" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Co&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gama:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Rese&tează" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Canale:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Toate" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Roșu" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Verde" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Albastru" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Resetează &toate valorile" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Configurări" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "C&antitate:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Activează" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Culori" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Nuanță:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Saturație:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Valoare:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Roșu" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Verde" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Albastru" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Toate" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Canale" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Monocrom" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Mo&nocrom (împrăștiat)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 cu&lori" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 culo&ri (împrăștiat)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "Color pe 24 &biți" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reduce la" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularitate:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                    To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                    To change the color of a color cell itself, double-click on it.

                    You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                    " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Convertește &la:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Cali&tate:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Previzualizare" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monocrom" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monocromă (Împrăștiere)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Culori" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Culori (Împrăștiere)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "Color pe 24 biți" + +#: widgets/kpPrintDialogPage.cpp:58 +#, fuzzy, kde-format +#| msgid "I&mage Position" +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Poziție i&magine" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Centrul paginii" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparent" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Implicite KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Culori: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Culori: %1 [modificat]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cerc" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Pătrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Backslash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Fără umplere" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Umple cu culoarea fundalului" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Umple cu culoarea prim-planului" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opac" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Există deja un document cu numele „%1”.\n" +#~ "Doriți să-l suprascriu?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Există deja o paletă de culori cu denumirea „%1”.\n" +#~ "O suprascrieți?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Setează nivelul de scalare la %1%" + +#~ msgid "None" +#~ msgstr "Nimic" + +#~ msgid "Overwrite" +#~ msgstr "Suprascrie" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Nu am putut deschide „%1” - tip MIME necunoscut." + +#~ msgid "Save Preview" +#~ msgstr "Salvează previzualizarea" + +#~ msgid "No Scanning Support" +#~ msgstr "Fără suport de scanare" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Suportul pentru scanare nu este instalat." + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Stabilește ca imagine de &fundal (centrat)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Stabilește ca imagine de fundal (mo&zaic)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Înainte de a seta imaginea ca imagine de fundal, trebuie salvată ca " +#~ "fișier local.\n" +#~ "Doriți să o salvați?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Înainte de a stabili imaginea ca imagine de fundal, aceasta trebuie " +#~ "salvată.\n" +#~ "Doriți să o salvați?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Nu am putut modifica imaginea de fundal." + +#~ msgid "Flip Selection" +#~ msgstr "Răstoarnă selecția" + +#~ msgid "Flip Image" +#~ msgstr "Răstoarnă imaginea" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Vertical (cu susul în jos)" + +#~ msgid "&Horizontal" +#~ msgstr "&Orizontal" + +#, fuzzy +#~| msgid "Could not open \"%1\" - out of graphics memory." +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Nu am putut deschide „%1” - nu mai există memorie grafică." + +#~ msgid "Cannot Scan" +#~ msgstr "Imposibil de scanat" + +#~ msgid "&Flip..." +#~ msgstr "&Răstoarnă..." + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Nu am putut deschide „%1” - nu mai există memorie grafică." + +#~ msgid "You have to restart KolourPaint for these changes to take effect." +#~ msgstr "Trebuie să reporniți KolourPaint ca să activați aceste modificări." + +#~ msgid "Toolbar Settings Changed" +#~ msgstr "Modificare setări bare de unelte" + +#~ msgid "Hide &Path" +#~ msgstr "Ascunde &calea" + +#~ msgid "Hide &Grid" +#~ msgstr "Ascunde &grila" + +#~ msgid "Hide T&humbnail" +#~ msgstr "Ascunde &mini-imaginea" + +#, fuzzy +#~| msgid "Reduce Colors" +#~ msgid "Reload Colors" +#~ msgstr "Reduce culorile" + +#~ msgid "Low Screen Depth" +#~ msgstr "Adîncime de culoare mică" + +#~ msgid "Image Contains Translucency" +#~ msgstr "Imaginea conține transparență" + +#, fuzzy +#~| msgid "Paste &From File..." +#~ msgid "Use File..." +#~ msgstr "Lipește &din fișier..." + +#~ msgid "Maintainer" +#~ msgstr "Responsabil" + +#~ msgid "%1 bytes" +#~ msgstr "%1 octeți" + +#~ msgid "%1 bytes (%2%)" +#~ msgstr "%1 octeți (%2%)" + +#~ msgid "%1 B" +#~ msgstr "%1 O" + +#~ msgid "%1 B (%2%)" +#~ msgstr "%1 O (%2%)" + +#~ msgid "%1 B (approx. %2%)" +#~ msgstr "%1 O (aprox. %2%)" + +#~ msgid "%1B" +#~ msgstr "%1O" + +#~ msgid "%1B (%2%)" +#~ msgstr "%1O (%2%)" + +#~ msgid "%1B (approx. %2%)" +#~ msgstr "%1O (aprox. %2%)" diff --git a/po/ru/docs/kolourpaint/KolourPaint.png b/po/ru/docs/kolourpaint/KolourPaint.png new file mode 100644 index 0000000..d7a6b52 Binary files /dev/null and b/po/ru/docs/kolourpaint/KolourPaint.png differ diff --git a/po/ru/docs/kolourpaint/image_balance.png b/po/ru/docs/kolourpaint/image_balance.png new file mode 100644 index 0000000..cb09e28 Binary files /dev/null and b/po/ru/docs/kolourpaint/image_balance.png differ diff --git a/po/ru/docs/kolourpaint/image_emboss.png b/po/ru/docs/kolourpaint/image_emboss.png new file mode 100644 index 0000000..97ead6b Binary files /dev/null and b/po/ru/docs/kolourpaint/image_emboss.png differ diff --git a/po/ru/docs/kolourpaint/image_flatten.png b/po/ru/docs/kolourpaint/image_flatten.png new file mode 100644 index 0000000..8ca5cca Binary files /dev/null and b/po/ru/docs/kolourpaint/image_flatten.png differ diff --git a/po/ru/docs/kolourpaint/image_invert.png b/po/ru/docs/kolourpaint/image_invert.png new file mode 100644 index 0000000..17299b6 Binary files /dev/null and b/po/ru/docs/kolourpaint/image_invert.png differ diff --git a/po/ru/docs/kolourpaint/image_reduce_colors.png b/po/ru/docs/kolourpaint/image_reduce_colors.png new file mode 100644 index 0000000..01489c8 Binary files /dev/null and b/po/ru/docs/kolourpaint/image_reduce_colors.png differ diff --git a/po/ru/docs/kolourpaint/image_resize_scale.png b/po/ru/docs/kolourpaint/image_resize_scale.png new file mode 100644 index 0000000..16fce53 Binary files /dev/null and b/po/ru/docs/kolourpaint/image_resize_scale.png differ diff --git a/po/ru/docs/kolourpaint/image_rotate.png b/po/ru/docs/kolourpaint/image_rotate.png new file mode 100644 index 0000000..fa3e430 Binary files /dev/null and b/po/ru/docs/kolourpaint/image_rotate.png differ diff --git a/po/ru/docs/kolourpaint/image_skew.png b/po/ru/docs/kolourpaint/image_skew.png new file mode 100644 index 0000000..686d486 Binary files /dev/null and b/po/ru/docs/kolourpaint/image_skew.png differ diff --git a/po/ru/docs/kolourpaint/image_soften_sharpen.png b/po/ru/docs/kolourpaint/image_soften_sharpen.png new file mode 100644 index 0000000..620cf96 Binary files /dev/null and b/po/ru/docs/kolourpaint/image_soften_sharpen.png differ diff --git a/po/ru/docs/kolourpaint/index.docbook b/po/ru/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..aadfcb9 --- /dev/null +++ b/po/ru/docs/kolourpaint/index.docbook @@ -0,0 +1,1836 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +Руководство пользователя &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +ИльяБухман
                    me@justerr.net
                    Перевод на русский язык
                    ИванКашуков
                    dolphin210@yandex.ru
                    Обновление русского перевода
                    АлександрПодольский
                    apd2004@gmail.com
                    Обновление русского перевода 2010
                    АлексейБаранов
                    aleksei.ee@gmail.com
                    Обновление русского перевода 2014
                    +
                    + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +23 марта 2018 г. +Приложения KDE 18.04 + + +&kolourpaint; — это свободно распространяемое, простое в использовании графическое приложение от &kde;. + + + +kolourpaint +kdegraphics + + +
                    + + +Введение +&kolourpaint; — это свободно распространяемое графическое приложение от &kde;. &kolourpaint; идеально подходит для решения таких повседневных задач, как: + + + +Рисование: составление диаграмм и рисование от руки + + +Операции со снимками экрана: создание и редактирование снимков экрана + + +Обработка изображений: редактирование фотографий и отсканированных изображений, применение эффектов + + +Редактирование значков: рисование иллюстраций и логотипов с использованием прозрачности + + + + + + + + + + + + + +Использование &kolourpaint; + +Щёлкните мышью на следующих ссылках, чтобы узнать больше о возможностях &kolourpaint;: + + + +Инструменты + + +Работа с цветом + + +Параметры просмотра + + +Эффекты изображения + + + + + +Инструменты + +Дополнительный параметр в меню Настройка позволяет указать, следует ли использовать сглаживание при рисовании (по умолчанию этот параметр включён). + + +Создание снимков экрана + +Снимок экрана — это снимок содержимого экрана на вашем компьютере. Он может быть полезен для наглядного представления действий, которые необходимо предпринять для достижения какого-либо результата, либо для того, чтобы показать найденную вами проблему. +Для создания снимка экрана, готового для редактирования в окне &kolourpaint;, вы можете использовать пункт в главном меню Файл Сделать снимок экрана. + + + + + + + +В открывшемся диалоговом окне вы можете менять задержку создания снимка в секундах, также вы можете Скрыть главное окно при создании снимка. Когда вы будете готовы сделать снимок экрана, просто нажмите на кнопку OK. Готовый снимок будет сразу помещён в область редактирования &kolourpaint;. + + + +Описание инструментов + +Чтобы быстро выбрать инструмент в &kolourpaint;, нажмите связанную с ним комбинацию клавиш. Комбинации описаны в секции ниже и в советах по инструментам. Если вы находитесь в режиме набора текста, нажмите &Alt;&Shift; и необходимую клавишу. Например, чтобы выбрать кисть, введите &Alt;&Shift;B или, в обычном режиме, просто В. + + + Кисть (B) + + Очистка цвета (O) + + Выбор цвета (C) + + Соединённые линии (N) + + Кривая (V) + + Эллипс (E) + + Ластик (A) + + Заливка (F) + + Линия (L) + + Перо (P) + + Многоугольник (G) + + Прямоугольник (R) + + Округлённый прямоугольник (U) + + Выделение (эллиптическое) (I) + + Выделение (свободное) (M) + + Выделение (прямоугольное) (S) + + Распылитель (Y) + + Текст (T) + + + + + +Кисть <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Щёлкните мышью или передвигайте мышь с нажатой кнопкой, чтобы провести линию. + + + + + + + + + + + + + + +Щёлкните на одной из фигур для выбора формы кисточки. Вы можете выбрать круглую, квадратную форму кисти или форму в виде наклонной линии. + + + + + + +Левая кнопка мыши выполняет рисование основным цветом. Правая — позволяет рисовать цветом фона. + + + +Выбор цвета <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Для того чтобы выбрать основной цвет, щёлкните левой кнопкой мыши на любой точке изображения. Для задания фонового цвета щёлкните правой кнопкой. После этого &kolourpaint; вернётся к последнему выбранному инструменту. + + + + +Соединенные линии и Многоугольник <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Перемещайте мышь с нажатой кнопкой для того, чтобы рисовать соединенные линии. Инструмент «Многоугольник» используется точно так же, с той лишь разницей, что начальная и конечная точки автоматически соединяются, образуя многоугольник. + +Левая кнопка мыши позволяет рисовать основным цветом, правая — рисует цветом фона, а также инвертирует цвет заливки для многоугольников. + +Вы можете установить ширину линии. А для многоугольников вы также можете задать способ заливки. + + + + +Кривая <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Нажмите левую кнопку мыши и перемещайте мышь для того, чтобы рисовать линию — таким образом вы установите её начальную и конечную точки. Вы можете установить до двух контрольных точек перетаскиванием. Для того, чтобы завершить формирование кривой без использования контрольных точек, нажмите другую клавишу мыши. Инструмент "Кривая" создает кубическую кривую Безье. + +Левая кнопка мыши выполняет рисование основным цветом. Правая — позволяет рисовать цветом фона. + +Вы также можете установить ширину линии. + + + + +Эллипс <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Нажмите кнопку мыши и перемещайте курсор для рисования эллипса. + +Левая клавиша мыши позволяет рисовать основным цветом, правая — рисует цветом фона, а также инвертирует цвет заливки. + +Вы также можете установить ширину линии и задать способ заливки. + +Для использования дополнительных функций применяйте клавиши-модификаторы: + + + +Чтобы нарисовать круг, передвигайте курсор, удерживая клавишу &Shift;. + + +Для рисования эллипса с заданной центральной точкой необходимо нажать и удерживать &Ctrl;, щёлкнуть на желаемое место центра эллипса и передвигать курсор до тех пор, пока эллипс не примет нужные размер и форму. + + +Для рисования круга с заданной центральной точкой необходимо нажать и удерживать &Ctrl; и &Shift;, щёлкнуть на желаемое место центра круга и передвигать курсор до тех пор, пока круг не примет нужный размер. + + + + + + +Ластики + + +Ластик <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Удерживайте кнопку мыши и перемещайте курсор для того, чтобы стирать элементы рисунка. + + +В отличие от других инструментов, ластики рисуют цветом фона. Для того, чтобы рисовать основным цветом, используйте правую кнопку мыши. + + +Ластик может быть только квадратным. Для того, чтобы использовать другие формы, например, круг, выберите инструмент «Кисточка» и, перемещая её, удерживайте правую кнопку мыши. + + +Дважды щёлкните на пиктограмме ластика, чтобы полностью очистить рисунок. Это действие эквивалентно использованию пункта Очистить меню «Изображение». + + + + + +Очистка цвета <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Удерживайте кнопку мыши и перемещайте курсор для замены точек основного цвета на точки с цветом фона. Для замены всех похожих по цвету пикселов (но необязательно с точно одинаковым цветом) на пикселы с цветом фона, например, в смешанных изображениях или фотографиях, используйте настройку Похожие цвета вместо «Точное соответствие». + + +В отличие от других инструментов, ластики рисуют цветом фона. Для того, чтобы заменять цвет фона основным цветом, используйте правую кнопку мыши. + + +Вы можете настроить размер ластика. + + +Дважды щёлкните на иконке «Очистка цвета», чтобы применить её ко всему изображению. + + + + + + +Заливка <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Для заполнения области одного цвета щёлкните мышью внутри неё. Для заполнения области с похожими цветами используйте пункт Похожие цвета вместо «Точное соответствие». + +По щелчку левой кнопки мыши будет произведена заливка основным цветом, правой — цветом фона. + + + +Линия <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Удерживайте клавишу мыши и перемещайте курсор, чтобы нарисовать линию. + +Левая кнопка мыши выполняет рисование основным цветом. Правая — позволяет рисовать цветом фона. + +Вы также можете установить ширину линии. + + + + + + + + + + + + + + + + + + + + + +Удерживайте &Ctrl; для рисования линий под углами, кратными 30 градусам — это линии в красной диаграмме. + + +Удерживайте &Shift; для рисования линий под углом в 45 градусов — эти линии на синей диаграмме. + + +Удерживайте &Ctrl; и &Shift; для рисования линий под углом, кратным 30 или 45 градусам — эти линии на зеленой диаграмме. + + + + + + +Перо <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Щёлкните мышью для того, чтобы поставить одну точку, или перемещайте курсор с нажатой кнопкой для рисования произвольной линии. + +Левая кнопка мыши выполняет рисование основным цветом. Правая — позволяет рисовать цветом фона. + + + + +Прямоугольники <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Удерживая кнопку мыши, перемещайте курсор для рисования прямоугольника. Округленный прямоугольник — это прямоугольник с скругленными углами. + +Левая клавиша мыши позволяет рисовать основным цветом, правая — рисует цветом фона, а также инвертирует цвет заливки. + +Вы также можете установить ширину линии и задать способ заливки. + +Для использования дополнительных функций применяйте клавиши-модификаторы: + + + +Удерживайте &Shift;, чтобы нарисовать квадрат. + + +Для рисования прямоугольника с заданным центром необходимо нажать и удерживать &Ctrl;, кликнуть на желаемое место центра прямоугольника и передвигать курсор до тех пор, пока фигура не примет нужные размер и форму. + + +Для рисования квадрата с заданным центром необходимо нажать и удерживать &Ctrl; и &Shift;, кликнуть на желаемое место центра квадрата и передвигать курсор до тех пор, пока фигура не примет нужный размер. + + + + + + +Выделение <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Используйте инструменты выделения для выбора определённой области изображения. + +Чтобы перетащить выделенную область, удерживайте левую клавишу мыши и начните перемещать курсор. Главное окно будет прокручиваться по мере необходимости, что позволит вам перетащить выделенное на ту часть изображения, которая в данный момент не видна. + +Вы можете изменять размер всего изображения или выделенной области с помощью диалоговых окон Изменить размер и Сглаженное масшатбирование или простым перетаскивание соответствующих контрольных точек (квадратики рядом со сторонами границы). Зажмите &Shift; во время изменения размера выделенной области для сохранения пропорций. Правая кнопка мыши вызывает контекстное меню со стандартными командами редактирования из меню Правка и эффектами изображения. + + +Вы можете использовать курсорные клавиши, чтобы выделять и перемещать область. + + +Если перед перемещением выделенной области зажать &Ctrl;, будет перемещаться копия выделенной области. При зажатом &Shift; выделенная область будет размазываться. + + + + + + + + + + + + + +Существует два режима выделения: сплошной (выбирается по умолчанию) и прозрачный. Если вы используете прозрачный режим выделения, то все пикселы фонового цвета будут считаться прозрачными (вычитание фона). Это позволяет вставить выделенную область без фона. Для того, чтобы выполнить отделение фона на фрагменте со смешанными цветами, используйте параметр Схожесть цвета. + + + + + + +Можно применять различные эффекты к выделенной области — см. секцию Эффекты изображения для получения дополнительной информации. + +Возможно сохранить выделение в файл: выберите в контекстном меню выделения пункт Копировать в файл... или воспользуйтесь пунктом главного меню ПравкаКопировать в файл.... + + + +Распылитель <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Нажмите кнопку мыши и перемещайте курсор, чтобы использовать распылитель. Чем дольше вы будете удерживать клавишу мыши на одном месте, тем более концентрированным будет цветовое пятно. + + + + + + + + + + + + + +Щёлкните мышью на одном из квадратов, чтобы выбрать размер области распыления. Вы можете выбирать размер в 9x9, 17x17 и 29x29 пикселов. + + + + + + +Левая кнопка мыши выполняет рисование основным цветом. Правая — позволяет рисовать цветом фона. + + + + +Текст <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Выделите курсором мыши область, в которой вы бы хотели разместить текст. Как только появится рамка, ограничивающая область ввода текста, вы можете начинать вводить его. Чтобы переместить эту область, нажмите и удерживайте левую кнопку мыши на границе области, и перемещайте её. Чтобы изменить размер области, используйте диалоговое окно Изменить размер или перетаскивайте контрольные точки (квадратики рядом со сторонами границы). + + +Если вы случайно сняли выделение с текстовой области, вы можете использовать пункт меню Отменить действие, чтобы вернуться к редактированию текста. + + + +Использование прозрачного цвета + + + + + + + + +На картинке слева вы можете увидеть пример изображения. Правая картинка показывает добавление текста с непрозрачными цветами фона и переднего плана. + + + + + + + + + +Изображение слева демонстрирует добавление текста с непрозрачным основным цветом и прозрачным цветом фона. Рисунок справа показывает добавление текста с прозрачным основным цветом и непрозрачным цветом фона. + + + + +Общие параметры инструментов + + + + + + + + + + + + + +Щёлкните мышью на одном из квадратов для выбора размера ластика. Вы можете выбирать размер в 2, 3, 5, 9, 17 и 29 пикселов. + +Изменение размера ластика влияет только на ластики. + + + + + + + + + + + +Щелкните мышью на одной из линий, чтобы изменить ширину линии. Вы можете выбрать ширину в 1, 2, 3, 5 и 8 пикселов. + +Изменение ширины линии влияет на инструменты: Соединённые линии, Кривая, Эллипс, Линия, Многоугольник, Прямоугольник и Скругленный прямоугольник. + + + + + + + + + + + +Щелкните на одном из прямоугольников для выбора стиля заливки. Существуют следующие варианты заливки: без заполнения, заполнение фоновым цветом и заполнение основным цветом. Тип заливки влияет на следующие инструменты: Эллипс, Многоугольник, Прямоугольник и Скругленный прямоугольник. + + + + + + + + + + +Работа с цветом + + +Цветовая палитра + + + + + + + +Цветовая палитра + + + + +Цветовая палитра разделена на три секции: цветовая табличка, непосредственно палитра и инструмент для настройки степени схожести цветов. + +Цветовая табличка показывает текущий основной цвет в виде квадратика поверх другого такого же квадрата, представляющего цвет фона. При рисовании с использованием левой кнопки мыши используется основной цвет, при использовании правой — цвет фона (за исключением ластиков). Вы можете щёлкнуть на двунаправленной стрелке, чтобы поменять местами основной и фоновый цвета. + +Цветовая палитра отображает набор доступных цветов. Полупрозрачная пирамида представляет прозрачный цвет. Щелкните левой кнопкой мыши на любом цвете для выбора основного цвета либо используйте правую кнопку для установки цвета фона. Также вы можете перетаскивать мышью любой непрозрачный цвет в квадраты цветовой таблички. Для редактирования цвета в табличке или палитре дважды щелкните на нем мышью. Инструмент Выбор цвета позволяет выбрать любой цвет, уже имеющийся в изображении. + +Настройка схожести цвета позволяет более эффективно работать с изображениями и фотографиями, содержащими смешанные цвета (как и инструмент Волшебная палочка, присутствующий во многих других программах для работы с графикой). Настройка схожести цветов используется при работе с прозрачным выделением, а также с инструментами Заливка, Очистка цвета и Автообрезка. Дважды щелкните на инструменте настройки схожести цвета для выбора того, насколько похожими должны быть цвета, чтобы считаться идентичными. При использовании инструмента выделения в режиме прозрачности, любой цвет в области выделения, считающийся идентичным цвету фона, будет также считаться прозрачным. + + + + + + + + + +Левое изображение показывает образец. Справа изображены результаты использования заливки со значениями «Степени схожести цветов» в 5%, 15% и 30%. В этом примере, с использованием настройки схожести цветов Точное соответствие, заливка от точки (80, 100) заполнит только один пиксел, так как остальные пикселы схожи, но не полностью идентичны. С увеличением параметра схожести цветов больше пикселов будут считаться идентичными, и заливка распространится больше. + + + + + +Параметры просмотра + + +Описание параметров просмотра + +Наложение сетки при увеличении +Миниатюра + + + + +Наложение сетки при увеличении +Увеличьте масштаб для редактирования изображения с высокой точностью или уменьшите его, чтобы увидеть большую часть изображения. + + +С масштабом не кратным 100%, некоторые части изображения могут смещаться неравномерно (могут смещаться относительно изображения), когда пользователь работает с ним. Другие незначительные сбои прорисовки могут происходить при таком масштабе. + + +При масштабе в 400% или большем, который также является кратным 100%, вы можете использовать режим Показать сетку для точного редактирования каждого пиксела. + + + + + + + + + + + + + + + +Первая картинка показывает значок инструмента Текст, в то время как вторая показывает это же при увеличении в 600% и с наложенной сеткой. + + +Другой способ увеличения или уменьшения масштаба, когда вы не рисуете, — это прокручивание колёсика мыши, зажимая &Ctrl;. + + + + + +Миниатюра + + + + + + + +Если Режим увеличения миниатюр активен, то всё изображение отображается, масштабируется по мере необходимости, чтобы умещаться в окне для миниатюр (верхнее правое изображение). +В противном случае, миниатюра показывает как можно большую часть изображения, начиная с верхнего левого угла (правый нижний рисунок). + + + + + +Эффекты изображения + + +Описание эффектов +Автообрезка / Удалить внутреннюю границу +Баланс +Очистить +Рельеф +Вдавленный +Перевернуть (сверху вниз) +Инвертировать цвета +Уменьшить количество цветов +Преобразовать в оттенки серого +Сделать чёрно-белым (со смешиванием) +Отразить (слева направо) +Изменить размер / Масштабировать +Повернуть +Кадрировать +Исказить +Резкость +Больше эффектов +Примечания + + + +Автообрезка / Удалить внутреннюю границу + +Автоматически обрезает область, окаймляющую изображение или выделенный участок. Используйте этот инструмент, если основной элемент изображения не занимает всю область рисунка, и вы желаете удалить лишнее пустое пространство. Если в области, которую планируется обрезать, имеются смешанные цвета, то вам также потребуется использовать настройку схожести цветов. + + + + +Баланс + +Параметр доступен через диалоговое окно Больше эффектов. + + + + + + + + +Инструмент позволяет изменить яркость, контраст и гамму всего изображения или выделенной области. + + +Чтобы изменить значение гаммы (в пределах от 0.10 до 10.00), используйте поле ввода числа Гамма и кнопку Сбросить. + + + + +Очистить + +Заполняет всю область изображения цветом фона. + + +Дважды щёлкните мышью на значке инструмента Ластик, чтобы очистить всё изображение. + + + + + +Рельеф + +Параметр доступен через диалоговое окно Больше эффектов. + + + + + + + + +Чтобы применить эффект, нажмите кнопку Включить. При этом углы будут сделаны более чёткими, а изображение будет больше похоже на гравюру. + + + +Вдавленный + +Параметр доступен через диалоговое окно Больше эффектов. + + + + + + + + +Области, закрашенные выбранным цветом, будут перерисованы с заменой цвета на его градации. + + + +Перевернуть (сверху вниз) + +Переворачивает всё изображение или выделенную область относительно горизонтальной оси. + + + + +Инвертировать + +Параметр доступен через диалоговое окно Больше эффектов. + + + + + + + + +Красная, зелёная или синяя компоненты (несколько или все вместе) будут инвертированы (заменены на дополнения до максимального значения). Вы можете использовать этот эффект для преобразования фотографии в негатив или наоборот. Обычно это выглядит довольно забавно. + + +Чтобы инвертировать сразу все компоненты, используйте пункт Инвертировать цвета меню Изображение или Выделение. Пункт меню Выделение доступен, если вы используете один из инструментов выделения. Кроме того, вы можете использовать пункт из контекстного меню, вызванного нажатием правой кнопки мыши в области изображения. + + + + + +Отразить (слева направо) + +Отражает всё изображение или выделенную область относительно вертикальной оси. + + + + +Уменьшить количество цветов + +Параметр доступен через диалоговое окно Больше эффектов. + + + + + + + + +Уменьшить количество цветов, используемых во всём изображении или в выделенной области, со смешиванием или без него. + +При использовании смешивания результаты обычно получаются лучше, однако в некоторых случаях лучше его не использовать (для создания художественных эффектов). Например, если вы будете использовать Чёрно-белый вместо Чёрно-белый (со смешиванием), вы получите силуэт изображённого объекта. + +Другим важным отличием является то, что в то время как Чёрно-белый (со смешиванием) всегда будет преобразовывать всё изображение (или выделенную область) в чёрно-белое, Чёрно-белый сделает это только тогда, когда изображение или выделенная область содержит более двух цветов. + + +Чтобы быстро привести изображение к чёрно-белому со смешиванием, используйте пункт Преобразовать в чёрно-белый (со смешиванием) меню Изображение или Выделение. Пункт меню Выделение доступен, если вы используете один из инструментов выделения. Кроме того, вы можете использовать пункт из контекстного меню, вызванного нажатием правой кнопки мыши в области изображения. + + + +Изменение количества цветов не влияет на глубину цвета изображения. Глубину цвета можно изменить в диалоговом окне сохранения изображения. Однако, к сожалению, при уменьшении глубины цвета будет уменьшено и количество цветов. + + + + +Преобразовать в оттенки серого + +Преобразует цвета всего изображения или выделенной области в оттенки серого. + + + + +Преобразовать в чёрно-белый (со смешиванием) + +Преобразует цвета всего изображения или выделенной области в чёрный и белый. + + +Если вы не хотите применять смешивание, используйте диалоговое окно Уменьшить количество цветов. + + + + +Изменить размер/Масштабировать + + + + + + + + + +Размеры изображения будут увеличены, однако никакие фактические изменения не вносятся. При использовании команды Масштабировать выделение со сглаживанием результаты обычно получаются лучше, так как при этом соседние цвета смешиваются. + +Вы можете задавать новый размер в пикселах или в процентах от исходного размера. Если вы включите параметр Сохранять пропорции, то ширина и высота будут меняться в одинаковое количество раз. + + +Вы можете свободно трансформировать изображение, используя инструмент Изменить размер, или, используя Масштабировать выделение со сглаживанием, трансформировать выделенную область. + + + +Для выделенной области возможно использование только обычного масштабирования. А для текстовых областей возможно только изменение размера. См. примечания для получения дополнительной информации о работе с этими эффектами. + + + + +Повернуть + + + + + + + + + +Поворачивает изображение. Вы можете указать угол и направление поворота. + + +Можно выполнить вращение в обратную сторону. Для этого нужно задать отрицательное значение угла. + + + +См. примечания для информации о применении этого эффекта к выделенной области. + + + + +Кадрировать + +Обрезает все части изображения, находящиеся за границами выделенной области. + + +Этот эффект доступен только в том случае, если задана выделенная область. + + + + +Исказить + + + + + + + + + +Искажает всё изображение или выделенную область по горизонтали и/или вертикали. + + +См. примечания для информации о применении этого эффекта к выделенной области. + + + + +Резкость + +Параметр доступен через диалоговое окно Больше эффектов. + + + + + + + + +Используйте этот эффект, чтобы изменить резкость изображения. + + + + +Больше эффектов + +Диалоговое окно содержит инструменты Баланс, Рельеф, Вдавленный, Инвертировать, Уменьшить количество цветов и Резкость. + + + +Заметки + +Эффекты Изменение размера, Поворот и Искажение могут изменить размер рабочей области рисунка. Вы можете наблюдать новые размеры в диалоговом окне. + +Если вы применяете эти эффекты к изображению, изображение при необходимости будет увеличено или уменьшено. Тем не менее, если вы применяете их к выделенной области, размер изображения не сменится даже в случае, если выделенная область не будет помещаться в нем после применения фильтра. + + + + + + + + + +Левое изображение получилось из правого в результате поворота на 30 градусов по часовой стрелке. &kolourpaint; автоматически увеличила изображение. + + + + + + + + + +Левая выделенная область получилась из правой в результате поворота на 30 градусов. Размер изображения не был изменён, однако часть повёрнутой области не будет видна без изменения размера изображения. + + + + + +Авторские права и лицензия + +Carl Tucker +Возможно, эта документация недостаточно лаконична, возможно, она не закончена, но это честная документация. + + +&kolourpaint; +Все права защищены © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +&kolourpaint; — авторские права на использованные пиктограммы принадлежат : © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Документация и иллюстрации к документации Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Части программы воспроизведены с разрешения . + +Перевод на русский язык: Илья Бухман me@justerr.netПеревод на русский язык: Иван Кашуков dolphin210@yandex.ruОбновление русского перевода 2010: Александр Подольский apd2004@gmail.comОбновление русского перевода 2014: Алексей Баранов aleksei.ee@gmail.com &underFDL; Условия лицензии программы: + +Программа © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Все права защищены. + + +Разрешается повторное распространение и использование +как в виде исходного кода, так и в двоичной форме, +с изменениями или без, при соблюдении следующих условий: + +1. При повторном распространении исходного кода должны оставаться + указанное выше уведомление об авторском праве, этот список условий + и последующий отказ от гарантий. + +2. При повторном распространении двоичного кода указанное выше + уведомление об авторском праве, этот список условий и последующий + отказ от гарантий должны оставаться в документации и/или в других + материалах, поставляемых при распространении. + + +ЭТА ПРОГРАММА ПРЕДОСТАВЛЯЕТСЯ АВТОРОМ «КАК ЕСТЬ» БЕЗ КАКИХ-ЛИБО +ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, В ТОМ ЧИСЛЕ ПОДРАЗУМЕВАЕМЫХ +ГАРАНТИЙ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. +АВТОР НИ В КОЕМ СЛУЧАЕ НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, +КОСВЕННЫЕ, СЛУЧАЙНЫЕ, ФАКТИЧЕСКИЕ, ШТРАФНЫЕ ИЛИ ПОСЛЕДОВАВШИЕ +УБЫТКИ (ВКЛЮЧАЯ, СРЕДИ ПРОЧЕГО, ПРИОБРЕТЕНИЕ ЗАМЕНЯЮЩИХ ТОВАРОВ +ИЛИ УСЛУГ; УТРАТУ ЭКСПЛУАТАЦИОННЫХ КАЧЕСТВ, ДАННЫХ ИЛИ ДОХОДОВ; +ИЛИ ПЕРЕРЫВ В КОММЕРЧЕСКОЙ ДЕЯТЕЛЬНОСТИ), НЕЗАВИСИМО ОТ ОБРАЗА И +ПРИЧИНЫ ИХ ВОЗНИКНОВЕНИЯ, БУДЬ ТО В СИЛУ ДОГОВОРА, ПРЯМОЙ +ОТВЕТСТВЕННОСТИ ИЛИ ПРАВОНАРУШЕНИЯ (ВКЛЮЧАЯ ХАЛАТНОСТЬ ИЛИ +ИНОЕ), ВОЗНИКШИЕ ВСЛЕДСТВИЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО +ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ БЫЛ ИЗВЕЩЁН О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ. + + + +&documentation.index; +
                    + + diff --git a/po/ru/docs/kolourpaint/screenshot_acquiring.png b/po/ru/docs/kolourpaint/screenshot_acquiring.png new file mode 100644 index 0000000..d650ee5 Binary files /dev/null and b/po/ru/docs/kolourpaint/screenshot_acquiring.png differ diff --git a/po/ru/docs/kolourpaint/view_thumbnails.png b/po/ru/docs/kolourpaint/view_thumbnails.png new file mode 100644 index 0000000..b2c42ec Binary files /dev/null and b/po/ru/docs/kolourpaint/view_thumbnails.png differ diff --git a/po/ru/kolourpaint.po b/po/ru/kolourpaint.po new file mode 100644 index 0000000..f8772e9 --- /dev/null +++ b/po/ru/kolourpaint.po @@ -0,0 +1,3141 @@ +# translation of kolourpaint.po to Russian +# KDE3 - kdegraphics/kolourpaint.po Russian translation. +# Copyright (C) 2005, KDE Russian translation team. +# Nickolai Shaforostoff , 2004. +# Gregory Mokhin , 2004. +# Andrey Cherepanov , 2005. +# Andrey Cherepanov , 2009. +# Artem Sereda , 2009, 2010. +# Alexander Potashev , 2010, 2011, 2012, 2014, 2016, 2017, 2019. +# Yuri Efremov , 2012. +# Alexander Lakhin , 2013. +# Victor Ryzhykh , 2016. +# Alexander Podolskiy , 2010. +# Alexander Yavorsky , 2020, 2021. +# Olesya Gerasimenko , 2022. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-07-13 10:19+0300\n" +"Last-Translator: Olesya Gerasimenko \n" +"Language-Team: Basealt Translation Team\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 22.04.1\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Николай Шафоростов,Григорий Мохин,Андрей Черепанов" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "shafff@ukr.net,mok@kde.ru,skull@kde.ru" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Баланс цветов" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Смягчение" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Увеличить резкость" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Очистить" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Выделение: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Барельеф" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Матовая бумага" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Преобразовать в градации серого" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Тон, насыщенность, яркость" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Инвертировать цвета" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Инвертирование цветов" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Преобразовать в чёрно-белый (со смешиванием)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Преобразовать в чёрно-белый" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Преобразовать в 256 цветов (со смешиванием)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Преобразовать в 256 цветов" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Зернистость" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Отразить" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Отразить горизонтально и вертикально" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Отразить горизонтально" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Отразить вертикально" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Текст: Изменить размер врезки" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Масштабирование выделения" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Масштабирование со сглаживанием выделения" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Изменить размер" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Масштабировать" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Шкала размытия" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Повернуть" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Искривление" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Отменить: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "О&тменить действие" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Повторить: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Повторить отменённое действие" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Отменить: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Отменить действие" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Повторить: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Повторить отменённое действие" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 элемент" +msgstr[1] "%1 элемента" +msgstr[2] "%1 элементов" +msgstr[3] "%1 элемент" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Выбор цвета" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Заливка" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Применение эффектов к выделению" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Применение эффектов" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Эффект:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Уменьшить количество цветов" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Резкость" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Свойства документа" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Точек на &дюйм (dpi)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Не указано" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Горизонтально:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Вертикально:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                    Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                    The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                    If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                    If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                    Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                    " +msgstr "" +"

                    Точек на дюйм (dpi) определяет количество пикселов, которые " +"будут распечатаны на одном дюйме (2,54 см).

                    Чем больше значение dpi, " +"тем меньше размер напечатанного изображения.

                    При значении dpi Не " +"указано будет использовано значение dpi экрана.

                    Не все форматы " +"изображений поддерживают dpi. Если формат не поддерживает сохранение " +"dpi, эти параметры не будут сохранены.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Смещение" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                    The Offset is the relative position where this image should be " +"placed, compared to other images.

                    Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                    " +msgstr "" +"

                    Смещение — положение изображения относительно других.

                    " +"

                    Не все форматы изображений поддерживают смещение. Если формат не " +"поддерживает смещение, параметры смещения не будут сохранены.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Параметры" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Добавить" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Удалить" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "С&бросить" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                    Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                    However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                    Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                    " +msgstr "" +"

                    Параметры позволяют указать различную служебную информацию об " +"изображении. Это может быть комментарий, в котором вы можете написать любой " +"текст.

                    В параметрах может быть указана информация, которая " +"обрабатывается компьютером. В этом случае вы не должны изменять её.

                    Не " +"все форматы изображений поддерживают параметры. Если формат не " +"поддерживает параметры, они не будут сохранены.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Параметр" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Значение" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Необходимо указать название параметра для значения «%1» в строке %2." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Все названия параметров должны быть уникальны. Дублирование параметра «%1» в " +"строке %2 и %3." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Ошибка в параметрах" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Размер" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Оригинал:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 × %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Просмотр" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Обновить" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Изменение размера и масштабирование" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Обработать:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Всё изображение" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Выделение" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Текстовая врезка" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Операция" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                    • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                    • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                    • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                    " +msgstr "" +"
                    • Изменить размер: размер рисунка может быть увеличен " +"созданием новых областей справа и/или снизу (заполненных цветом фона) или " +"уменьшен справа и/или снизу.
                    • Масштабировать: рисунок может " +"быть пропорционально увеличен или уменьшен.
                    • Масштабировать со " +"сглаживанием: это почти то же самое, что и Масштабировать, однако " +"цвет соседних точек будет смешиваться для получения более однородного " +"рисунка.
                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Изменить размер" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Масштабировать" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Масштабировать со &сглаживанием" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Ширина:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Высота:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Новая:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Проценты:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Сохранить &отношение" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                    Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to resize the text box?

                    " +msgstr "" +"

                    Изменение размера текстовой врезки до %1×%2 может потребовать " +"значительное расходование памяти. Это может, в свою очередь, уменьшить общее " +"быстродействие системы и вызвать проблемы работы других приложений.

                    Вы " +"уверены, что хотите изменить размер текстовой врезки?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Изменение размера текстовой врезки" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Из&менить размер текстовой врезки" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                    Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to resize the image?

                    " +msgstr "" +"

                    Изменение размера рисунка до %1×%2 может потребовать значительное " +"расходование памяти. Это может, в свою очередь, уменьшить общее " +"быстродействие системы и вызвать проблемы работы других приложений.

                    Вы " +"уверены, что хотите изменить размер рисунка?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Изменение размера изображения" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "И&зменить размер" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                    Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to scale the image?

                    " +msgstr "" +"

                    Масштабирование рисунка до %1×%2 может потребовать значительное " +"расходование памяти. Это может, в свою очередь, уменьшить общее " +"быстродействие системы и вызвать проблемы работы других приложений.

                    Вы " +"уверены, что хотите масштабировать рисунок?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Масштабирование изображения" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Ма&сштабировать изображение" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                    Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to scale the selection?

                    " +msgstr "" +"

                    Масштабирование выделения до %1×%2 может потребовать значительное " +"расходование памяти. Это может, в свою очередь, уменьшить общее " +"быстродействие системы и вызвать проблемы работы других приложений.

                    Вы " +"уверены, что хотите масштабировать выделенный фрагмент?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Масштабирование выделения" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "&Масштабировать выделение" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                    Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the image?" +msgstr "" +"

                    Масштабирование рисунка со сглаживанием до %1×%2 может потребовать " +"значительное расходование памяти. Это может, в свою очередь, уменьшить общее " +"быстродействие системы и вызвать проблемы работы других приложений.

                    Вы " +"уверены, что хотите масштабировать рисунок со сглаживанием?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Масштабирование изображения со сглаживанием" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Масштабировать изображение со &сглаживанием" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                    Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the selection?" +"

                    " +msgstr "" +"

                    Масштабирование выделения со сглаживанием до %1×%2 может потребовать " +"значительное расходование памяти. Это может, в свою очередь, уменьшить общее " +"быстродействие системы и вызвать проблемы работы других приложений.

                    Вы " +"уверены, что хотите масштабировать выделенный фрагмент со сглаживанием?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Масштабирование выделения со сглаживанием" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Масштабировать &выделение со сглаживанием" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Поворот выделения" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Поворот изображения" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "После вращения:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Направление" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Против часовой стрелки" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "П&о часовой стрелке" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Угол" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 г&радусов" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 гр&адусов" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &градусов" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Д&ругой:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "градусов" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                    Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to rotate the selection?

                    " +msgstr "" +"

                    Поворот выделения до %1×%2 может потребовать значительное " +"расходование памяти. Это может, в свою очередь, уменьшить общее " +"быстродействие системы и вызвать проблемы работы других приложений.

                    Вы " +"уверены, что хотите повернуть выделенный фрагмент?

                    " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Поворот выделения" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "По&вернуть выделение?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                    Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to rotate the image?

                    " +msgstr "" +"

                    Поворот рисунка до размера %1×%2 может потребовать значительное " +"расходование памяти. Это может, в свою очередь, уменьшить общее " +"быстродействие системы и вызвать проблемы работы других приложений.

                    Вы " +"уверены, что хотите повернуть рисунок?

                    " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Поворот изображения?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Повернуть из&ображение" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Искривление выделения" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Искривление изображения" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "После искривления:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Горизонтально:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Вертикально:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                    Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to skew the selection?

                    " +msgstr "" +"

                    Искривление выделенной части изображения в %1×%2 потребует некоторое " +"количество оперативной памяти. Это может повлиять на скорость ответа системы." +"

                    Продолжить?

                    " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Искривление выделения" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "&Искривить выделение" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                    Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to skew the image?

                    " +msgstr "" +"

                    Искривление изображения в %1×%2 потребует некоторое количество " +"оперативной памяти. Это может повлиять на скорость ответа системы.

                    Продолжить?

                    " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Искривление изображения" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&Искривить изображение" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Схожие цвета" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&Расстояние в кубе цветов RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Точное соответствие" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Что такое схожие цвета?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Предварительный просмотр перед сохранением" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 байт (~%2%)" +msgstr[1] "%1 байта (~%2%)" +msgstr[2] "%1 байтов (~%2%)" +msgstr[3] "%1 байт (~%2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Невозможно открыть «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Невозможно открыть «%1»: неизвестный тип изображения или файл повреждён." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Невозможно сохранить файл: недостаточно данных." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Адрес: %1\n" +"Тип MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<нет>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Внутренняя ошибка" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                    The %1 format may not be able to preserve all of the image's " +"color information.

                    Are you sure you want to save in this format?

                    " +msgstr "" +"

                    Формат %1 не сохраняет всю информацию о реальных цветах " +"изображения.

                    Вы хотите сохранить в этом формате?

                    " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Формат с потерей качества" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                    Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                    Are " +"you sure you want to save at this color depth?

                    " +msgstr "" +"

                    Сохранение изображения с глубиной цвета %1 битов может вызвать потерю " +"качества. Кроме того, будет удалена вся информация о прозрачности.

                    Сохранить изображение с меньшим количеством цветов?

                    " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Низкая глубина цвета" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Невозможно сохранить изображение: ошибка создания временного файла." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Невозможно сохранить файл с именем «%1»: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Ошибка сохранения изображения" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Невозможно сохранить файл: ошибка передачи на сервер." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Удалить внутреннюю &границу" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Удалить внутреннюю границу" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Авто&кадрирование" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Автокадрирование" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"Невозможно удалить внутреннюю границу выделения, поскольку она не обозначена." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Невозможно удалить внутреннюю границу" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"Невозможно произвести автокадрирование изображения, поскольку граница не " +"обозначена." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Невозможно выполнить автокадрирование" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Кадрировать" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Создание выделения" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Графический редактор от KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Основатель проекта" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Исследователь" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Сопровождающий, поддержка сканирования, поддержка альфа-канала" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Пиктограммы" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Поддержка метода ввода" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Эффекты" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Перенос в KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Перенос на KF5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Спасибо многим другим людям, благодаря которым появилась эта программа." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Открываемые файлы изображений (необязательный параметр)." + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" +"Вывести список всех типов MIME изображений, которые может читать программа" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Вид" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Изображение" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "П&алитра" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Основная панель инструментов" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Панель инструментов работы с текстом" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Контекстное меню выделения" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Правка" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Уменьшенная копия" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Перетащите границу для изменения размера." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Изменение размера: используйте все кнопки мыши." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Изменение размера: нажатие правой кнопки мыши отменяет действие." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Текст" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Невозможно открыть палитру «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Невозможно открыть палитру «%1»: неизвестный тип изображения или файл " +"повреждён." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Невозможно открыть палитру «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Невозможно сохранить палитру с именем «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Без имени" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Палитра KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Палитра KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Открыть..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Перезагруз&ить" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Сохранить" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Сохранить &как..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Добавить ряд в палитру" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Удалить ряд из палитры" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Цвета" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Палитра «%1» была изменена.\n" +"Хотите её сохранить?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Палитра KDE «%1» была изменена.\n" +"Хотите сохранить её в файле?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Палитра по умолчанию была изменена.\n" +"Хотите сохранить её в файле?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Открытие цветовой палитры" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Палитра «%1» была изменена.\n" +"Её перезагрузка приведёт к потере всех изменений с последнего сохранения.\n" +"Продолжить?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "О&бновить" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Палитра KDE «%1» была изменена.\n" +"Её перезагрузка приведёт к потере всех изменений с последнего сохранения.\n" +"Продолжить?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Палитра по умолчанию была изменена.\n" +"Её перезагрузка приведёт к потере всех изменений с последнего сохранения.\n" +"Продолжить?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Сохранить палитру как" + +# BUGME: "paste in new window" -> "paste in new image"? Note that a new image is created. --aspotashev +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Вставить в &новом окне" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Удалить &выделенное" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "Копировать в &файл..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Вставить из ф&айла..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Текст: Создать врезку" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Текст: Вставить" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"Невозможно вставить содержимое буфера обмена, поскольку оно имеет " +"неподдерживаемый формат." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Невозможно вставить" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Текст: Удалить врезку" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Удаление выделения" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Текст: Закончить" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Отмена выделения" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Копирование в файл" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Вставка из файла" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Экспорт..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Сканировать..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Сделать снимок экрана" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Свойства" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Перезагруз&ить" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Все поддерживаемые файлы (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Открытие изображения" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Не удалось открыть диалог сканирования." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Не удалось отсканировать" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Задержка снимка" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " секунда" +msgstr[1] " секунды" +msgstr[2] " секунд" +msgstr[3] " секунда" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Без задержки" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Скрыть главное окно" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Свойства документа" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Сохранение изображения как" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Экспорт" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Документ «%1» был изменён.\n" +"Его перезагрузка приведёт к потере всех изменений с последнего сохранения.\n" +"Продолжить?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Документ «%1» был изменён.\n" +"Его перезагрузка приведёт к потере всех изменений.\n" +"Продолжить?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Печать изображения" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Изображение возможно будет отправить только после его сохранения на диске.\n" +"Сохранить изображение?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Документ «%1» был изменён.\n" +"Хотите его сохранить?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Изме&нить размер..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Кадр&ировать" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Перевернуть (сверху вниз)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Отразить (слева направо)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "Пов&ернуть на угол...." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Повернуть в&лево" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Повернуть в&право" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Искривление..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Преобразовать в &чёрно-белое" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Преобразовать в &градации серого" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Инвертировать цвета" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Очистить" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Размазать для сокрытия информации" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Применить &эффекты..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Изображение" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Выд&еление" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Показать &путь" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Использовать сглаживание" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1×%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Семья шрифта" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Размер шрифта" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Полужирный" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Курсив" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Подчёркнутый" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Зачёркнутый" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Предыдущий параметр инструмента (группа 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Следующий параметр инструмента (группа 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Предыдущий параметр инструмента (группа 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Следующий параметр инструмента (группа 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Непрозрачное рисование" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Рисовать схожими цветами..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Инструменты" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Показать &сетку" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Показывать &уменьшенную копию" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Миниатюрная уменьшенная копия" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Показывать &рамку у уменьшенной копии" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "Мас&штаб" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Сканирование изображения" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Не удалось открыть выбранный сканер." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Кисть" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Рисовать кистями различных форм и размеров" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" +"Щёлкните для рисования точек или перетащите для рисования прямых линий." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Очистка цвета" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Закрасить точки выбранного цвета цветом фона" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Щёлкните или перетащите для стирания точек текущего выбранного цвета." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Ластик" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Стереть ошибки рисования" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Щёлкните или перетащите для стирания." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Используйте все кнопки мыши." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Перо" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Нарисовать точку или линии от руки" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Распылитель" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Граффити" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Щёлкните или перенесите для граффити." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Нажатие правой кнопки мыши отменяет действие." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Нажатие левой кнопки мыши отменяет действие." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Выбрать цвет из рисунка" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Щёлкните чтобы выбрать цвет" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Заполнить цветом области изображения" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Щёлкните для применения заливки" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Масштаб" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Увеличение и уменьшение масштаба изображения" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Нажмите для увеличения и уменьшения масштаба изображения или перетащите " +"нужный масштаб на изображение." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Кривая" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Нарисовать кривую" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Щёлкните и перетащите для указания начальной и конечной точек." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Перенесите, зажав левую кнопку мыши, для установки первой контрольной точки, " +"нажмите правую чтобы закончить рисование." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Перенесите, зажав правую кнопку мыши, для установки первой контрольной " +"точки, нажмите левую чтобы закончить рисование." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Перенесите, зажав левую кнопку мыши, для установки последней контрольной " +"точки, нажмите правую чтобы закончить рисование." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Перенесите, зажав правую кнопку мыши, для установки последней контрольной " +"точки, нажмите левую чтобы закончить рисование." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Линия" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Нарисовать линию" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Перенесите чтобы начать рисование." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Многоугольник" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Нарисовать многоугольник" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Перенесите чтобы нарисовать первую линию" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Перенесите, зажав левую кнопку мыши, для рисования другой линии или нажмите " +"правую для окончания." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Перенесите, зажав правую кнопку мыши, для рисования другой линии или нажмите " +"левую для окончания." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Соединённые линии" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Нарисовать соединённые линии" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Эллипс" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Рисовать эллипсы и окружности" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Прямоугольник" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Нарисовать прямоугольник или квадрат" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Округлённый прямоугольник" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Нарисовать прямоугольник или квадрат с закруглёнными вершинами" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Растяните при нажатой левой кнопке мыши для выделения области." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Растяните при нажатой левой кнопке мыши для перемещения выделения." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" +"Растяните при нажатой левой кнопке мыши для изменения масштаба выделения." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Выделение непрозрачное" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Выделение прозрачное" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Выделение с цветом прозрачности" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Выделение с прозрачными схожими цветами" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Эллиптическое выделение" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Сделать эллиптическое или круговое выделение." + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Свободное выделение" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Выделить область произвольной формы" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Прямоугольное выделение" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Сделать прямоугольное выделение" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Перемещение выделения" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Пятно" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Написать текст" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Текст: Удалить символ слева" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Текст: Удалить" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Текст: Новая строка" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Текст: Написать" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Растяните при нажатой левой кнопке мыши для создания текстовой врезки." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" +"Растяните при нажатой левой кнопке мыши для перемещения текстовой врезки." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Текст: Переместить врезку" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" +"Растяните при нажатой левой кнопке мыши для изменения размера текстовой " +"врезки." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Щелчок левой кнопкой мыши для изменения позиции курсора." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Текст: Непрозрачный фон" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Текст: Прозрачный фон" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Текст: Поменять цвета" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Текст: Цвет" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Текст: Фон" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Текст: Шрифт" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Текст: Размер шрифта" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Текст: Полужирный" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Текст: Курсив" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Текст: Подчёркнутый" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Текст: Зачёркнутый" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Уменьшенная копия" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% — уменьшенная копия" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    To configure it, click on the cube.

                    " +msgstr "" +"

                    Значение схожести цветов определяет, насколько схожими " +"(или близкими) должны быть цвета различных пикселов, чтобы они считались " +"одинаковыми в контексте определённых операций.

                    Любое значение, " +"отличное от Точное соответствие, позволяет более эффективно " +"обрабатывать нечёткие изображения и фотографии, примерно так, как это делает " +"инструмент «Волшебная палочка» в других граф. редакторах.

                    Это " +"применимо к операциям:

                    • Выделение: В прозрачном режиме любой цвет в выделении, схожий с цветом фона, становится " +"прозрачным.
                    • Заливка цветом: Чем больше значение схожести, тем " +"больше пикселов будет закрашено в областях со схожими (но не " +"одинаковыми) цветами.
                    • Очистка цвета: Все пикселы, цвет " +"которых схож с цветом переднего плана, будут перекрашены в цвет фона." +"
                    • Автокадрирование и Удаление внутренней границы: Для " +"границ с пикселами схожих (но не одинаковых) цветов, чем больше " +"значение схожести, тем глубже будет вырезана граница.

                    Чем больше " +"значение этого параметра, тем больший диапазон цветов будет считаться " +"достаточно схожим для перечисленных операций. Таким образом, если эти " +"операции не затрагивают пикселы, которые вы считаете похожими, его нужно " +"увеличить.

                    Однако если они, наоборот, изменяют пикселы, цвета которых " +"вы считаете разными (например, Заливка цветом закрашивает лишнее), " +"это значение следует уменьшить.

                    Чтобы настроить его, щёлкните куб." + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    " +msgstr "" +"

                    Значение схожести цветов определяет, насколько схожими " +"(или близкими) должны быть цвета различных пикселов, чтобы они считались " +"одинаковыми в контексте определённых операций.

                    Любое значение, " +"отличное от Точное соответствие, позволяет более эффективно " +"обрабатывать нечёткие изображения и фотографии, примерно так, как это делает " +"инструмент «Волшебная палочка» в других граф. редакторах.

                    Это " +"применимо к операциям:

                    • Выделение: В прозрачном режиме любой цвет в выделении, схожий с цветом фона, становится " +"прозрачным.
                    • Заливка цветом: Чем больше значение схожести, тем " +"больше пикселов будет закрашено в областях со схожими (но не " +"одинаковыми) цветами.
                    • Очистка цвета: Все пикселы, цвет " +"которых схож с цветом переднего плана, будут перекрашены в цвет фона." +"
                    • Автокадрирование и Удаление внутренней границы: Для " +"границ с пикселами схожих (но не одинаковых) цветов, чем больше " +"значение схожести, тем глубже будет вырезана граница.

                    Чем больше " +"значение этого параметра, тем больший диапазон цветов будет считаться " +"достаточно схожим для перечисленных операций. Таким образом, если эти " +"операции не затрагивают пикселы, которые вы считаете похожими, его нужно " +"увеличить.

                    Однако если они, наоборот, изменяют пикселы, цвета которых " +"вы считаете разными (например, Заливка цветом закрашивает лишнее), " +"это значение следует уменьшить.

                    " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                    Color Similarity: %1%

                    Click to configure.

                    " +msgstr "" +"

                    Схожесть цветов: %1%

                    Нажмите чтобы настроить.

                    " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                    Color Similarity: Exact Match

                    Click to configure." +msgstr "" +"

                    Схожесть цветов: точное соответствие

                    Нажмите чтобы " +"настроить.

                    " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Яркость:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Сбросить" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Контрас&тность:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Гамма:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Сб&росить" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Каналы:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Все" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Красный" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Зелёный" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Синий" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Сбросить &все значения" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Настройка" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Количество:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Включить" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Цвета" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Тон:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Насыщенность:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Яркость:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Красный" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Зелёный" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Синий" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Все" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Каналы" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Чёрно-белый" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Чё&рно-белый (со смешиванием)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &цветов" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 ц&ветов (со смешиванием)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24 &бита" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Уменьшить до" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Зернистость" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                    To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                    To change the color of a color cell itself, double-click on it.

                    You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                    " +msgstr "" +"

                    Для выбора цвета рисования щёлкните левой кнопкой мыши на нужном " +"цвете в палитре. Чтобы выбрать цвет фона, щёлкните по цвет в палитре правой " +"кнопкой мыши.

                    Для смены цвета в ячейке палитры, дважды щёлкните по " +"ячейке.

                    Вы можете перетащить цвет из ячейки на текущий цвет фона и " +"наоборот. Чтобы перетаскивать цвета на цвет фона (и наоборот), удерживайте " +"нажатой клавишу Ctrl.

                    " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Преобразовать &в:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Качество:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Просмотр" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Чёрно-белый" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Чёрно-белый (со смешиванием)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 цветов" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 цветов (со смешиванием)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24 бита" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "&Расположение изображения" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "По &центру страницы" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&В верхнем левом углу" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Прозрачное изображение" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Палитра KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Цвета: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Цвета: %1 [изменена]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Окружность" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Квадрат" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Наклонная черта" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Обратная черта" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1×%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Без заливки" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Заполнить цветом фона" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Заполнить цветом переднего плана" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Непрозрачное изображение" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Документ «%1» уже существует.\n" +#~ "Заменить его?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Палитра «%1» уже существует.\n" +#~ "Заменить её?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Изменение масштаба на значение, не кратное 100%, может привести к " +#~ "неточности редактирования и проблемам при показе.\n" +#~ "Вы хотите установить масштаб в %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Установить масштаб в %1%" + +#~ msgid "None" +#~ msgstr "Отсутствует" + +#~ msgid "" +#~ "

                    Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                    Are you sure want to resize the image?

                    " +#~ msgstr "" +#~ "

                    Изменение размера рисунка до %1x%2 может потребовать значительное " +#~ "расходование памяти. Это может, в свою очередь, уменьшить общее " +#~ "быстродействие системы и вызвать проблемы работы других приложений.

                    Вы уверены, что хотите изменить размер рисунка?

                    " + +#~ msgid "Overwrite" +#~ msgstr "Заменить" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Невозможно открыть «%1»: неизвестный тип MIME." + +#~ msgid "Save Preview" +#~ msgstr "Сохранить просмотр" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "За технической поддержкой обратитесь на сайт программы." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Подключаемого модуля с диалогом сканирования не нашлось.\n" +#~ "Обычно это означает, что в системе не установлен пакет, реализующий " +#~ "ksaneplugin." + +#~ msgid "No Scanning Support" +#~ msgstr "Нет поддержки сканирования" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Поддержка сканирования не установлена." + +#~ msgid "" +#~ "

                    KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

                    This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

                    " +#~ msgstr "" +#~ "

                    Невозможно вставить содержимое буфера обмена.

                    Обычно это " +#~ "случается если данные в буфер обмена скопированы не полностью.

                    " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "&Снимки экрана" + +#~ msgid "" +#~ "

                    To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

                    You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

                    Alternatively, you may try the application KSnapshot.

                    " +#~ msgstr "" +#~ "

                    Для того, чтобы получить снимок экрана, нажмите %1. Снимок " +#~ "экрана будет помещён в буфер обмена и вы можете вставить его в " +#~ "KolourPaint.

                    Вы можете настроить комбинацию клавиш для получения " +#~ "снимка экрана в Параметрах системы KDE Привязка клавиш.

                    Альтернативно для получения " +#~ "снимков экрана вы можете использовать приложение KSnapshot.

                    " + +#~ msgid "" +#~ "

                    You do not appear to be running KDE.

                    Once you have loaded KDE:" +#~ "

                    To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

                    Alternatively, you may try the " +#~ "application KSnapshot.

                    " +#~ msgstr "" +#~ "

                    Среда KDE не запущена.

                    После того, как вы запустите KDE:" +#~ "

                    чтобы получить снимок экрана, нажмите %1. Снимок " +#~ "экрана будет помещён в буфер обмена и вы можете вставить его в " +#~ "KolourPaint.

                    Альтернативно для получения снимков " +#~ "экрана вы можете использовать приложение KSnapshot.

                    " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Поместить по &центру рабочего стола" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "По&местить на рабочий стол черепицей" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Вы должны сохранить изображение локально перед установкой его на рабочий " +#~ "стол.\n" +#~ "Сделать это?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Вы должны сохранить изображение перед установкой его на рабочий стол.\n" +#~ "Сделать это?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Невозможно изменить параметры обоев рабочего стола." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Отразить выделение" + +#~ msgid "Flip Image" +#~ msgstr "Отразить изображение" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&По вертикали (сверху вниз)" + +#~ msgid "&Horizontal" +#~ msgstr "&По горизонтали" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Потеря цветов и полупрозрачности" + +#~ msgid "Loss of Color Information" +#~ msgstr "Потеря цветов" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Потеря полупрозрачности" + +#~ msgid "" +#~ "

                    KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

                    To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

                    " +#~ msgstr "" +#~ "

                    KolourPaint не поддерживает глубину цвета экрана %1bpp. Программа " +#~ "запуститься, но может работать некорректно.

                    Для правильной работы " +#~ "программы измените глубину экрана на 24 бита и перезапустите KolourPaint." +#~ "

                    " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Режим экрана не поддерживается" + +#~ msgid "" +#~ "

                    This effect does not support the current screen depth of %1bpp.

                    To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

                    " +#~ msgstr "" +#~ "

                    Этот эффект не поддерживается при глубине цвета экрана %1bpp.

                    Измените глубину экрана на 24 бита и перезапустите KolourPaint.

                    " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Невозможно сканировать: не хватает графической памяти." + +#~ msgid "Cannot Scan" +#~ msgstr "Невозможно сканировать" + +#~ msgid "&Flip..." +#~ msgstr "&Отразить..." + +#~ msgid "" +#~ "

                    The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                    If you save this image, any color loss will " +#~ "become permanent.

                    To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


                    It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

                    If you save " +#~ "this image, this loss of translucency will become permanent.

                    " +#~ msgstr "" +#~ "

                    Вставляемое изображение может иметь больше цветов, чем " +#~ "поддерживает текущий режим экрана. При показе некоторые цвета могут " +#~ "измениться.

                    Если вы сохраните изображение, не показываемые " +#~ "цвета не будут сохранены.

                    Чтобы избежать этого, попробуйте " +#~ "увеличить глубину цвета экрана до %1 битов и перезапустить KolourPaint.


                    В изображении также содержится полупрозрачность, которая не " +#~ "поддерживается полностью. Данные полупрозрачности будут округлены до 1-" +#~ "битной прозрачности.

                    Если вы сохраните изображение, сведения о " +#~ "полупрозрачности также будут утеряны.

                    " + +#~ msgid "" +#~ "

                    The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                    If you save this image, any color loss will " +#~ "become permanent.

                    To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

                    " +#~ msgstr "" +#~ "

                    Вставляемое изображение может иметь больше цветов, чем " +#~ "поддерживает текущий режим экрана. Чтобы соответствовать режиму, " +#~ "некоторые цвета будут изменены.

                    Если вы сохраните изображение, " +#~ "не показываемые цвета не будут сохранены.

                    Чтобы сохранить " +#~ "качество рисунка, попробуйте увеличить глубину цвета экрана как минимум " +#~ "до %1 битов и перезапустите KolourPaint.

                    " + +#~ msgid "" +#~ "

                    The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                    If you save this image, this loss of " +#~ "translucency will become permanent.

                    " +#~ msgstr "" +#~ "

                    Во вставленном изображении содержится полупрозрачность, которая не " +#~ "поддерживается полностью. Данные полупрозрачности будут округлены до 1-" +#~ "битной прозрачности.

                    Если вы сохраните изображение, сведения о " +#~ "полупрозрачности также будут утеряны.

                    " + +#~ msgid "

                    There is nothing in the clipboard to paste.

                    " +#~ msgstr "

                    Нет изображения в буфере обмена.

                    " + +#~ msgid "" +#~ "

                    The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                    If you save this image, any color loss will become " +#~ "permanent.

                    To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


                    It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

                    If you save this " +#~ "image, this loss of translucency will become permanent.

                    " +#~ msgstr "" +#~ "

                    Изображение «%1» может иметь больше цветов, чем поддерживает " +#~ "текущий режим экрана. При показе некоторые цвета могут измениться.

                    " +#~ "

                    Если вы сохраните изображение, не показываемые цвета не будут " +#~ "сохранены.

                    Чтобы избежать этого, попробуйте увеличить глубину " +#~ "цвета экрана до %2 битов и перезапустить KolourPaint.


                    В " +#~ "изображении также содержится полупрозрачность, которая не поддерживается " +#~ "полностью. Данные полупрозрачности будут округлены до 1-битной " +#~ "прозрачности.

                    Если вы сохраните изображение, сведения о " +#~ "полупрозрачности также будут утеряны.

                    " + +#~ msgid "" +#~ "

                    The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                    If you save this image, any color loss will become " +#~ "permanent.

                    To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

                    " +#~ msgstr "" +#~ "

                    Изображение «%1» может иметь больше цветов, чем поддерживает " +#~ "текущий режим экрана. При показе некоторые цвета могут измениться.

                    " +#~ "

                    Если вы сохраните изображение, не показываемые цвета не будут " +#~ "сохранены.

                    Чтобы избежать этого, попробуйте увеличить глубину " +#~ "цвета экрана до %2 битов и перезапустить KolourPaint.

                    " + +#~ msgid "" +#~ "

                    The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                    If you save this image, this loss of " +#~ "translucency will become permanent.

                    " +#~ msgstr "" +#~ "

                    В изображении «%1» содержится полупрозрачность, которая не " +#~ "поддерживается полностью. Данные полупрозрачности будут округлены до 1-" +#~ "битной прозрачности.

                    Если вы сохраните изображение, сведения о " +#~ "полупрозрачности также будут утеряны.

                    " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Невозможно открыть «%1»: не хватает графической памяти." + +#~ msgid "Scanning Support" +#~ msgstr "Поддержка сканирования" + +#~ msgid "" +#~ "_: NAME OF TRANSLATORS\n" +#~ "Your names" +#~ msgstr "Николай Шафоростов" + +#~ msgid "" +#~ "_: EMAIL OF TRANSLATORS\n" +#~ "Your emails" +#~ msgstr "shafff@ukr.net" + +#~ msgid "" +#~ "_n: %n more item\n" +#~ "%n more items" +#~ msgstr "" +#~ "%n элемент\n" +#~ "%n элемента\n" +#~ "%n элементов" + +#~ msgid "%1 bytes" +#~ msgstr "%1 байт" + +#~ msgid "%1 bytes (%2%)" +#~ msgstr "%1 байт (%2%)" + +#~ msgid "%1 B" +#~ msgstr "%1 B" + +#~ msgid "%1 B (%2%)" +#~ msgstr "%1 B (%2%)" + +#~ msgid "%1 B (approx. %2%)" +#~ msgstr "%1 б (~%2%)" + +#~ msgid "%1B" +#~ msgstr "%1б" + +#~ msgid "%1B (approx. %2%)" +#~ msgstr "%1б (~%2%)" + +#~ msgid "Hide &Path" +#~ msgstr "Скрыть &путь" + +#~ msgid "You have to restart KolourPaint for these changes to take effect." +#~ msgstr "Для вступления изменений в силу, перезапустите KolourPaint." + +#~ msgid "Toolbar Settings Changed" +#~ msgstr "Настройки панели инструментов изменены" + +#~ msgid "Hide &Grid" +#~ msgstr "Скрыть &сетку" + +#~ msgid "Hide T&humbnail" +#~ msgstr "Скрыть &уменьшенную копию" + +#~ msgid "" +#~ "_: ()\n" +#~ "%1 (%2)" +#~ msgstr "%1 (%2)" + +#~ msgid "Low Screen Depth" +#~ msgstr "Низкая глубина цвета экрана" + +#~ msgid "Image Contains Translucency" +#~ msgstr "Изображение содержит полупрозрачность" + +#~ msgid "Custom Pen or Brush" +#~ msgstr "Другое перо или кисть" + +#~ msgid "Selection: Transparency" +#~ msgstr "Выделение: Прозрачность" + +#~ msgid "" +#~ "

                    Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

                    If you set it to something " +#~ "other than Exact, you can work more effectively with dithered " +#~ "images and photos.

                    This feature applies to transparent selections, " +#~ "as well as the Flood Fill, Color Eraser and Autocrop tools.

                    To " +#~ "configure it, double click on the cube.

                    " +#~ msgstr "" +#~ "

                    Схожесть цвета показывает, насколько близко расположены " +#~ "цвета на кубе цветов RGB, чтобы считаться похожими.

                    Если вы выбрали " +#~ "любой вариант кроме Точно соответствует, вы можете успешно " +#~ "работать со сложными рисунками и фотографиями.

                    Этот инструмент " +#~ "может применяться при работе с прозрачными выделениями, заливкой, " +#~ "ластиком и автообрезкой.

                    На настройки цвета, дважды щёлкните на " +#~ "кубе.

                    " + +#~ msgid "" +#~ "

                    Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

                    If you set it to something " +#~ "other than Exact, you can work more effectively with dithered " +#~ "images and photos.

                    This feature applies to transparent selections, " +#~ "as well as the Flood Fill, Color Eraser and Autocrop tools.

                    " +#~ msgstr "" +#~ "

                    Схожесть цвета показывает, насколько близко расположены " +#~ "цвета на кубе цветов RGB, чтобы считаться похожими.

                    Если вы выбрали " +#~ "любой вариант кроме Точно соответствует, вы можете успешно " +#~ "работать со сложными рисунками и фотографиями.

                    Этот инструмент " +#~ "может применяться при работе с прозрачными выделениями, заливкой, " +#~ "ластиком и автообрезкой.

                    " + +#~ msgid "Color similarity: %1%" +#~ msgstr "Схожесть цвета: %1%" + +#~ msgid "Color similarity: Exact" +#~ msgstr "Схожесть цвета: Точная" diff --git a/po/se/kolourpaint.po b/po/se/kolourpaint.po new file mode 100644 index 0000000..57b62c5 --- /dev/null +++ b/po/se/kolourpaint.po @@ -0,0 +1,2580 @@ +# Translation of kolourpaint to Northern Sami +# +# Børre Gaup , 2004, 2005, 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2007-03-06 22:54+0100\n" +"Last-Translator: Børre Gaup \n" +"Language-Team: Northern Sami \n" +"Language: se\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Environment: kde\n" +"X-Accelerator-Marker: &\n" +"X-Text-Markup: kde4\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Dássedeaddu" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Basttálmuhte" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Merken: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Buncagovva" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Dulbe" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Jorgal" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Jorgal" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Jorgal láskut ja ceaggut" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Jorgal lásku" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Jorgal ceaggu" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Merken: Skálere" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Rievdat sturrodaga" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skále" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Jorat" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Bonja" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Gađa: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Daga ođđasit: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "" +msgstr[1] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Ivdneválljejeaddji" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Deavdde" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effeakta:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                    Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                    The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                    If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                    If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                    Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                    " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                    The Offset is the relative position where this image should be " +"placed, compared to other images.

                    Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                    " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Máhcat" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                    Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                    However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                    Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                    " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimenšuvnnat" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Álgovuolggálaš:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Ovdačájeheapmi" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Doaimma dása:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Olles govvii" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Merken" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Teakstaboksa" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Doaibma" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                    • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                    • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                    • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Rievdat sturrodaga" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skále" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Govdodat:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Allodat:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Ođđa:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Proseanta:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "&Gorolaččat" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                    Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to resize the text box?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "R&ievdat teakstabovssa sturrodaga" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                    Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to resize the image?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Ri&evdat gova" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                    Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to scale the image?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "S&kále gova" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                    Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to scale the selection?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Ská&le merkema" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                    Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                    Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the selection?" +"

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Guđe guvllut" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Viŋkil" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &gráda" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 g&ráda" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 grá&da" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "I&ešdefinerejuvvon:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "gráda" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                    Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to rotate the selection?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Jo&rat merkema" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                    Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to rotate the image?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Jorat go&va" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Lásku:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Ceaggu:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                    Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to skew the selection?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Bo&nja merkema" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                    Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to skew the image?

                    " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Bon&ja gova" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "" +msgstr[1] "" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Ii sáhttán «%1» rahpat." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Ii sáhttán «%1» rahpat – doarjjakeahttes govvaformáhtta.\n" +"Fiila dáidá leat billešuvvan." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Ii sáhttán gova vurket – menddo unnán diehtu." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mime-šládja: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                    The %1 format may not be able to preserve all of the image's " +"color information.

                    Are you sure you want to save in this format?

                    " +msgstr "" +"

                    %1-formáhtta ii dáidde seailut visot gova ivdnedieđuid.

                    Háliidatgo duođas vurket dán formáhttii?

                    " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                    Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                    Are " +"you sure you want to save at this color depth?

                    " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Ii sáhttán gova vurket – ii sáhte gaskaboddosaš fiilla ráhkadit." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Ii sáhttán gova vurket – ii sáhte sáddet dan." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Váldde eret &siskkildas ravdda" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Váldde eret siskkildas ravdda" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint ii sáhte merkema siskkildas ravdda váldit eret go ii gávdnan dan." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Geavat govvan" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Merken: Ráhkat" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Váldodetektiiva" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Govažat" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Govva" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Teakstareaidoholga" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Rievdat gova: Luoitte buot sáhpánboaluid." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Rievdat gova: Olgešcoahkkal vai gaskkalduhttit." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Teaksta" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Liibme &ođđa lásii" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Sihko &merkejuvvon" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "&Máŋge fiilii …" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "&Liibme fiillas …" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Teaksta: Ráhkat bovssa" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Teaksta: Liibme" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Ii sáhte liibmet" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Teaksta: Sihko bovssa" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Merken: Sihko" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Teaksta: Gearggat" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Merken: Váldde merkema eret" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "O&lggosfievrrit …" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Viečča ođđasit" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokumeanta «%1» lea rievdaduvvon.\n" +"Jus ođđasit vieččat dan sisa de du rievdadusat mannet duššái.\n" +"Háliidatgo duođaid dan dahkat?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokumeanta «%1» lea rievdaduvvon.\n" +"Jus vieččat dan sisa rievdadusat mannet duššái.\n" +"Háliidatgo duođaid dan dahkat?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Fertet vurket gova ovdalgo sáddet dan.\n" +"Háliidatgo vurket dan?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokumeanta «%1» lea rievdaduvvon.\n" +"Háliidatgo vurket dan?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "R&ievdda sturrodaga / Skálere …" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Geavat &govvan (čuohpa)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Jorat …" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Bonja …" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Sálke" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Eanet effeavttat …" + +# unreviewed-context +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Govva" + +# unreviewed-context +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Mer&ken" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Čájet &bálgá" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 – %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Fontabearaš" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Buoidi" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Linnjá vuolábeallái" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Ovddit reaidomolssaeaktu (Joavku #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Boahtte reaidomolssaeaktu (Joavku #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Ovddit reaidomolssaeaktu (Joavku #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Boahtte reaidomolssaeaktu (Joavku #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Čájet &ruvttodaga" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Čájet &uhcagovaža" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Gušta" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Sárggo gušttaiguin mas leat máŋga hámi ja sturrodaga" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Ivdnesihkkun" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Buhtte govvačuoggáid mas les ovdabealivdni duogášivnniin" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Coahkkal dahje gease vai sihkkut govvačuoggáid mas lea ovdabealivdni." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Sihkkun" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Coahkkal dahje gease vai sihkkut." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Luoitte buot sáhpánboaluid." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Beanna" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Spráijaboksa" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Spráije grafitti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Coahkkal dahje gease vai spráijet grafitti" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Olgešcoahkkal vai gaskkalduhttit." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Gurutcoahkkal vai gaskkalduhttit" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Vállje ivnni govas" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Coahkkal válljendihte ivnni." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Deavdá guovvluid govas" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Coahkkal vai deavdit guovllu." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Mohkkálat" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Sárggo mohkkálagaid" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Gease olggos álggahan- ja loahppahangežiid." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Gurutgease vai bidját vuosttáš stivrenčuoggá vai olgešcoahkkal vai " +"heaittihit." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Olgešgease vai bidjat vuosttáš stivrenčuoggá dahje gurutcoahkkal vai " +"heaittihit." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Gurutgease vai bidjat maŋemuš stivrenčuoggá dahje olgešcoahkkal vai " +"heaittihit." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Olgešgease vai bidját maŋemuš stivrenčuoggá dahje gurutcoahkkal vai " +"heaittihit." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linnjá" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Sárgo linnjáid" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Gease vai sárgut." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Moanačiegahas" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Gease vai sárgut vuosttáš linnjá." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Gurutgease eará linnjá dahje olgešcoahkkal vai heaittihit." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Olgešgease eará linnjá dahje gurutcoahkkal vai heaittihit." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Čatnojuvvon linnját" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Sárgo čatnojuvvon linnját" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Gierdu" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Sárgo ellipsaid ja gierdduid" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Njuolggočiegahas" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Sárggo njuolggočiegahasaid ja njealljehasaid" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Jorbaduvvon njuolggočiegahas" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" +"Sárggo njuolggočiegahasaid ja njealljehasaid mas leat jorbaduvvon čiegat" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Gurutgease vai ráhkadit merkema." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Gurutgeassin sirdá merkema." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Gurutgease vai skálet merkema." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Merken: Čađačuovgi" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Merken: Čađačuovgivuođa ivdni" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Merken (Elliptálaš)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Ráhkada elliptálaš dahje gierdusaš merken" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Merken (njuolggočiegat)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Ráhkada njuolggociegat merken" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Merken: Sirdde" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Njuvdde" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Čállá teavstta" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Teaksta: Máŋossihko" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Teaksta: Sihko" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Teaksta: Ođđa linnjá" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Teaksta: Čále" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Gurutgease vai ráhkadit teakstabovssa." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Gurutgeassin sirdá teakstabovssa." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Teaksta: Sirdde bovssa" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Gurutgease vai rievdadit teakstabovssa." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Gurutcoahkkal vai rievdadit sievána sajádat." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Teaksta: Čađačuovgi duogáš" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Teaksta: Molsso ivnnid" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Teaksta: Ovdabealivdni" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Teaksta: Duogášivdni" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Teaksta: Fonta" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Teaksta: Fontasturrodat" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Teaksta: Buoidi" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Teaksta: Vinjučála" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Teaksta: Vuolláisárgon" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    To configure it, click on the cube.

                    " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                    Color Similarity: %1%

                    Click to configure.

                    " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                    Color Similarity: Exact Match

                    Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "Č&uvgodat:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Má&hcat" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "&Vuostálasvuohta:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Má&hcat" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanálat:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Buot" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Ruoksat" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Ruoná" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Alit" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Máhcat &buot árvvuid" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Heivehusat" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Dássi:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Bija &doaibmat" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Ivnnit" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Ruoksat" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "R&uoná" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Alit" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Buot" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanálat" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "Čáhppes/&vilges" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                    To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                    To change the color of a color cell itself, double-click on it.

                    You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                    " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Konvertere &dása:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "K&valitehta:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Ovdačájeheapmi" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Čáhppes/vilges" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 ivnni" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bihttá ivdni" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Čađačuovgi" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1×1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Gierdu" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Njealljehas" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Vinjusázu" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1×%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Ii deavdin" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Deavdde duogášivnniin" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Deavdde ovdabealivnniin" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "" diff --git a/po/sk/kolourpaint.po b/po/sk/kolourpaint.po new file mode 100644 index 0000000..a0b6403 --- /dev/null +++ b/po/sk/kolourpaint.po @@ -0,0 +1,2778 @@ +# translation of kolourpaint.po to Slovak +# Stanislav Visnovsky , 2004. +# Richard Fric , 2006, 2007, 2009, 2011. +# Roman Paholík , 2012, 2015, 2016, 2017. +# Matej Mrenica , 2019, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-17 12:12+0200\n" +"Last-Translator: Matej Mrenica \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 21.07.80\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Stanislav Višňovský,Roman Paholík" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "visnovsky@kde.org,wizzardsk@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Vyváženie" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Rozmazať" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Zaostriť" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Vyčistiť" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Výber: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Vyraziť" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Vyrovnať" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Previesť na odtiene šedej" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Odtieň, nasýtenie, hodnota" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invertovať farby" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Prevrátiť" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Previesť na čiernobiely (dithering)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Previesť na čiernobiely" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Previesť na 256 farieb (dithering)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Previesť na 256 farieb" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Ekvalizér histogramu" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Prevrátiť" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Prevrátiť horizontálne alebo vertikálne" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Prevrátiť horizontálne" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Prevrátiť vertikálne" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Text: Zmena veľkosti" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Výber: Roztiahnutie" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Výber: Vyhladené roztiahnutie" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Zmeniť veľkosť" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Mierka" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Vyhladené roztiahnutie" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Otočiť" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Skosiť" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Vrátiť späť: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Undo" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Opakovať vrátené: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Redo" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Undo: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Undo" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Redo: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Redo" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 dalšia položka" +msgstr[1] "%1 dalšie položky" +msgstr[2] "%1 dalších položiek" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Výber farby" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Záplavová výplň" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Viac obrazových efektov (výber)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Viac obrazových efektov" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Zmenšiť počet farieb" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Soften & Sharpen" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Vlastnosti dokumentu" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Dots &Per Inch (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Neurčené" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontálne:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertikálne:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                    Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                    The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                    If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                    If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                    Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                    " +msgstr "" +"

                    Body na palec (DPI) určujú počet bodov obrázku, ktoré by mali " +"byť vytlačené na jeden palec (2,54 cm).

                    Čím vyššie DPI, tým menší " +"vytlačený obrázok. Poznamenávame, že vaša tlačiareň nemusí produkovať vysoko " +"kvalitné výtlačky ak zvýšite DPI na viac ako 300 alebo 600 DPI, záleží to na " +"tlačiarni.

                    Ak chcete vytlačiť obrázok v rovnakej veľkosti ako je na " +"obrazovke, nastavte rovnaké DPI obrázka ako je DPI obrazovky.

                    Ak je " +"DPI nastavené na Neurčené, obrázok sa tiež vytlačí v rovnakej " +"veľkosti ako je na obrazovke.

                    Nie všetky obrazové formáty podporujú " +"nastavenie hodnoty DPI. Ak to formát, v ktorom ukladáte, nepodporuje, " +"hodnoty sa neuložia.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Posun" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                    The Offset is the relative position where this image should be " +"placed, compared to other images.

                    Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                    " +msgstr "" +"

                    Posun je relatívna poloha, kde by mal byť tento obrázok " +"umiestnený, v porovnaní s ostatnými obrázkami.

                    Nie všetky obrazové " +"formáty podporujú funkciuPosun. Ak to formát v ktorom ukladáte " +"nepodporuje, hodnoty tu určené sa neuložia.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Textové polia" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Pridať riadok" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Zmazať riadok" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Vrátiť pôvodné" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                    Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                    However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                    Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                    " +msgstr "" +"

                    Textové polia poskytujú ďalšie informácie o obrázku. Toto je " +"pravdepodobne oblasť komentárov, kde je možné zapísať ľubovoľný text.

                    Je to však závislé na formáte, teda polia by mohli byť počítačom " +"interpretované dáta, ktoré by sa nemali meniť, ale je to nepravdepodobné

                    Nie všetky obrazové formáty podporujú textové polia. Ak ich " +"formát, v ktorom ukladáte, nepodporuje, neuložia sa.

                    " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Kľúč" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Hodnota" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Textová hodnota \"%1\" na riadku %2 vyťaduje kľúč." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Všetky texty musia byť jedinečné. Kľúč \"%1\" na riadkoch %2 and %3 je " +"identický." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Nesprávne textové polia" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Rozmery" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Originál:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Náhľad" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Aktualizovať" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Š&kálovať" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Na:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Celý obrázok" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Výber" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Textové pole" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Operácia" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                    • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                    • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                    • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                    " +msgstr "" +"
                    • Zmena veľkosti: Veľkosť obrázku bude zväčšená vytvorením " +"nových oblastí vpravo a/alebo dole (vyplnených farbou pozadia) alebo " +"zmenšením orezaním vpravo a/alebo dole.
                    • Roztiahnuť: Obrázok " +"bude zväčšený duplikovaním bodov alebo zahodením bodov.
                    • Vyhladene " +"roztiahnuť: toto je rovnaké ako Roztiahnuť, ale susedné body budú " +"zliate pre vytvorenie hladšieho obrázku.
                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Zmeniť veľkosť" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Roztiahnuť" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "V&yhladene roztiahnuť" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Šírka:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Výška:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Nové:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Percentá:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Udržiavať &pomer strán" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                    Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to resize the text box?

                    " +msgstr "" +"

                    Zmena veľkosti textového boxu na %1x%2 môže vyžadovať veľké množstvo " +"pamäti. To môže obmedziť rýchlosť reakcie systému a spôsobiť iné problémy.

                    Naozaj chcete zmeniť veľkosť textového boxu?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Zmeniť veľkosť textového poľa?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Zmena veľkosti &textového boxu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                    Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to resize the image?

                    " +msgstr "" +"

                    Zmena veľkosti obrázku na %1x%2 môže vyžadovať veľké množstvo pamäti. " +"To môže obmedziť rýchlosť reakcie systému a spôsobiť iné problémy.

                    Naozaj chcete zmeniť veľkosť obrázku?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Zmeniť veľkosť?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Zmeniť &veľkosť" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                    Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to scale the image?

                    " +msgstr "" +"

                    Zmena veľkosti obrázku na %1x%2 môže vyžadovať veľké množstvo pamäti. " +"To môže obmedziť rýchlosť reakcie systému a spôsobiť iné problémy.

                    Naozaj chcete zmeniť veľkosť obrázku?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Škálovať obrázok?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Zme&niť veľkosť obrázku" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                    Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to scale the selection?

                    " +msgstr "" +"

                    Zmena veľkosti obrázku na %1x%2 môže vyžadovať veľké množstvo pamäti. " +"To môže obmedziť rýchlosť reakcie systému a spôsobiť iné problémy.

                    Naozaj chcete zmeniť veľkosť obrázku?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Škálovať výber?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Z&meniť veľkosť výberu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                    Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the image?" +msgstr "" +"

                    Vyhladená zmena veľkosti obrázku na %1x%2 môže vyžadovať veľké " +"množstvo pamäti. To môže obmedziť rýchlosť reakcie systému a spôsobiť iné " +"problémy.

                    Naozaj chcete zmeniť veľkosť obrázku?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Plynulo škálovať obrázok?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Vyhladená zm&ena veľkosti obrázku" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                    Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to smooth scale the selection?" +"

                    " +msgstr "" +"

                    Vyhladená zmen veľkosti výberu na %1x%2 môže vyžadovať veľké množstvo " +"pamäti. To môže obmedziť rýchlosť reakcie systému a spôsobiť iné problémy.

                    Naozaj chcete zmeniť veľkosť výberu?

                    " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Plynulo škálovať výber?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Vyhladená z&mena veľkosti výberu" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Otočiť výber" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Otočiť obrázok" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Po otočení:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Smer" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "P&roti smeru hodinových ručičiek" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Po smere hodinových ručičiek" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Uhol" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "&90 stupňov" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "&180 stupňov" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "&270 stupňov" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "&Vlastné:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "uhlov" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                    Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to rotate the selection?

                    " +msgstr "" +"

                    Otočenie výberu na %1x%2 môže vyžadovať veľké množstvo pamäti. To " +"môže obmedziť rýchlosť reakcie systému a spôsobiť iné problémy.

                    Naozaj " +"chcete otočiť výber?

                    " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Otočiť výber?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Ot&očiť výber" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                    Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to rotate the image?

                    " +msgstr "" +"

                    Otočenie obrázku na %1x%2 môže vyžadovať veľké množstvo pamäti. To " +"môže obmedziť rýchlosť reakcie systému a spôsobiť iné problémy.

                    Naozaj " +"chcete otočiť obrázok?

                    " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Otočiť obrázok?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "O&točiť obrázok" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Skosiť výber" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Skosiť obrázok" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Po skosení:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontálne:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertikálne:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                    Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                    Are you sure you want to skew the selection?

                    " +msgstr "" +"

                    Skosenie výberu na %1x%2 môže vyžadovať dosť pamäti. To môže znížiť " +"odozvu systému a spôsobiť aj iné problémy aplikácií.

                    Naozaj chcete " +"výber skosiť?

                    " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Skosiť výber?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "S&kosiť výber" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                    Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                    Are you sure you want to skew the image?

                    " +msgstr "" +"

                    Skosenie obrázku na %1x%2 môže vyžadovať dosť pamäti. To môže znížiť " +"odozvu systému a spôsobiť aj iné problémy aplikácií.

                    Naozaj chcete " +"obrázok skosiť?

                    " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Skosiť obrázok?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "S&kosiť obrázok" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Podobnosť farieb" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Vzdialenosť farebnej kocky RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Presný výskyt" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Čo je podobnosť farieb?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Uložiť náhľad" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 bajt (asi %2%)" +msgstr[1] "%1 bajtov (asi %2%)" +msgstr[2] "%1 bajtov (asi %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Nepodarilo sa otvoriť \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Nepodarilo sa otvoriť \"%1\" - nepodprovaný formát obrázku.\n" +"Súbor je možno poškodený." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Nepodarilo sa uložiť obrázok - nedostatočné informácie." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Typ MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Interná chyba" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                    The %1 format may not be able to preserve all of the image's " +"color information.

                    Are you sure you want to save in this format?

                    " +msgstr "" +"

                    Formát %1 nemusí umožňiť zachovanie všetkých informácií o " +"farbách obrázku.

                    Naozaj chcete obrázok uložiť v tomto formáte?

                    " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Stratový súborový formát" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                    Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                    Are " +"you sure you want to save at this color depth?

                    " +msgstr "" +"

                    Uloženie obrázku v nízkej farebnej hĺbke %1 bitov môže spôsobiť " +"stratu informácií o farbách. Bude odstránená aj priesvitnosť.

                    Naozaj " +"chcete uložiť obrázok v tejto farebnej hĺbke?

                    " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Nízka farebná hĺbka" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Nepodarilo sa uložiť obrázok - nepodarilo sa vytvoriť dočasný súbor." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Nepodarilo sa uložiť ako \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Chyba pri ukladaní obrázku" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Nepodarilo sa uložiť obrázok - nepodarilo sa poslanie." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Odstrániť interný o&kraj" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Odstrániť interný okraj" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Automaticky &orezať" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Automaticky orezať" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint nemôže automaticky orezať výber, pretože sa nepodarilo nájsť " +"jeho interné okraje." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Nie je možné odstrániť vnútorný okraj" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint nemôže automaticky orezať obrázok, pretože sa nepodarilo nájsť " +"jeho okraje." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Nie je možné automaticky orezať" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Nastaviť ako obrázok" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Výber: Vytvoriť" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Kresliaci program od KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Zakladateľ projektu" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Hlavný vyšetrovateľ" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Podpora skenovania, podpora alfy, súčasný správca" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikony" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Podpora InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Obrázkové efekty" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Port do KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF5 portovanie" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Vďaka mnohým ďalším, ktorí pomohli tento program zrealizovať." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Obrázky na otvorenie, voliteľne" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Zoznam všetkých čitateľných MIME typov obrázkov" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Zobraziť" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Obrázok" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Farby" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Hlavný panel nástrojov" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Panel nástrojov pre text" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "RMB ponuka nástroja výberu" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Upraviť" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Náhľad" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Ťahaním zmeňte veľkosť obrázku." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Zmeniť veľkosť obrázku: Nechať všetky tlačidlá myši." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Zmeniť veľkosť obrázku: Pravé tlačidlo myši zruší." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Nepodarilo sa otvoriť farebnú paletu \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Nepodarilo sa otvoriť farebnú paletu \"%1\" - nepodprovaný formát súboru.\n" +"Súbor je možno poškodený." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Nepodarilo sa otvoriť KDE farebnú paletu \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Nepodarilo sa uložiť farebnú paletu ako \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Nepomenovaný" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Použiť KolourPaint štandard" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Použiť KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Otvoriť..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Znovu na&hrať" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Uložiť" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Uložiť &ako..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Pridať riadok" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Vymazať posledný riadok" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Farebná krabica" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Farebná paleta \"%1\" bola zmenená.\n" +"Chcete ju uložiť?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE farebná paleta \"%1\" bola zmenená.\n" +"Chcete ju uložiť do súboru?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Predvolená farebná paleta bola zmenená.\n" +"Chcete ju uložiť do súboru?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Otvoriť farebnú paletu" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Farebná paleta \"%1\" bola zmenená.\n" +"Znovunačítanie spôsobí stratu všetkých zmien od posledného uloženia.\n" +"Naozaj chcete pokračovať?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Obnoviť" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE farebná paleta \"%1\" bola zmenená.\n" +"Znovunačítanie spôsobí stratu všetkých zmien.\n" +"Naozaj chcete pokračovať?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Predvolená farebná paleta bola zmenená.\n" +"Znovunačítanie spôsobí stratu všetkých zmien.\n" +"Naozaj chcete pokračovať?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Uložiť farebnú paletu ako" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Vložiť do &nového okna" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "O&dstrániť výber" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opírovať do súboru..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Vložiť zo &súboru..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: Vytvoriť box" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: Vložiť" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint nemôže vložiť obsah schránky, pretože je v neznámom formáte." +"" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Nepodarilo sa vložiť" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: Odstrániť box" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Výber: Odstrániť" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: Dokončiť" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Výber: Zrušiť výber" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopírovať do súboru" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Vložiť zo &súboru" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportovať..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Skenovať..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Snímať obrazovku" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Vlastnosti" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Znovu na&hrať" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Všetky podporované súbory (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Otvoriť obrázok" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Zlyhalo otvorenie skenovacieho dialógu" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Skenovanie zlyhalo" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Trvanie snímky" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "sekunda" +msgstr[1] "sekundy" +msgstr[2] "sekundy" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Bez čakania" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Skryť hlavné okno" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Vlastnosti dokumentu" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Uložiť obrázok ako" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportovať" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokument \"%1\" bol zmenený.\n" +"Jeho znovunačítanie spôsobí stratu všetkých zmien od posledného uloženie.\n" +"Naozaj chcete pokračovať?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokument \"%1\" bol zmenený.\n" +"Jeho znovunačítanie spôsobí stratu všetkých zmien.\n" +"Naozaj chcete pokračovať?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Vytlačiť obrázok" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Pred poslaním musíte obrázok uložiť.\n" +"Chcete ho uložiť?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokument s menom \"%1\" je zmenený.\n" +"Chcete ho uložiť?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Zmeniť &veľkosť/mierku..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Nas&taviť ako obrázok (orezať)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Prevrátiť (zhora dolu)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Zrkadliť horizontálne" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Otočiť..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Otočiť doľa&va" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Otočiť doprava" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "S&kosiť..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Previesť na čierno&biely (dithering)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Previesť na odtiene š&edej" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "Prev&rátiť farby" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Vyčistiť" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Urobiť dôverné" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Ďalšie e&fekty..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "O&brázok" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Výber" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Zobraziť &cestu" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Kresliť vyhladene" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Rodina písma" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Veľkosť písma" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Tučné" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kurzíva" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Podčiarknuté" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Prečiarknuté" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Predchádzajúca voľba nástroja (Skupina č.1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Nasledujúca voľba nástroja (Skupina č.1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Predchádzajúca voľba nástroja (Skupina č.2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Nasledujúca voľba nástroja (Skupina č.2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Kresliť nepriehľadné" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Kresliť s podobnosťou farieb..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Nástrojová krabica" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Zobraziť m&riežku" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Zobraziť &miniatúru" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Mód zváčšených miniatúr" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Povoliť obdĺžnik miniatú&r" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "Priblížiť" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Získať obrázok" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Otvorenie zvoleného skenera zlyhalo." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Štetec" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Kreslenie pomocou štetcov rôznych tvarov a veľkostí" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Kliknutím kreslí body alebo ťahaním ťahy." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Farebná guma" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Nahradí body farby popredia farbou pozadia" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Kliknite alebo ťahajte myšou a tým vymažte body farby popredia." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Guma" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Umožňuje vygumovať chyby" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Kliknutím maže." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Nechať všetky tlačidlá myši." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pero" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Kreslí body a ťahy voľnou rukou" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Sprej" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Sprej pre graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Kliknutím alebo ťahaním sprejujte farbu." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Pravým tlačidlom zrušíte." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Ľavým tlačidlom zrušíte." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Umožňuje získať hodnotu farby z obrázku" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Kliknutím vyberte farbu." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Vypní oblasti obrázku" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Kliknutím vyplníte oblasť." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Priblížiť" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Priblíži a oddiali obrázok" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Kliknite na priblíženie/oddialenie alebo ťahajte myšou na priblíženie danej " +"oblasti." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Krivka" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Kreslí krivky" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Ťahaním určte počiatočný a koncový bod." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Ťahanie ľavým tlačidlom myši nastaví prvý ovládací bod alebo kliknite pravým " +"tlačidlom pre ukončenie." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Ťahanie pravým tlačidlom myši nastaví prvý ovládací bod alebo kliknite ľavým " +"tlačidlom pre ukončenie." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Ťahanie ľavým tlačidlom myši nastaví posledný ovládací bod alebo kliknite " +"pravým tlačidlom pre ukončenie." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Ťahanie pravým tlačidlom myši nastaví posledný ovládací bod alebo kliknite " +"ľavým tlačidlom pre ukončenie." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Čiara" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Kreslí čiary" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Ťahaním kreslí." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Lomená čiara" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Kreslí lomené čiary" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Ťahaním nakreslite prvú čiaru." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Ťahaním ľavým tlačidlom nakreslite ďalšiu čiaru, alebo pravým tlačidlom " +"ukončite kreslenie." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Ťahaním pravým tlačidlom nakreslite ďalšiu čiaru, alebo ľavým tlačidlom " +"ukončite kreslenie." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Spojené čiary" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Kreslí spojené čiary" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipsa" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Kreslí elipsy a kruhy" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Obdĺžnik" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Kreslí obdĺžniky a štvorce" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Obdĺžnik s okrúhlimi rohmi" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Kreslí obdĺžniky a štvorce s okrúhlymi rohmi." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Ťahanie ľavým tlačidlom vytvoríte výber." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Ťahanie ľavým tlačidlom presunie výber." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Ťahanie ľavým tlačidlom zmení veľkosť výberu." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Výber: Priehľadnosť" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Výber: Priesvitnosť" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Výber: Priesvitná farba" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Výber: Podobnosť priesvitných farieb" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Výber (eliptický)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Vytvára eliptické alebo kruhové výbery" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Výber (voľná ruka)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Vytvorí výber voľnou rukou" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Výber (obdĺžnik)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Vytvorí pravoúhly výber" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Výber: Presun" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Mazať" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Píše text" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Text: Odstrániť" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Text: Nový riadok" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: Písať" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Ťahanie ľavým tlačidlom vytvoríte textový box." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Ťahanie ľavým tlačidlom presunie textový box." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Text: Presun boxu" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Ťahanie ľavým tlačidlom zmení veľkosť textového boxu." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Kliknutím ľavým tlačidlom zmení pozíciu kurzora." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Text: Nepriehľadné pozadie" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: Priesvitné pozadie" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Text: Vymeniť farby" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Text: Farba popredia" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Text: Farba pozadia" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Text: Písmo" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Text: Veľkosť písma" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Text: Tučný" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: Kurzíva" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Text: Podčiarknutý" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Text: Prečiarknutý" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Nepriblížený režim - miniatúra" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - Miniatúra" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                    Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                    If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                    This feature applies " +"to:

                    • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                    • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                    • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                    • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                    Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                    However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                    To configure it, click on the cube.

                    " +msgstr "" +"

                    Podobnosť farieb je ako podobné farby rôznych bodov " +"musia byť, aby operácie určili, že sú rovnaké.

                    Ak to nastavíte na " +"niečo iné ako Presná zhoda, môžete pracovať efektívnejšie so zrnitými " +"obrázkami a fotografiamu, podobne ako s nástrojom \"Čarovný prútik\" v iných " +"kresliacich programoch.

                    Táto funkcia sa používa v nástrojoch:

                    • Výbery: In Priehľadný režim, ľubovoľná farba vo " +"výbere ktorá je podobná ako farba pozadia, bude priehľadná.
                    • Vypĺňanie: Pre oblasti s podobne - ale nie rovnako - " +"zafarbenými bodmi, vyššie nastavenie vyplní viac bodov.
                    • Farebná " +"guma: Ľubovoľný bod ktorého farba je podobná farbe popredia, bude " +"nahradená farbou pozadia.
                    • Automatické orezanie a " +"Odstránenie vnútorného okraja: Pre okraje s podobne - ale nie " +"rovnako - zafarbenými bodmi, vyššie nastavenie skôr oreže celý okraj.
                    • Vyššie nastavenie znamená, že operácie považujú zvýšený rozsah farieb " +"dostatočne podobný ako za rovnaký. Teda, musíte zvýšiť nastavenie ak " +"spomenuté operácie nevplývajú na body, ktoré považujete za dostatočne " +"podobné.

                      Avšak, ak majú priveľký účinok a menia aj body, ktorých farby " +"nepovažujete za dostatočne podobné (napr. if Vyplnenie mení priveľa " +"bodov), mali by ste znížiť toto nastavenie.

                      Pre nastavenie, kliknite " +"na kocku.

                      " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                      Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                      If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                      This feature applies " +"to:

                      • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                      • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                      • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                      • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                      Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                      However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                      " +msgstr "" +"

                      Podobnosť farieb je ako podobné farby rôznych bodov " +"musia byť, aby operácie určili, že sú rovnaké.

                      Ak to nastavíte na " +"niečo iné ako Presná zhoda, môžete pracovať efektívnejšie so zrnitými " +"obrázkami a fotografiamu, podobne ako s nástrojom \"Čarovný prútik\" v iných " +"kresliacich programoch.

                      Táto funkcia sa používa v nástrojoch:

                      • Výbery: In Priehľadný režim, ľubovoľná farba vo " +"výbere ktorá je podobná ako farba pozadia, bude priehľadná.
                      • Vypĺňanie: Pre oblasti s podobne - ale nie rovnako - " +"zafarbenými bodmi, vyššie nastavenie vyplní viac bodov.
                      • Farebná " +"guma: Ľubovoľný bod ktorého farba je podobná farbe popredia, bude " +"nahradená farbou pozadia.
                      • Automatické orezanie a " +"Odstránenie vnútorného okraja: Pre okraje s podobne - ale nie " +"rovnako - zafarbenými bodmi, vyššie nastavenie skôr oreže celý okraj.
                      • Vyššie nastavenie znamená, že operácie považujú zvýšený rozsah farieb " +"dostatočne podobný ako za rovnaký. Teda, musíte zvýšiť nastavenie ak " +"spomenuté operácie nevplývajú na body, ktoré považujete za dostatočne " +"podobné.

                        Avšak, ak majú priveľký účinok a menia aj body, ktorých farby " +"nepovažujete za dostatočne podobné (napr. if Vyplnenie mení priveľa " +"bodov), mali by ste znížiť toto nastavenie.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                        Color Similarity: %1%

                        Click to configure.

                        " +msgstr "" +"

                        Podobnosť farieb: %1%

                        Kliknite na nastavenie.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                        Color Similarity: Exact Match

                        Click to configure." +msgstr "" +"

                        Podobnosť farieb: Presná zhoda

                        Kliknite na " +"nastavenie.

                        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Jas:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Vrátiť pôvodné" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "&Vrátiť pôvodné" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanále:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Všetky" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Červená" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Zelená" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Modrá" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "&Vrátiť všetky pôvodné" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Nastavenia" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Stupeň:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Povoliť" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Farby" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "Odtieň:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "Nasýtenie:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "Hodnota:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "Č&ervená" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Zelená" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Modrá" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Všetky" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanále" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "Čierno&biele" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Čiernob&iele (dithered)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 f&arieb" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 fa&rieb (dithered)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bitové farby" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Redukovať na" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Granularita:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                        To change the color of a color cell itself, double-click on it.

                        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                        " +msgstr "" +"

                        Na výber farby popredia, ktorá sa používa na kreslenie, kliknite " +"ľavým tlačidlom na bunku vyplnenú farbou. Na výber farby pozadia, kliknite " +"pravým tlačidlom.

                        Na zmenu samotnej farby, dvakrát kliknite.

                        Môžete aj vymeniť farbu vyplnenej bunky za inú farbu bunku pomocou " +"pretianutia myšou. Ak podržíte klávesCtrl cieľová farba bude " +"prepísaná, namiesto toho aby bola vymenená za farbu zdrojovej bunky.

                        " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Previesť &na:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "&Kvalita:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Náhľad" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Čiernobiely" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Čiernobiely (dithering)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 farieb" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 farieb (dithering)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitové farby" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Poloha obrázku" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Stred stránky" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Hore vľavo na strane" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Transparentné" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint štandard" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Farby: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Farby: %1 [zmenené]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Kruh" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Štvorec" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Lomítko" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Spätná lomka" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Bez výplne" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Vyplniť farbou pozadia" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Vyplniť farbou popredia" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Nepriehľadné" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Dokument \"%1\" už existuje.\n" +#~ "Chcete ho prepísať?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Farebná schéma s názvom \"%1\" už existuje.\n" +#~ "Chcete ju prepísať?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Nastaviť hodnotu lupy na hodnotu, ktorá nie je násobok 100% spôsobí " +#~ "nepresné úpravy a chyby vykreslenia.\n" +#~ "Naozaj chcete nastaviť lupu na %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Nastaviť lupu na %1%" + +#~ msgid "None" +#~ msgstr "Žiadne" + +#~ msgid "" +#~ "

                        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                        Are you sure want to resize the image?

                        " +#~ msgstr "" +#~ "

                        Zmena veľkosti obrázku na %1x%2 môže vyžadovať veľké množstvo " +#~ "pamäti. To môže obmedziť rýchlosť reakcie systému a spôsobiť iné problémy." +#~ "

                        Naozaj chcete zmeniť veľkosť obrázku?

                        " + +#~ msgid "Overwrite" +#~ msgstr "Prepísať" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Nepodarilo sa otvoriť \"%1\" - neznámy typ MIME." + +#~ msgid "Save Preview" +#~ msgstr "Uložiť náhľad" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Na získanie podporu prosím navštívte webovú stránku." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Nenájdený žiadny plugin, ktorý poskytuje dialóg skenera.\n" +#~ "Toto obyčajne znamená, že balík poskytujúci ksaneplugin nie je " +#~ "nainštalovaný." + +#~ msgid "No Scanning Support" +#~ msgstr "Žiadna podpora skenovania" diff --git a/po/sl/kolourpaint.po b/po/sl/kolourpaint.po new file mode 100644 index 0000000..63c0186 --- /dev/null +++ b/po/sl/kolourpaint.po @@ -0,0 +1,2788 @@ +# translation of kolourpaint.po to Slovenian +# Translation of kolourpaint.po to Slovenian +# Gregor Rakar , 2004, 2005. +# Jure Repinc , 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013. +# Andrej Mernik , 2013, 2014, 2015, 2016, 2017. +# Matjaž Jeran , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-06 07:04+0200\n" +"Last-Translator: Matjaž Jeran \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Translator: Andrej Mernik \n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Gregor Rakar,Jure Repinc,Andrej Mernik,Matjaž Jeran" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"gregor.rakar@kiss.si,jlp@holodeck1.com,andrejm@ubuntu.si,matjaz.jeran@amis." +"net" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Ravnovesje" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Zmehčaj" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Izostri" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Počisti" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Izbira: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Izboči" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Splošči" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Zmanjšaj na sivinsko" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Odtenek, nasičenost, vrednost" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Obrni barve" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Obrni" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Zmanjšaj na enobarvno (razpršeno)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Zmanjšaj na enobarvno" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Zmanjšaj na 256 barv (razpršeno)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Zmanjšaj na 256 barv" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogramski uravnalnik" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Zrcali" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Zrcali vodoravno ali navpično" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Zrcali vodoravno" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Zrcali navpično" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Besedilo: spremeni velikost polja" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Izbira: umeri" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Izbira: mehko umeri" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Spremeni velikost" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Umeri" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Mehko umeri" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Zavrti" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Nagni" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "Razveljavi: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "Razveljavi" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "Uveljavi: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "Uveljavi" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Razveljavi: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Razveljavi" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Uveljavi: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Uveljavi" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 predmet več" +msgstr[1] "%1 predmeta več" +msgstr[2] "%1 predmeti več" +msgstr[3] "%1 predmetov več" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Izbirnik barv" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Zapolnitev" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Več slikovnih učinkov (izbira)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Več slikovnih učinkov" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "Učinek:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Zmanjšaj barve" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Zmehčaj in izostri" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Lastnosti dokumenta" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Slik. točk na &palec (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Nedoločeno" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Vodoravno:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Navpično:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                        " +msgstr "" +"

                        Slik. točk na palec (DPI) določa število slikovnih točk, ki so " +"natisnjene znotraj enega palca (2,54 cm).

                        Večji kot je DPI, manjša je " +"natisnjena slika. Zapomnite si, da izpis vašega tiskalnika verjetno ne bo " +"zelo kakovosten, če DPI nastavite na več kot 300 ali 600. To je zelo odvisno " +"od tiskalnika samega.

                        Če želite, da bi bila natisnjena slika enako " +"velika kot na zaslonu, nastavite DPI slike na enako vrednost kot je DPI " +"zaslona.

                        Če je vrednost Nedoločena, bo slika prav tako " +"natisnjena v isti velikosti kot je na zaslonu.

                        Vse oblike zapisov slik " +"ne podpirajo DPI-ja. V tem primeru bo podatek med shranjevanjem izgubljen." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Odmik" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                        The Offset is the relative position where this image should be " +"placed, compared to other images.

                        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                        " +msgstr "" +"

                        Odmik je relativen položaj postavitve slike, glede na druge " +"slike.

                        Vse oblike zapisa slik ne podpirajo odmika. V tem " +"primeru bo podatek pri shranjevanju izgubljen.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "Besedilna polja" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "Dod&aj vrstico" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Izbriši vrstico" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "Ponastavi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                        " +msgstr "" +"

                        Besedilna polja ponujajo dodatne podrobnosti o sliki. " +"Najverjetneje je to polje za opombo, v katerega lahko vpišete poljubno " +"besedilo.

                        Kljub temu vedite, da je to odvisno od oblike zapisa, zato " +"je možno da so podatki tolmačeni na določen način in jih ne bi smeli " +"spreminjati. To je redko.

                        Vse oblike zapisa slik ne podpirajo " +"besedilnih polj. V tem primeru bo podatek med shranjevanjem izgubljen." +"

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Ključ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Vrednost" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Besedilna vrednost »%1« v vrstici %2 potrebuje ključ." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Vsi besedilni ključi morajo biti edinstveni. Besedilna ključa »%1« v " +"vrsticah %2 in %3 sta enaka." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Neveljavna besedilna polja" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Mere" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Izvirnik:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 × %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Predogled" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Posodobi" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Spremeni velikost / umeri" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Deluj na:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Cela slika" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Izbira" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Besedilno polje" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Dejanje" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                        " +msgstr "" +"
                        • Spremeni velikost: velikost slike bo povečana z " +"ustvarjanjem novih območij na desni in/ali na dnu (zapolnjenih z barvo " +"ozadja) ali pa zmanjšana z izrezovanjem na desni in/ali na dnu.
                        • Umeri: slika bo razširjena s podvajanjem slikovnih točk ali " +"stisnjena z izpuščanjem slikovnih točk.
                        • Mehko umeri: to je " +"enako kot Umeri, le da zamegli sosednje slikovne točke, da slika " +"izgleda bolj gladko.
                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Sp&remeni velikost" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "Umeri" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Mehko umeri" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Širina:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Višina:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Novo:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "Odstotek:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Ohrani razmerje" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to resize the text box?

                        " +msgstr "" +"

                        Spreminjanje velikosti besedilnega polja na %1×%2 lahko porabi velike " +"količine pomnilnika. To lahko zmanjša odzivnost sistema in povzroči drugim " +"programom težave z viri.

                        Ali zares želite spremeniti velikost " +"besedilnega polja?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Spremenim velikost besedilnega polja?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Spr&emeni velikost besedilnega polja" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to resize the image?

                        " +msgstr "" +"

                        Spreminjanje velikosti slike na %1×%2 lahko porabi velike količine " +"pomnilnika. To lahko zmanjša odzivnost sistema in povzroči drugim programom " +"težave z viri.

                        Ali zares želite spremeniti velikost slike?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Spremenim velikost slike?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Spr&emeni velikost slike" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to scale the image?

                        " +msgstr "" +"

                        Umerjanje slike na %1×%2 lahko porabi velike količine pomnilnika. To " +"lahko zmanjša odzivnost sistema in povzroči drugim programom težave z viri. " +"

                        Ali zares želite umeriti sliko?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Umerim sliko?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Um&eri sliko" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to scale the selection?

                        " +msgstr "" +"

                        Umerjanje izbire %1×%2 lahko porabi velike količine pomnilnika. To " +"lahko zmanjša odzivnost sistema in povzroči drugim programom težave z viri. " +"

                        Ali zares želite umeriti izbiro?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Umerim izbiro?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Um&eri izbiro" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the image?" +msgstr "" +"

                        Mehko umerjanje na %1×%2 lahko porabi velike količine pomnilnika. To " +"lahko zmanjša odzivnost sistema in povzroči drugim programom težave z viri. " +"

                        Ali zares želite mehko umeriti sliko?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Mehko umerim sliko?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Mehko um&eri sliko" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the selection?" +"

                        " +msgstr "" +"

                        Mehko umerjanje izbire na %1×%2 lahko porabi velike količine " +"pomnilnika. To lahko zmanjša odzivnost sistema in povzroči drugim programom " +"težave z viri.

                        Ali zares želite mehko umeriti izbiro?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Mehko umerim izbiro?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Mehko um&eri izbiro" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Zavrti izbiro" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Zavrti sliko" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Po vrtenju:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Smer" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "V &nasprotni smeri urinega kazalca" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "V smeri urinega kaza&lca" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Kot" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 stopinj" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 stopinj" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 stopinj" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Po meri:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "stopinj" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to rotate the selection?

                        " +msgstr "" +"

                        Vrtenje izbire na %1×%2 lahko porabi velike količine pomnilnika. To " +"lahko zmanjša odzivnost sistema in povzroči drugim programom težave z viri. " +"

                        Ali zares želite zavrteti izbiro?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Zavrtim izbiro?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Zavrti izbiro" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to rotate the image?

                        " +msgstr "" +"

                        Vrtenje slike na %1×%2 lahko porabi velike količine pomnilnika. To " +"lahko zmanjša odzivnost sistema in drugim programom povzroči težave z viri. " +"

                        Ali zares želite zavrteti sliko?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Zavrtim sliko?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Zavrti sliko" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Nagni izbiro" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Nagni sliko" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Po nagnjenju:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "Vodoravno:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "Navpično:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to skew the selection?

                        " +msgstr "" +"

                        Nagnjenje izbire na %1×%2 lahko porabi velike količine pomnilnika. To " +"lahko zmanjša odzivnost sistema in drugim programom povzroči težave z viri. " +"

                        Ali zares želite nagniti izbiro?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Nagnem izbiro?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Nagni izbiro" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to skew the image?

                        " +msgstr "" +"

                        Nagnjenje slike na %1×%2 lahko porabi velike količine pomnilnika. To " +"lahko zmanjša odzivnost sistema in drugim programom povzroči težave z viri. " +"

                        Ali zares želite nagniti sliko?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Nagnem sliko?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Nagni sliko" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Barvna podobnost" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&Razdalja v barvni kocki RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Točno ujemanje" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Kaj je podobnost barv?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Predogled shranjevanja" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 bajt (pribl. %2%)" +msgstr[1] "%1 bajta (pribl. %2%)" +msgstr[2] "%1 bajti (pribl. %2%)" +msgstr[3] "%1 bajtov (pribl. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Ni bilo mogoče odpreti »%1«." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Ni bilo mogoče odpreti »%1« - nepodprta vrsta datoteke.\n" +"Datoteka je mogoče pokvarjena." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Ni bilo mogoče shraniti slike - premalo podatkov." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Vrsta MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Notranja napaka" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                        The %1 format may not be able to preserve all of the image's " +"color information.

                        Are you sure you want to save in this format?

                        " +msgstr "" +"

                        Vrsta slike %1 mogoče ni zmožna ohraniti vseh podrobnosti o " +"barvah na sliki.

                        Ali ste prepričani, da želite shraniti v tej vrsti?" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Vrsta datoteke z izgubami" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                        Are " +"you sure you want to save at this color depth?

                        " +msgstr "" +"

                        Shranjevanje slike pri nizki barvni globini %1 bitov lahko povzroči " +"izgubo podrobnosti o barvah. Odstranjena je lahko tudi vsaka prozornost.

                        Ali zares želite shraniti sliko pri tej barvni globini?

                        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Nizka barvna globina" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Ni bilo mogoče shraniti slike - ni mogoče ustvariti začasne datoteke." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Ni bilo mogoče shraniti kot \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Napaka pri shranjevanju slike" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Ni bilo mogoče shraniti slike - pošiljanje ni uspelo." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Odstrani notranjo obr&obo" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Odstrani notranjo obrobo" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Samodejno obreži" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Samodejno obreži" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint ni mogel odstraniti notranje obrobe izbire, ker ni bila najdena." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Ni mogoče odstraniti notranje obrobe" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint ne more samodejno obrezati slike, ker njena obroba ni bila " +"najdena." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Ni mogoče samodejno obrezati" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Nastavi sliko kot" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Izbira: ustvari" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Program za risanje s strani KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Ustanovitelj projekta" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Glavni preiskovalec" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Podpora za optično branje ter alfo, trenutni vzdrževalec" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikone" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Podpora InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Slikovni učinki" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Predelava za KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Predelava za KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Hvala mnogim ostalim, ki so pomagali pri razvoju tega programa." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Slikovne datoteke za odprtje, izbirno" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Naredi seznam vseh berljivih vrst MIME" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "Pogled" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "Slika" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "Barve" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Glavna orodna vrstica" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Orodna vrstica besedila" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Meni desnega miškinega gumba za izbiro orodja" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "Ur&edi" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Sličica" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Levo potegnite ročico, da bi spremenili velikost slike." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Spremeni velikost slike: spustite vse miškine gumbe." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Spremeni velikost slike: desni klik za preklic." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Besedilo" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Ni bilo mogoče odpreti barvne palete »%1«." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Ni bilo mogoče odpreti barvne palete »%1« - nepodprta oblika.\n" +"Datoteka je mogoče pokvarjena." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Ni bilo mogoče odpreti KDE-jeve barvne palete »%1«." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Ni bilo mogoče shraniti barvne palete kot »%1«." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Brez naslova" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Uporabi privzete vrednosti za KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Uporabi KDE-jeve" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Odpri..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Znova naloži" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Shrani" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Shrani kot..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Dodaj vrstico" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Izbriši zadnjo vrstico" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Barve" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Barvna paleta »%1« je bila spremenjena.\n" +"Ali jo želite shraniti?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE-jeva barvna paleta »%1« je bila spremenjena.\n" +"Ali jo želite shraniti?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Privzeta barvna paleta je bila spremenjena.\n" +"Ali jo želite shraniti?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Odpri barvno paleto" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Barvna paleta »%1« je bila spremenjena.\n" +"Ponovno nalaganje bo izgubilo vse spremembe po zadnjem shranjevanju.\n" +"Ali ste prepričani?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Znova naloži" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE-jeva barvna paleta »%1« je bila spremenjena.\n" +"Vnovično nalaganje bo izgubilo vse spremembe.\n" +"Ali ste prepričani?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Privzeta barvna paleta je bila spremenjena.\n" +"Vnovično nalaganje bo izgubilo vse spremembe.\n" +"Ali ste prepričani?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Shrani barvno paleto kot" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Prilepi v &novo okno" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Izbriši izbiro" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "K&opiraj v datoteko..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Prilepi iz datoteke..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Besedilo: ustvari polje" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Besedilo: prilepi" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint ne more prilepiti vsebine z odložišča, ker je njena vrsta " +"neznana" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Ni mogoče prilepiti" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Besedilo: izbriši polje" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Izbira: izbriši" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Besedilo: končaj" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Izbira: odstrani" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopiraj v datoteko" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Prilepi iz datoteke" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "Izvozi..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Optično branje ..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Zajemi zaslonsko sliko" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Lastnosti" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Znova naloži" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Vse podprte datoteke (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Odpri sliko" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Ni bilo mogoče odpreti pogovornega okna za optično branje." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Optično branje ni uspelo" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Zakasnitev posnetka" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekundo" +msgstr[1] " sekundi" +msgstr[2] " sekunde" +msgstr[3] " sekund" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Brez zakasnitve" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Skrij glavno okno" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Lastnosti dokumenta" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Shrani sliko kot" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Izvozi" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokument »%1« je bil spremenjen.\n" +"Vnovično nalaganje bo izgubilo vse spremembe po zadnjem shranjevanju.\n" +"Ali ste prepričani?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokument »%1« je bil spremenjen.\n" +"Vnovično nalaganje bo izgubilo vse spremembe.\n" +"Ali ste prepričani?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Natisni sliko" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Sliko morate shraniti, preden jo pošljete.\n" +"Ali jo želite shraniti?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokument »%1« je bil spremenjen.\n" +"Ali ga želite shraniti?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Spr&emeni velikost / umeri..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Nas&tavi kot sliko (obreži)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Zrcali (od zgoraj navzdol)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Zrcali (vodoravno)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "Zavrti..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Zavrti v &levo" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Zavrti v desno" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Nagni..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Zmanjšaj na e&nobarvno (razpršeno)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Zmanjšaj na sivinsko" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "Obrni barve" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Počisti" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Napravi zaupno" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Več učinkov..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "Slika" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Iz&bira" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Pokaži &pot" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Riši z glajenjem robov" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1×%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1 %" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Družina pisav" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Velikost pisave" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Krepko" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Ležeče" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Podčrtano" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Prečrtano" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Prejšnja možnost orodja (skupina #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Naslednja možnost orodja (skupina #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Prejšnja možnost orodja (skupina #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Naslednja možnost orodja (skupina #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "Riši motno" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Riši z barvno podobnostjo ..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Orodjarna" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Pokaži mrežo" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Pokaži sličico" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Približan način sličice" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Omogoči p&ravokotnik s sličico" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "Približanje" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Pridobi sliko" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Odpiranje izbranega optičnega bralnika je spodletelo." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Čopič" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Nariši z uporabo čopičev različnih oblik in velikosti" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Kliknite za risanje točk in prostoročnih potez." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Radirka barv" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Zamenja slikovne točke barve ospredja z barvo ozadja" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Kliknite ali potegnite za brisanje slikovnih točk barve ospredja." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Radirka" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Omogoča vam izbrisati napake" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Kliknite ali potegnite za brisanje." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Spustite vse miškine gumbe." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Pero" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Nariše točke in prostoročne poteze" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Razpršilo" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Razprši grafite" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Kliknite ali potegnite za razpršitev grafitov." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Desni klik za preklic." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Levi klik za preklic." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Omogoča vam izbrati barvo iz slike" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Kliknite za izbiro barve." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Zapolni območja slike" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Kliknite za zapolnitev območja." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Približanje" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Približa ali oddalji sliko" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Kliknite za približanje/oddaljitev ali pa z miško izberite območje za " +"približanje." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Krivulja" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Nariše krivulje" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Potegnite začetno in končno točko." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Levo potegnite za nastavitev prve nadzorne točke ali kliknite desno za " +"končanje." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Desno potegnite za nastavitev prve nadzorne točke ali kliknite levo za " +"končanje." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Levo potegnite za nastavitev zadnje nadzorne točke ali kliknite desno za " +"končanje." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Desno potegnite za nastavitev zadnje nadzorne točke ali kliknite levo za " +"končanje." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Črta" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Nariše črte" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Potegnite za risanje." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Mnogokotnik" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Izriše mnogokotnike" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Potegnite za risanje prve črte." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Levo potegnite za novo črto ali kliknite desno za končanje." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Desno potegnite za novo črto ali kliknite levo za končanje." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Povezane črte" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Nariše povezane črte" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elipsa" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Nariše elipse in kroge" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Pravokotnik" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Nariše pravokotnike in kvadrate" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Zaobljen pravokotnik" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Nariše pravokotnike in kvadrate z zaobljenimi koti" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Levo potegnite, da ustvarite izbiro." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Levo potegnite, da premaknete izbiro." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Levo potegnite za umerjanje izbire." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Izbira: motna" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Izbira: prozorna" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Izbira: barva prozornosti" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Izbira: podobnost barve prozornosti" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Izbira (eliptična)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Naredi eliptično ali krožno izbiro" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Izbira (prostoročna)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Naredi prostoročno izbiro" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Izbira (pravokotna)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Naredi pravokotno izbiro" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Izbira: premik" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: razmaz" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Piše besedilo" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Besedilo: vračalka" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Besedilo: brisanje" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Besedilo: nova vrstica" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Besedilo: pisanje" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Levo potegnite, da ustvarite besedilno polje." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Levo potegnite, da premaknete besedilno polje." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Besedilo: premik polja" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Levo potegnite za spremembo velikosti besedilnega polja." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Levi klik za spremembo položaja kazalke." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Besedilo: motno ozadje" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Besedilo: prozorno ozadje" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Besedilo: zamenjava barv" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Besedilo: barva ospredja" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Besedilo: barva ozadja" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Besedilo: pisava" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Besedilo: velikost pisave" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Besedilo: krepko" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Besedilo: ležeče" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Besedilo: podčrtano" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Besedilo: prečrtano" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Način brez približanja - sličica" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1 % - sličica" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        To configure it, click on the cube.

                        " +msgstr "" +"

                        Podobnost barv določa, kako podobne morajo biti barve " +"različnih slikovnih točk, da jih dejanja smatrajo kot enake.

                        Če to " +"nastavite na vrednost različno od Točno ujemanje, lahko učinkoviteje " +"delate z razpršenimi slikami in fotografijami, na podoben način kot z " +"orodjem »Čarobna palica« v drugih risarskih programih.

                        Ta zmožnost je " +"uporabljena za:

                        • Izbiranje: v načinu s prozornostjo " +"bo vsaka barva, ki je podobna barvi ozadja, postala prozorna.
                        • Zapolnjevanje: za območja s podobnimi, a ne enako " +"obarvanimi slikovnimi točkami, bo višja vrednost verjetno omogočila " +"zapolnitev večjega števila slikovnih točk.
                        • Brisanje barve: " +"vsaka slikovna točka z barvo, ki je podobna barvi ospredja, bo " +"zamenjana z barvo ozadja.
                        • Samodejno obrezovanje in " +"Odstranjevanje notranjih obrob: za obrobe s podobno, a ne " +"enako barvo slikovnih točk, bo višja vrednost bolj verjetno obrezala celotno " +"obrobo.

                        Višja vrednost pomeni, da opravila smatrajo več barv, ki " +"so dovolj podobne, kot da bi bile enake. Iz tega sledi, da vrednost " +"povečajte, če gornja opravila ne vplivajo na slikovne točke, ki imajo barve, " +"za katere menite, da so dovolj podobne.

                        V nasprotnem pa, če imajo " +"opravila preširok učinek in spreminjajo slikovne točke, ki imajo barve, za " +"katere menite, da niso podobne (npr. če Zapolnjevanje spreminja " +"preveč slikovnih točk), zmanjšajte to vrednost.

                        Za nastavitev kliknite " +"na kocko.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        " +msgstr "" +"

                        Podobnost barv določa, kako podobne morajo biti barve " +"različnih slikovnih točk, da jih dejanja smatrajo kot enake.

                        Če to " +"nastavite na vrednost različno od Točno ujemanje, lahko učinkoviteje " +"delate z razpršenimi slikami in fotografijami, na podoben način kot z " +"orodjem »Čarobna palica« v drugih risarskih programih.

                        Ta zmožnost je " +"uporabljena za:

                        • Izbiranje: v načinu s prozornostjo " +"bo vsaka barva, ki je podobna barvi ozadja, postala prozorna.
                        • Zapolnjevanje: za območja s podobnimi, a ne enako " +"obarvanimi slikovnimi točkami, bo višja vrednost verjetno omogočila " +"zapolnitev večjega števila slikovnih točk.
                        • Brisanje barve: " +"vsaka slikovna točka z barvo, ki je podobna barvi ospredja, bo " +"zamenjana z barvo ozadja.
                        • Samodejno obrezovanje in " +"Odstranjevanje notranjih obrob: za obrobe s podobno, a ne " +"enako barvo slikovnih točk, bo višja vrednost bolj verjetno obrezala celotno " +"obrobo.

                        Višja vrednost pomeni, da opravila smatrajo več barv, ki " +"so dovolj podobne, kot da bi bile enake. Iz tega sledi, da vrednost " +"povečajte, če gornja opravila ne vplivajo na slikovne točke, ki imajo barve, " +"za katere menite, da so dovolj podobne.

                        V nasprotnem pa, če imajo " +"opravila preširok učinek in spreminjajo slikovne točke, ki imajo barve, za " +"katere menite, da niso podobne (npr. če Zapolnjevanje spreminja " +"preveč slikovnih točk), zmanjšajte to vrednost.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                        Color Similarity: %1%

                        Click to configure.

                        " +msgstr "" +"

                        Barvna podobnost: %1 %

                        Kliknite za nastavitev.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                        Color Similarity: Exact Match

                        Click to configure." +msgstr "" +"

                        Barvna podobnost: točno ujemanje

                        Kliknite za " +"nastavitev.

                        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "Svetlost:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Pona&stavi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Kontrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gama:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Ponas&tavi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Kanali:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Vsi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Rdeča" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Zelena" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Modra" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Pon&astavi vse vrednosti" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Nastavitve" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "Količina:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "Omogoči" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Barve" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "Odtenek:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "Na&sičenost:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Vrednost:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Rdeča" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "Zelena" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "Modra" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "Vse" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanali" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "Enobarvno" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "E&nobarvno (razpršeno)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 barv" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 barv (razpršeno)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bitne barve" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Zmanjšaj na" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "Zrnatost:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                        To change the color of a color cell itself, double-click on it.

                        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                        " +msgstr "" +"

                        Da izberete barvo ospredja, ki jo orodja uporabljajo za risanje, z " +"levim gumbom kliknite na zapolnjeno barvno celico. Da izberete barvo ozadja, " +"kliknite z desnim gumbom.

                        Da spremenite barvo v barvni celici, " +"dvokliknite nanjo.

                        Z vleko in spustom lahko izmenjate barvi dveh " +"zapolnjenih celic. Če pri tem držite tipko Ctrl, bo barva ciljne " +"celice prepisana in ne bo izmenjana z barvo izvorne celice.

                        " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Pre&tvori v:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kakovos&t:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Predogled" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Enobarvno" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Enobarvno (razpršeno)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 barv" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 barv (razpršeno)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitne barve" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Položaj sl&ike" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Sredina strani" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Zgornji-&levi kot strani" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Prozorno" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Privzete vrednosti za KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Barve: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Barve: %1 [spremenjeno]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1×1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Krog" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Poševnica" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Leva poševnica" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1 × %2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Brez zapolnjevanja" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Zapolni z barvo ozadja" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Zapolni z barvo ospredja" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Motno" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Dokument z imenom »%1« že obstaja.\n" +#~ "Ali ga želite prepisati?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Barvna paleta z imenom »%1« že obstaja.\n" +#~ "Ali jo želite prepisati?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Nastavljanje stopnje približanja na vrednost, ki ni mnogokratnik 100 %, " +#~ "lahko povzroči nenatančno urejanje in napake pri izrisovanju.\n" +#~ "Ali zares želite nastaviti stopnjo približanja na %1 %?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Nastavi stopnjo približanja na %1 %" + +#~ msgid "None" +#~ msgstr "Brez" + +#~ msgid "" +#~ "

                        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                        Are you sure want to resize the image?

                        " +#~ msgstr "" +#~ "

                        Spreminjanje velikosti slike na %1×%2 lahko porabi velike količine " +#~ "pomnilnika. To lahko zmanjša odzivnost sistema in povzroči drugim " +#~ "programom težave z viri.

                        Ali zares želite spremeniti velikost " +#~ "slike?

                        " + +#~ msgid "Overwrite" +#~ msgstr "Prepiši" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Ni bilo mogoče odpreti »%1« - neznana vrsta MIME." + +#~ msgid "Save Preview" +#~ msgstr "Predogled shranjevanja" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Za podporo obiščite domačo stran." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Vstavek, ki bi ponujal pogovorno okno za optični bralnik, ni bil najden.\n" +#~ "Običajno to pomeni, da paket, ki ponuja ksaneplugin, ni nameščen." + +#~ msgid "No Scanning Support" +#~ msgstr "Brez podpore za optično branje" diff --git a/po/sq/kolourpaint.po b/po/sq/kolourpaint.po new file mode 100644 index 0000000..b67746d --- /dev/null +++ b/po/sq/kolourpaint.po @@ -0,0 +1,2591 @@ +# Albanian translation for kdegraphics +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the kdegraphics package. +# +# FIRST AUTHOR , 2009. +# Agron Selimaj , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kdegraphics\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-02-26 21:38-0500\n" +"Last-Translator: Agron Selimaj \n" +"Language-Team: kdeshqip\n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2011-04-22 09:30+0000\n" +"X-Generator: Lokalize 20.12.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "KDE Shqip, Launchpad Contributions: Vilson Gjeci" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kde-i18n-sq@kde.org,vilsongjeci@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Barazo" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Zbute" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Mbrehe" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Pastro" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Rrafsho" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Inverto Ngjyrat" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Inverto" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Vërtit" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Ripërmaso" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Shkalla" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rrotullo" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Zhbëji: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Zhbëj" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Ribëji: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Ribëj" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Zhbëji: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Zhbëj" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Ribëji: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Ribëj" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "" +msgstr[1] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Zgjedhës i ngjyrës" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, fuzzy, kde-format +#| msgid "Document Properties" +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Veti Dokumenti" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "I Paspecifikuar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horizontalisht:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertikalisht:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                        The Offset is the relative position where this image should be " +"placed, compared to other images.

                        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Rivendos" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Kyçi" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Vlera" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensionet" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Origjinal:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Parapamje" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Përditëso" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "Resize" +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Ripërmaso" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Përzgjedhje" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Kuti Teksti" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Veprimi" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Ripërmaso" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Gjerësia:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Lartësia:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&I Ri:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Përqindje:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to resize the text box?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, fuzzy, kde-format +#| msgid "Text Box" +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Kuti Teksti" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to resize the image?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +#| msgid "Resize" +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Ripërmaso" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to scale the image?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Ruaje Imazhin Si" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to scale the selection?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Përzgjedhje" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the selection?" +"

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Përzgjedhje" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate" +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rrotullo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Drejtimi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Këndi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "gradë" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to rotate the selection?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Përzgjedhje" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to rotate the image?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +#| msgid "Rotate" +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rrotullo" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Përzgjedhje" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Ruaje Imazhin Si" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horizontal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertikal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to skew the selection?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +#| msgid "Selection" +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Përzgjedhje" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to skew the image?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Ruaje Imazhin Si" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Përputhje e Drejtpërdrejtë" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, fuzzy, kde-format +#| msgid "Preview" +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Parapamje" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "" +msgstr[1] "" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mimetype: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, fuzzy, kde-format +#| msgid "Internal Error" +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Gabim i Brendshëm" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                        The %1 format may not be able to preserve all of the image's " +"color information.

                        Are you sure you want to save in this format?

                        " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                        Are " +"you sure you want to save at this color depth?

                        " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikonat" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 Porting" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, fuzzy, kde-format +#| msgid "KDE 4 Porting" +msgid "KF 5 Porting" +msgstr "KDE 4 Porting" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Shfaq" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Imazhi" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, fuzzy, kde-format +#| msgid "Colors" +msgid "&Colors" +msgstr "Ngjyrat" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Shiriti Kryesor" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, fuzzy, kde-format +#| msgid "Main Toolbar" +msgid "Text Toolbar" +msgstr "Shiriti Kryesor" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Modifiko" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +#| msgid "Thumbnail" +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Parapamje" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Teksti" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Pa titull" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Ringarko" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&ksporto..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Parametrat" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +#| msgid "&Image" +msgctxt "@title:window" +msgid "Open Image" +msgstr "&Imazhi" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Veti Dokumenti" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Ruaje Imazhin Si" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, fuzzy, kde-format +#| msgid "Export" +msgctxt "@title:window" +msgid "Export" +msgstr "Eksporto" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "P&astro" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Imazhi" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Familja e gërmave" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Madhësia e gërmave" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "I Zi" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "të Pjerrëta" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Nënvizuar" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Shfaq &Rrjetë" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zmadho" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Ruaje Imazhin Si" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Goma" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zmadho" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Hark" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Rresht" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Poligon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Elips" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Drejtkëndësh" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        To configure it, click on the cube.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                        Color Similarity: %1%

                        Click to configure.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                        Color Similarity: Exact Match

                        Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Ndriçimi:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Të Gjitha" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "I Kuq" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "i Gjelbër" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blu" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Parametrat" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "A&ktivizo" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Ngjyrat" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Ngopja:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&E Kuqe" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&E Gjelbër" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blu" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Të Gjitha" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanalet" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                        To change the color of a color cell itself, double-click on it.

                        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                        " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Shikoje" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Një ngjyrësh" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "E tejdukshme" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Rreth" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Katror" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Slash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Backslash" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Opak" + +#~ msgid "None" +#~ msgstr "Asnjë" + +#~ msgid "Overwrite" +#~ msgstr "Mbishkruaje" + +#~ msgid "&Horizontal" +#~ msgstr "&Horizontal" + +#~ msgid "..." +#~ msgstr "..." diff --git a/po/sv/docs/kolourpaint/image_balance.png b/po/sv/docs/kolourpaint/image_balance.png new file mode 100644 index 0000000..ce33d16 Binary files /dev/null and b/po/sv/docs/kolourpaint/image_balance.png differ diff --git a/po/sv/docs/kolourpaint/image_emboss.png b/po/sv/docs/kolourpaint/image_emboss.png new file mode 100644 index 0000000..837c6d8 Binary files /dev/null and b/po/sv/docs/kolourpaint/image_emboss.png differ diff --git a/po/sv/docs/kolourpaint/image_flatten.png b/po/sv/docs/kolourpaint/image_flatten.png new file mode 100644 index 0000000..ab113de Binary files /dev/null and b/po/sv/docs/kolourpaint/image_flatten.png differ diff --git a/po/sv/docs/kolourpaint/image_flip.png b/po/sv/docs/kolourpaint/image_flip.png new file mode 100644 index 0000000..c64f39b Binary files /dev/null and b/po/sv/docs/kolourpaint/image_flip.png differ diff --git a/po/sv/docs/kolourpaint/image_invert.png b/po/sv/docs/kolourpaint/image_invert.png new file mode 100644 index 0000000..4636ae2 Binary files /dev/null and b/po/sv/docs/kolourpaint/image_invert.png differ diff --git a/po/sv/docs/kolourpaint/image_reduce_colors.png b/po/sv/docs/kolourpaint/image_reduce_colors.png new file mode 100644 index 0000000..316b267 Binary files /dev/null and b/po/sv/docs/kolourpaint/image_reduce_colors.png differ diff --git a/po/sv/docs/kolourpaint/image_resize_scale.png b/po/sv/docs/kolourpaint/image_resize_scale.png new file mode 100644 index 0000000..ab7510f Binary files /dev/null and b/po/sv/docs/kolourpaint/image_resize_scale.png differ diff --git a/po/sv/docs/kolourpaint/image_rotate.png b/po/sv/docs/kolourpaint/image_rotate.png new file mode 100644 index 0000000..688be47 Binary files /dev/null and b/po/sv/docs/kolourpaint/image_rotate.png differ diff --git a/po/sv/docs/kolourpaint/image_skew.png b/po/sv/docs/kolourpaint/image_skew.png new file mode 100644 index 0000000..854e949 Binary files /dev/null and b/po/sv/docs/kolourpaint/image_skew.png differ diff --git a/po/sv/docs/kolourpaint/image_soften_sharpen.png b/po/sv/docs/kolourpaint/image_soften_sharpen.png new file mode 100644 index 0000000..089cb8a Binary files /dev/null and b/po/sv/docs/kolourpaint/image_soften_sharpen.png differ diff --git a/po/sv/docs/kolourpaint/index.docbook b/po/sv/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..0b8eea6 --- /dev/null +++ b/po/sv/docs/kolourpaint/index.docbook @@ -0,0 +1,1784 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +Handbok &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; + Stefan Asserhäll
                        stefan.asserhall@bredband.net
                        Översättare
                        +
                        + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +2018-03-23 +Program 18.04 + + +&kolourpaint; är ett fritt, lättanvänt ritprogram av &kde;. + + + +kolourpaint +kdegraphics + + +
                        + + +Inledning +&kolourpaint; är ett fritt, lättanvänt ritprogram av &kde;. Det är perfekt för vardagsuppgifter som: + + + +Rita - rita diagram och fingermålningar + + +Handera skärmbilder - ta och redigera skärmbilder + + +Bildbehandling - redigera foton och hämtade bilder, införa effekter + + +Ikonredigering - rita clipart och logotyper med genomskinlighet + + + + + + + + + + + + + +Använda &kolourpaint; + +Klicka på följande länkar för att utforska &kolourpaint;s möjligheter: + + + +Verktyg + + +Arbeta med färger + + +Visa alternativ + + +Bildeffekter + + + + + +Verktyg + +Ett ytterligare alternativ i menyn Inställningar gör det möjligt att definiera om verktygen ritar med kantdetektering (förval) eller inte. + + +Ta skärmbilder + +En skärmbild är en ögonblicksbild av vad som finns på datorskärmen. Den kan vara användbar för att förklara en viss åtgärd som ska utföras för att erhålla resultatet, eller för att visa ett problem som du har hittat. +För att göra skärmbilder klara att redigera i &kolourpaint;s fönster kan man använda ArkivTa skärmbild i &kolourpaint;s huvudmeny. + + + + + + + +Genom att använda dialogrutan som visas kan man ändra Fördröjning för skärmbild (i sekunder) och välja Dölj huvudfönster när skärmbilden tas. När du är klar att ta skärmbilden, klicka på Ok. Den tagna skärmbilden placeras direkt i &kolourpaint;s redigeringsområde. + + + +Verktygsreferens + +Ett snabbt sätt att välja ett verktyg i &kolourpaint; är att trycka på genvägen med en tangent som hör ihop med det, dokumenterad nedan och med verktygstips i verktygsrutan. Du kan också hålla nere &Alt;&Shift; när du trycker på tangenten, vilket är nödvändigt när du skriver in text (eftersom genvägar med en tangent då är inaktiverade). För att till exempel välja penseln, tryck på &Alt;&Shift;B eller bara B (när du inte skriver in text). + + + Pensel (B) + + Färgsudd (O) + + Färghämtare (C) + + Sammanbundna linjer (N) + + Kurva (V) + + Ellips (E) + + Radera (A) + + Fyll (F) + + Linje (L) + + Penna (P) + + Polygon (G) + + Rektangel (R) + + Rundad rektangel (U) + + Markering (ellips) (I) + + Markering (fri form) (M) + + Markering (rektangulär) (S) + + Sprayburk (Y) + + Text (T) + + + + + +Pensel <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Klicka eller dra med penseln för att rita. + + + + + + + + + + + + + + +Klicka på en av formerna för att välja penselns form. Du kan använda en cirkulär, kvadratisk, snedstrecksformad eller bakstrecksformad pensel. + + + + + + +Vänster musknapp ritar med förgrundsfärgen. Höger musknapp ritar med bakgrundsfärgen. + + + +Färghämtare <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +För att ange förgrundsfärg, vänsterklicka på en bildpunkt. För att ange bakgrundsfärg, högerklicka på en bildpunkt. &kolourpaint; återgår därefter till verktyget som tidigare var valt. + + + + +Sammanbundna linjer och polygon <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra för att rita sammanbundna linjer. Polygonverktyget används på samma sätt, dock förbinds start och slutpunkterna automatiskt för att skapa en polygon. + +Vänster musknapp ritar med förgrundsfärgen. Höger musknapp ritar med bakgrundsfärgen, och byter också färg som polygonen fylls med. + +Du kan ställa in linjebredden. För polygoner kan du också ställa in fyllsättet. + + + + +Kurva <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra för att rita en linje: detta anger start och slutpunkterna. Du kan ange upp till två styrpunkter genom att dra. För att avsluta kurvan utan att använda båda eller någon av styrpunkterna, klicka med andra musknappen. Verktyget ritar en kubisk Bezier-kurva. + +Vänster musknapp ritar med förgrundsfärgen. Höger musknapp ritar med bakgrundsfärgen. + +Du kan också ställa in linjebredden. + + + + +Ellips <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra för att rita en ellips. + +Vänster musknapp ritar med förgrundsfärgen. Höger musknapp ritar med bakgrundsfärgen, och byter också färg som fylls med. + +Du kan också ställa in linjebredden och fyllsättet. + +För ytterligare funktioner, använd väljartangenterna: + + + +Håll nere &Shift; och dra för att rita en cirkel. + + +För att rita en ellips där du väljer mittpunkt, håll nere &Ctrl;, klicka på mittpunkten och dra till ellipsen har rätt storlek och form. + + +För att rita en cirkel där du väljer mittpunkt, håll nere &Ctrl;, &Shift;-klicka på mittpunkten och dra till cirkeln har rätt storlek. + + + + + + +Radering + + +Radera <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra med raderverktyget för att sudda ut misstag. + + +I motsats till andra verktyg, ritar raderverktygen med bakgrundsfärgen. För att rita med förgrundsfärgen, använd höger musknapp. + + +Raderverktyget har bara kvadratiska former. För att rita med andra former såsom cirklar, använd penseln och höger musknapp. + + +Dubbelklicka på raderverktyget för att rensa hela bilden. Det här är samma sak som att använda alternativet Rensa i menyn Bild. + + + + + +Färgsudd <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra för att ersätta bildpunkter av förgrundsfärgen med bakgrundsfärgen. För att ersätta alla bildpunkter som liknar förgrundsfärgen (men inte nödvändigtvis är exakt likadana), som i bilder och foton med gitter, använd en annan inställning av Färglikhet än Exakt. + + +I motsats till andra verktyg, ritar raderverktyget med bakgrundsfärgen. För att ersätta bildpunkter i bakgrundsfärgen med förgrundsfärgen, använd höger musknapp. + + +Du kan ställa in raderverktygets storlek. + + +Dubbelklicka på färgsuddikonen för att använda den för hela bilden. + + + + + + +Fyll <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka för att fylla ett område. För att fylla ett gitterområde, använd en annan inställning av Färglikhet än Exakt. + +Vänster musknapp fyller i förgrundsfärgen. Höger musknapp fyller i bakgrundsfärgen. + + + +Linje <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra för att rita en linje. + +Vänster musknapp ritar med förgrundsfärgen. Höger musknapp ritar med bakgrundsfärgen. + +Du kan också ställa in linjebredden. + + + + + + + + + + + + + + + + + + + + + +Håll nere &Ctrl; för att rita linjer som är vinklade med närmaste multipel av 30 grader. Detta är linjerna i det röda diagrammet. + + +Håll nere &Shift; för att rita linjer som är vinklade med närmaste multipel av 45 grader. Detta är linjerna i det blåa diagrammet. + + +Håll nere &Ctrl; och &Shift; för att rita linjer som är vinklade med närmaste multipel av 30 eller 45 grader. Detta är linjerna i det gröna diagrammet. + + + + + + +Penna <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka för att rita en punkt eller klicka och dra för att rita en linje med frihand. + +Vänster musknapp ritar med förgrundsfärgen. Höger musknapp ritar med bakgrundsfärgen. + + + + +Rektanglar <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra för att rita en rektangel. Den rundade rektangeln är en rektangel med rundade hörn. + +Vänster musknapp ritar med förgrundsfärgen. Höger musknapp ritar med bakgrundsfärgen, och byter också färg som fylls med. + +Du kan också ställa in linjebredden och fyllsättet. + +För ytterligare funktioner, använd väljartangenterna: + + + +Håll nere &Shift; och dra för att rita en kvadrat. + + +För att rita en rektangel där du väljer mittpunkt, håll nere &Ctrl;, klicka på mittpunkten och dra till rektangeln har rätt storlek och form. + + +För att rita en kvadrat där du väljer mittpunkt, håll nere &Ctrl; och &Shift;, klicka på mittpunkten och dra till kvadraten har rätt storlek. + + + + + + +Markeringar <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Använd markeringsverktygen för att ange en markerings kanter. + +För att flytta en markering, klicka och dra i den. Huvudvyn panorerar efter behov för att låta dig flytta markeringen till en del av bilden som för närvarande inte visas. + +Du kan fritt ändra storlek på hela bilden eller använda jämn skalning av markeringen med motsvarande grepp. Håll nere &Shift; vid fri skalning av markeringen för att behålla proportionen. Högerknappen visar en sammanhangsberoende meny med vanliga redigeringskommandon och bildeffekter. + + +Du kan använda piltangenterna medan du ritar markeringens kant eller när du flyttar den. + + +Om du håller nere &Ctrl; innan markeringen flyttas, flyttar du en kopia av den. Markeringen smetas ut om du flyttar den medan du håller nere &Shift;. + + + + + + + + + + + + + +Det finns två markeringslägen: Ogenomskinligt (förvalt) och genomskinligt. Om du använder genomskinligt markeringsläge blir alla bilder i bakgrundsfärgen genomskinliga (subtraktion av bakgrunden). Det låter dig klistra in en markering utan bakgrunden. För att utföra bakgrundssubtraktion på en bild med gitter, använd en annan inställning av Färglikhet än Exakt. + + + + + + +Du kan använda bildeffekter på en markering: se avsnittet Bildeffekter för mer information. + +Det är möjligt att spara markeringen i en fil genom att använda alternativet Kopiera till fil... i markeringens sammanhangsberoende meny eller alternativet RedigeraKopiera till fil... i huvudmenyn. + + + +Sprayburk <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra för att spreja graffiti. Håll nere musknappen för att få en mer koncentrerad spray. + + + + + + + + + + + + + +Klicka på en av kvadraterna för att välja spraystorlek. Du kan välja bland spraystorlekarna 9x9, 17x17 och 29x29. + + + + + + +Vänster musknapp ritar med förgrundsfärgen. Höger musknapp ritar med bakgrundsfärgen. + + + + +Text <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Klicka och dra ett område där text ska skrivas in. Så snart kanten visas kan du börja skriva in texten. Klicka och dra på kanten för att flytta den. Du kan ändra storlek på textrutan genom att dra i greppen eller genom att använda dialogrutan Ändra storlek. + + +Om du har avmarkerat textrutan kan du använda Ångra för att redigera texten igen. + + + +Använda den genomskinliga färgen + + + + + + + + +Den vänstra bilden visar exempelbilden. Den högra bilden visar tillägg av text med en ogenomskinliga förgrunds- och bakgrundsfärger. + + + + + + + + + +Den vänstra bilden visar tillägg av text med en ogenomskinlig förgrundsfärg och en genomskinlig bakgrundsfärg. Den högra bilden visar tillägg av text med en genomskinlig förgrundsfärg och en ogenomskinlig bakgrundsfärg. + + + + +Vanliga verktygsalternativ + + + + + + + + + + + + + +Klicka på en av kvadraterna för att välja raderstorlek. Du kan välja bland kvadrater med sidolängderna 2, 3, 5, 9, 17 och 29 bildpunkter. + +Storleksinställningarna för radering påverkar Raderingsverktygen. + + + + + + + + + + + +Klicka på en av linjerna för att välja linjebredd. Du kan välja bland linjebredderna 1, 2, 3, 5 och 8 bildpunkter. + +Inställningen av linjebredd påverkar verktygen Sammanbundna linjer, Kurva, Ellips, Linje, Polygon, Rektangel och Rundad rektangel. + + + + + + + + + + + +Klicka på en av rektanglarna för att välja fyllstilen. Du kan välja bland Fyll inte, Fyll med bakgrundsfärg och Fyll med förgrundsfärg. Inställningen av fyllstil påverkar verktygen Ellips, Polygon, Rektangel och Rundad rektangel. + + + + + + + + + + +Arbeta med färg + + +Färgrutan + + + + + + + +Färgruta + + + + +Färgrutan har tre huvudväljare: Färgtavlan, färgpaletten och färglikhetsväljaren. + +Färgtavlan visar nuvarande förgrundsfärg som en fyrkant ovanför en annan fyrkant som representerar nuvarande bakgrundsfärg. När du ritar med vänster musknapp används förgrundsfärgen, och när du ritar med höger musknapp används bakgrundsfärgen (utom för Radera). Du kan klicka på dubbelhövdade pilen för att växla förgrunds- och bakgrundsfärg. + +Färgpaletten visar en uppsättning färger som du kan välja bland. Den halvgenomskinliga pyramiden representerar den genomskinliga färgen. Vänsterklicka på en färg för att ange förgrundsfärgen och högerklicka på en färg för att ange bakgrundsfärgen. Du kan också dra och släppa vilken ogenomskinlig färg som helst på färgtavlans kvadrater. Dubbelklicka på en färg i färgtavlan eller paletten för att redigera den. Verktyget Färghämtare låter dig välja en färg från bilden. + +Färglikhet låter dig arbeta effektivare med gitterbilder och foton, på ett sätt som är jämförbart med funktionen trollstav i andra ritprogram. Den gäller genomskinliga markeringar, samt verktygen Fyll, Färgsudd och Beskär automatiskt eller ta bort intern kant. Dubbelklicka på färglikhetsväljaren för att välja hur lika färger måste vara för att anses identiska. När du använder markeringar med genomskinligt läge, blir alla färger i markeringen som liknar bakgrundsfärgen också genomskinliga. + + + + + + + + + +Den vänstra bilden visar exempelbilden. Den högra bilden demonstrerar användning av fyllverktyget, med färglikhetsinställningarna 5 %, 15 % och 30 %. I exemplet, med färglikhetsinställningen Exakt, skulle fyll vid (80, 100) bara fylla en bildpunkt, eftersom omkringliggande bildpunkter är liknande men inte identiska. När färglikheten ökas, anses fler bildpunkter som har liknande färg vara identiska, och därför utökas fyllningen ytterligare. + + + + + +Visningsalternativ + + +Visningsalternativreferens + +Zooma och ta med rutnätet +Miniatyrbild + + + + +Zooma och ta med rutnätet +Öka zoomnivån för att redigera bilder med större noggrannhet, eller minska den för att se mer av bilden. + + +Med zoomnivåer som inte är multipler av 100 % kan delar av bilden verka flytta sig när användaren arbetar med den. Andra mindre störningar i omritningen kan också uppstå med sådana zoomnivåer. + + +Vid zoomnivån 400 % eller större som också är multipler av 100 % kan du Visa rutnät för att noggrannare redigera enskilda bildpunkter. + + + + + + + + + + + + + + + +Den första bilden visar ikonen för verktyget Text, medan den följande visar den vid 600 % zoomning med rutnätet aktiverat. + + +Ett annat sätt att zooma när du inte ritar är att rulla med mushjulet medan du håller nere &Ctrl;. + + + + + +Miniatyrbild + + + + + + + +Om Miniatyrbildsläge med zoom är markerat, visas hela bilden skalad efter behov för att passa i miniatyrbildsfönstret (bilden överst till höger). +Annars visar miniatyrbilden så mycket som möjligt av bilden, med början i huvudvyns vänstra övre hörn (bild längst ner till höger). + + + + + +Bildeffekter + + +Bildeffektreferens +Beskär automatiskt eller ta bort intern kant +Balans +Rensa +Relief +Utjämna +Vänd (upp-och-ner) +Invertera +Reducera färger +Reducera till gråskala +Reducera till enfärgat (med gitter) +Spegla (horisontellt) +Ändra storlek eller skala +Rotera +Ställ in som bild (beskär) +Skjuva +Skärpa och oskärpa +Fler effekter +Anmärkningar + + + +Beskär automatiskt eller ta bort intern kant + +Det här tar automatiskt bor kanten på en bild eller markering. Använd automatisk beskärning om du har en figur som inte helt fyller bilden och du vill ta bort överflödig tomt utrymme. För att beskära en bild som har en bildkant med gitter, måste du också använda Färglikhet. + + + + +Balans + +Den här funktionen är tillgänglig i dialogrutan Fler effekter. + + + + + + + + +Den låter dig ställa in bildens eller markeringens ljusstyrka, kontrast och gammavärde. + + +Det vanligare måttet på gammavärdet (ett decimalt värde från 0,10 till 10,00) visas mellan inställningsrutan Gamma och knappen Återställ. + + + + +Rensa + +Detta fyller i hela bilden eller markeringen med bakgrundsfärgen. + + +Dubbelklicka på ikonen Radera för att rensa hela bilden. + + + + + +Relief + +Den här funktionen är tillgänglig i dialogrutan Fler effekter. + + + + + + + + +Markera Aktivera för att verkställa reliefeffekten. Den markerar kanterna och ger bilden eller markeringen ett "graverat" utseende. + + + +Utjämna + +Den här funktionen är tillgänglig i dialogrutan Fler effekter. + + + + + + + + +Detta färgar om bilden med olika nyanser av de två valda färgerna. + + + +Vänd (upp-och-ner) + +Detta vänder hela bilden eller markeringen vertikalt. + + + + +Invertera + +Den här funktionen är tillgänglig i dialogrutan Fler effekter. + + + + + + + + +Detta låter dig invertera en eller flera RGB-kanaler i bilden eller markeringen. Använd Alla för att göra om ett foto till ett negativ och vice versa. I allmänhet ser det ganska konstigt ut. + + +För att snabbt invertera alla kanaler, behöver du inte använda dialogrutan. Du kan istället välja alternativet Invertera färger i menyn Bild eller Markering. Alternativet i Markering visas bara i menyraden om du använder ett av markeringsverktygen. Dessutom kan åtgärden nås från den sammanhangsberoende menyn som visas med ett högerklick i bildområdet. + + + + + +Spegla (horisontellt) + +Detta speglar hela bilden eller markeringen horisontellt. + + + + +Reducera färger + +Den här funktionen är tillgänglig i dialogrutan Fler effekter. + + + + + + + + +Detta reducerar antal färger som används av bilden eller markeringen, med eller utan gitter. + +Att använda gitter ger resultat med bättre kvalitet, men du kan dock vilja låta bli att använda det för artistiska effekter, t.ex. ger användning av Svartvit istället för Svartvit (med gitter) en siluetteffekt. + +En annan viktig skillnad är att medan Svartvit (med gitter) alltid reducerar hela bilden eller markeringen till svartvit, gör Svartvit det bara om bilden eller markeringen innehåller mer än två färger. + + +För att snabbt skapa en svartvit bild eller markering med gitter, använd alternativet Reducera till svarvit (med gitter) i menyn Bild eller Markering. Alternativet i Markering visas bara i menyraden om du använder ett av markeringsverktygen. Dessutom kan åtgärden nås från den sammanhangsberoende menyn som visas med ett högerklick i bildområdet. + + + +Att ändra antal färger här har ingen betydelse för filformatets färgdjup. Om du vill ändra färgdjupet, ska du välja det i dialogrutor för att spara filer. Observera att, förvirrande nog, ändras också antal färger när färgdjupet ändras. + + + + +Reducera till gråskala + +Det här reducerar hela bilden eller markeringen till gråskala. + + + + +Reducera till svartvit (med gitter) + +Det här reducerar hela bilden eller markeringen till svartvitt. + + +Om du inte vill att bilden eller markeringen ska ändras med användning av gitter, använd dialogrutan Reducera färger. + + + + +Ändra storlek eller skala + + + + + + + + + +Att ändra bildens storlek ändrar dess dimensioner om inte en transformering utförs på det befintliga innehållet. Skalas bilden sträcks det befintliga innehållet till de nya dimensionerna. Jämn skalning ger i allmänhet ett resultat med bättre kvalitet än Skala, genom att blanda angränsande färger. + +Du kan uttrycka de nya dimensionerna i bildpunkter, eller som procent av ursprunglig storlek. Om du väljer Behåll proportion, skalas bredd och höjd med samma procenttal. + + +Du kan fritt ändra storlek på hela bilden eller använda jämn skalning av markeringen med motsvarande grepp. + + + +Skalning stöds bara för markeringar, och storleksändring stöds bara för textrutor. Se Anmärkningar för ytterligare detaljinformation om hur effekterna används. + + + + +Rotera + + + + + + + + + +Detta roterar bilden. Du kan ange vinkel och rotationens riktning. + + +Du kan vända rotationens riktning genom att ange en negativ egen vinkel. + + + +Se Anmärkningar för detaljinformation om hur effekten används för en markering. + + + + +Ställ in som bild (beskär) + +Detta ändrar bilden till markeringen. + + +Det är bara tillgängligt när du har en aktiv markering. + + + + +Skjuva + + + + + + + + + +Detta skjuvar hela bilden eller markeringen horisontellt och/eller vertikalt. + + +Se Anmärkningar för detaljinformation om hur effekten används för en markering. + + + + +Skärpa och oskärpa + +Den här funktionen är tillgänglig i dialogrutan Fler effekter. + + + + + + + + +Använd den här effekten för att göra bilden skarpare eller oskarpare. + + + + +Fler effekter + +Dialogrutan innehåller funktionerna Balans, Relief, Utjämna, Invertera, Reducera färger och Skärpa och oskärpa + + + +Anmärkningar + +Ändra storlek eller skala, Rotera och Skjuva kan ändra bildens dimensioner. Du kan se de nya dimensionerna i dialogrutan. + +Om du använder effekterna för en bild, ändras storlek om det behövs. Om du istället använder effekterna för en markering, ändras inte bildens storlek, även om den transformerade markeringen inte får plats. + + + + + + + + + +Den vänstra bilden har roterats 30 grader medurs för att skapa den högra bilden. &kolourpaint; har automatiskt förstorat bilden för att omfatta det större innehållet. + + + + + + + + + +Den vänstra markeringen har roterats 30 grader medurs för att skapa den högra markeringen. Bildstorleken har förblivit samma, därför syns inte delar av markeringen utan att ändra storlek på bilden. + + + + + +Tack till och licens + +Carl Tucker +Det kanske inte är koncis dokumentation, det kanske inte är fullständig dokumentation, men det är ärlig dokumentation. + + +&kolourpaint; +Program Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +&kolourpaint;-specifika ikoner Copyright © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Dokumentation och ytterligare grafik för dokumentation Copyright © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail;. + +Delar reproducerade med tillåtelse från . + +Översättning Stefan Asserhäll stefan.asserhall@bredband.net &underFDL; Detta program licensieras enligt följande: + +Copyright © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; +
                        + + diff --git a/po/sv/docs/kolourpaint/view_thumbnails.png b/po/sv/docs/kolourpaint/view_thumbnails.png new file mode 100644 index 0000000..a751e7a Binary files /dev/null and b/po/sv/docs/kolourpaint/view_thumbnails.png differ diff --git a/po/sv/kolourpaint.po b/po/sv/kolourpaint.po new file mode 100644 index 0000000..0f06595 --- /dev/null +++ b/po/sv/kolourpaint.po @@ -0,0 +1,3000 @@ +# translation of kolourpaint.po to Swedish +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. +# +# Stefan Asserhäll , 2004, 2005, 2007, 2008, 2009. +# Mattias Newzella , 2004. +# Stefan Asserhall , 2005, 2011, 2012, 2015, 2016, 2017, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-04 09:38+0200\n" +"Last-Translator: Stefan Asserhäll \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.08.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Stefan Asserhäll" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "stefan.asserhall@bredband.net" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Balans" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Oskärpa" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Skärpa" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Rensa" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Markering: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Relief" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Utjämna" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Reducera till gråskala" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Färgton, färgmättnad, värde" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Invertera färger" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Invertera" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Reducera till svartvit (med gitter)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Reducera till svartvit" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Reducera till 256 färger (med gitter)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Reducera till 256 färger" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Histogramkorrigering" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Vänd" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Vänd horisontellt och vertikalt" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Vänd horisontellt" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Vänd vertikalt" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Text: Ändra storlek på ruta" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Markering: Skalning" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Markering: Jämn skalning" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Ändra storlek" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Skala" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Jämn skalning" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Rotera" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Skjuva" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "Å&ngra: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "Å&ngra" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Gör om: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "Gö&r om" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Ångra: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Ångra" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Gör om: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Gör om" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 ytterligare objekt" +msgstr[1] "%1 ytterligare objekt" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Färghämtare" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Fyll" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Fler bildeffekter (urval)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Fler bildeffekter" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Effekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Reducera färger" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Skärpa och oskärpa" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Dokumentegenskaper" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Punkter per tum (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Inte specificerat" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Horisontell:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Vertikal:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                        " +msgstr "" +"

                        Punkter per tum (DPI) anger antal bildpunkter i bilden som ska " +"skrivas ut på en tum (2,54 cm).

                        Ju högre bildens DPI är, desto mindre " +"blir den utskrivna bilden. Observera att en utskrift troligen inte får " +"bättre kvalitet om du ökar det till mer än 300 eller 600 DPI, beroende på " +"skrivare.

                        Om du vill skriva ut bilden så att den har samma storlek som " +"den visas på skärmen, ställ in bildens DPI-värde till samma som bildskärmen " +"har.

                        Om något DPI-värde anges som Inte specificerat, skrivs " +"också bilden ut med samma storlek som på bildskärmen.

                        Alla bildformat " +"stöder inte DPI-värden. Om formatet du sparar med inte stöder dem, sparas de " +"inte.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "&Position" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                        The Offset is the relative position where this image should be " +"placed, compared to other images.

                        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                        " +msgstr "" +"

                        Position är den relativa positionen där bilden ska placeras, " +"jämfört med andra bilder.

                        Alla bildformat stöder inte " +"funktionenPosition. Om formatet du sparar med inte stöder den, sparas " +"inte de värden som anges här.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Textfält" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Lägg till rad" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Ta bort rad" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "Åte&rställ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                        " +msgstr "" +"

                        Textfält tillhandahåller ytterligare information om bilden. " +"Det är troligen ett kommentarområde där du fritt kan skriva vilken text som " +"helst.

                        Det är dock formatspecifikt, så fälten kan teoretiskt vara " +"information som tolkas av datorn, som du inte ska ändra, men det är mindre " +"troligt.

                        Alla bildformat stöder inte Textfält. Om formatet du " +"sparar med inte stöder dem, sparas de inte.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Nyckel" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Värde" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Textvärdet \"%1\" på rad %2 kräver en nyckel." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Alla textnycklar måste vara unika. Textnycklarna \"%1\" på raderna %2 och %3 " +"är identiska." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Ogiltiga textfält" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Dimensioner" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Original:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Förhandsgranskning" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Upp&datera" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Ändra storlek eller skala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "Å&tgärd:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Hela bilden" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Markering" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Textruta" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Åtgärd" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                        " +msgstr "" +"
                        • Ändra storlek: Bildens storlek ökas genom att skapa nya " +"områden till höger och/eller längst ner (fyllda med bakgrundsfärgen) eller " +"minska den genom att klippa det till höger och/eller längst ner.
                        • Skala: Bilden expanderas genom att duplicera bildpunkter eller " +"dras ihop genom att slänga bildpunkter.
                        • Jämn skalning: Samma " +"sak som Skala utom att det blandar intilliggande bildpunkter för att " +"skapa en bild som ser jämnare ut.
                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Ändra storlek" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Skala" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Jä&mn skalning" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Bredd:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Höjd:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Ny:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Procent:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "&Behåll proportion" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to resize the text box?

                        " +msgstr "" +"

                        Att ändra storlek på textrutan till %1 x %2 kan behöva en väsentlig " +"mängd minne. Det kan reducera systemets svarstider och orsaka resursproblem " +"för andra program.

                        Är du säker på att du vill ändra storlek på " +"textrutan?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Ändra storlek på textruta?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Ändra storlek på t&extruta" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to resize the image?

                        " +msgstr "" +"

                        Att ändra storlek på bilden till %1 x %2 kan behöva en väsentlig " +"mängd minne. Det kan reducera systemets svarstider och orsaka resursproblem " +"för andra program.

                        Är du säker på att du vill ändra storlek på bilden?" +"

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Ändra bildstorlek?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Ä&ndra bildstorlek" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to scale the image?

                        " +msgstr "" +"

                        Att skala bilden till %1 x %2 kan behöva en väsentlig mängd minne. " +"Det kan reducera systemets svarstider och orsaka resursproblem för andra " +"program.

                        Är du säker på att du vill skala bilden?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Skala bild?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "S&kala bild" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to scale the selection?

                        " +msgstr "" +"

                        Att skala markeringen till %1 x %2 kan behöva en väsentlig mängd " +"minne. Det kan reducera systemets svarstider och orsaka resursproblem för " +"andra program.

                        Är du säker på att du vill skala markeringen?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Skala markering?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Skala mark&ering" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the image?" +msgstr "" +"

                        Att utföra jämn skalning av bilden till %1 x %2 kan behöva en " +"väsentlig mängd minne. Det kan reducera systemets svarstider och orsaka " +"resursproblem för andra program.

                        Är du säker på att du vill utföra " +"jämn skalning av bilden?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Utför jämn skalning av bilden?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Jämn s&kalning av bild" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the selection?" +"

                        " +msgstr "" +"

                        Att utföra jämn skalning av markeringen till %1 x %2 kan behöva en " +"väsentlig mängd minne. Det kan reducera systemets svarstider och orsaka " +"resursproblem för andra program.

                        Är du säker på att du vill utföra " +"jämn skalning av markeringen?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Utför jämn skalning av markeringen?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Jämn s&kalning av markering" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Rotera markering" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Rotera bild" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Efter rotation:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Riktning" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Moturs" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "M&edurs" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Vinkel" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "&90 grader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "&180 grader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "&270 grader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "E&gen:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "grader" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to rotate the selection?

                        " +msgstr "" +"

                        Att rotera markeringen till %1 x %2 kan behöva en väsentlig mängd " +"minne. Det kan reducera systemets svarstider och orsaka resursproblem för " +"andra program.

                        Är du säker på att du vill rotera markeringen?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Rotera markeringen?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Rot&era markering" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to rotate the image?

                        " +msgstr "" +"

                        Att rotera bilden till %1 x %2 kan behöva en väsentlig mängd minne. " +"Det kan reducera systemets svarstider och orsaka resursproblem för andra " +"program.

                        Är du säker på att du vill rotera bilden?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Rotera bilden?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Rot&era bild" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Skjuva markering" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Skjuva bild" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Efter skjuvning:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Horisontell:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Vertikal:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to skew the selection?

                        " +msgstr "" +"

                        Att skjuva markeringen till %1 x %2 kan behöva en väsentlig mängd " +"minne. Det kan reducera systemets svarstider och orsaka resursproblem för " +"andra program.

                        Är du säker på att du vill skjuva markeringen?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Skjuva markeringen?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "S&kjuva markering" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to skew the image?

                        " +msgstr "" +"

                        Att skjuva bilden till %1 x %2 kan behöva en väsentlig mängd minne. " +"Det kan reducera systemets svarstider och orsaka resursproblem för andra " +"program.

                        Är du säker på att du vill skjuva bilden?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Skjuva bilden?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "S&kjuva bild" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Färglikhet" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB-färgkubsavstånd" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Exakt" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Vad är färglikhet?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Spara förhandsgranskning" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "1 byte (ungefär %2 %)" +msgstr[1] "%1 byte (ungefär %2 %)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Kunde inte öppna \"%1\"." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Kunde inte öppna \"%1\" - bildformatet stöds inte.\n" +"Filen kan vara skadad." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Kunde inte spara bild - otillräcklig information." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Webbadress: %1\n" +"MIME-typ: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Internt fel" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                        The %1 format may not be able to preserve all of the image's " +"color information.

                        Are you sure you want to save in this format?

                        " +msgstr "" +"

                        Formatet %1 kanske inte kan bevara bildens hela " +"färginformation.

                        Är du säker på att du vill spara med det här formatet?" +"

                        " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Filformat med förlust" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                        Are " +"you sure you want to save at this color depth?

                        " +msgstr "" +"

                        Att spara bilden med det grunda färgdjupet %1 bitar kan resultera i " +"förlust av färginformation. All genomskinlighet tas också bort.

                        Är du " +"säker på att du vill spara med det här färgdjupet?

                        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Grunt färgdjup" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Kunde inte spara bild - tillfällig fil kunde inte skapas." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Kunde inte spara som \"%1\": %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Fel när bild skulle sparas" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Kunde inte spara bild - uppladdning misslyckades." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Ta b&ort inre kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Ta bort inre kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "&Beskär automatiskt" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Beskär automatiskt" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"Kolourpaint kan inte ta bort markeringens inre kant, eftersom den inte kan " +"hittas." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Kan inte ta bort inre kant" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"Kolourpaint kan inte beskära bilden automatiskt, eftersom dess kant inte " +"kunde hittas." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Kan inte beskära automatiskt" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Ange som bild" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Markering: Skapa" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "Kolourpaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Ritprogram av KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Projektgrundare" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Huvudforskare" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Stöd för bildläsare, stöd för alfa, nuvarande underhåll" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ikoner" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Stöd för inmatningsmetod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Bildeffekter" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Anpassning till KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Konvertering till KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Tack till alla de som har hjälpt till att göra programmet möjligt." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Bildfiler att öppna, valfria" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Lista MIME-typer för alla läsbara bilder" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&Visa" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Bild" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Färger" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Huvudverktygsrad" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Textverktygsrad" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Markeringsverktygets högerklicksmeny" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "&Redigera" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Miniatyrbild" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Dra greppet med vänster musknapp för att ändra storlek på bilden." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Ändra storlek på bild: Släpp alla musknappar." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Ändra storlek på bild: Högerklicka för att avbryta." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Text" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Kunde inte öppna färgpaletten \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Kunde inte öppna färgpaletten \"%1\" - formatet stöds inte.\n" +"Filen kan vara skadad." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Kunde inte öppna KDE:s färgpalett \"%1\"." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Kunde inte spara färgpaletten som \"%1\"." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Namnlös" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Använd standardvärden för Kolourpaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Använd KDE:s" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "Ö&ppna..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Å&terställ" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Spara" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Spara s&om..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Lägg till rad" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Ta bort sista raden" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Färgruta" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Färgpaletten \"%1\" har ändrats.\n" +"Vill du spara det?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE:s färgpalett \"%1\" har ändrats.\n" +"Vill du spara den i en fil?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Förvald färgpalett har ändrats.\n" +"Vill du spara den i en fil?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Öppna färgpalett" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Färgpaletten \"%1\" har ändrats.\n" +"Att återställa den gör att alla ändringar sedan\n" +"du senast sparade går förlorade. Är du säker?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Upp&datera" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE:s färgpalett \"%1\" har ändrats.\n" +"Att uppdatera gör att alla ändringar går förlorade.\n" +"Är du säker?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Förvald färgpalett har ändrats.\n" +"Att uppdatera gör att alla ändringar går förlorade.\n" +"Är du säker?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Spara färgpalett som" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Klistra in i n&ytt fönster" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Ta &bort markering" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "&Kopiera till fil..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Klistra in &från fil..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Text: Skapa ruta" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Text: Klistra in" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"Kolourpaint kan inte klistra in innehållet på klippbordet eftersom det " +"har ett okänt format." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Kan inte klistra in" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Text: Ta bort ruta" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Markering: Ta bort" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Text: Avsluta" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Markering: Avmarkera" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Kopiera till fil" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Klistra in från fil" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "E&xportera..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Sök..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Ta skärmbild" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Egenskaper" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "&Återställ" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Alla filer som stöds (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Öppna bild" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Misslyckades öppna bildinläsningsdialogruta." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Bildinläsning misslyckades." + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Fördröjning för skärmbild" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " sekund" +msgstr[1] " sekunder" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Ingen fördröjning" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Dölj huvudfönster" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Dokumentegenskaper" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Spara bild som" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Exportera" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Dokumentet \"%1\" har ändrats.\n" +"Att återställa det gör att alla ändringar sedan\n" +"du senast sparade går förlorade. Är du säker?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Dokumentet \"%1\" har ändrats.\n" +"Att återställa gör att alla ändringar går förlorade.\n" +"Är du säker?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Skriv ut bild" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Du måste spara bilden innan den skickas.\n" +"Vill du spara den?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Dokumentet \"%1\" har ändrats.\n" +"Vill du spara det?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "&Ändra storlek eller skala..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "&Ange som bild (beskär)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "&Vänd (upp-och-ner)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Spegla (horisontellt)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Rotera..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Rotera åt &vänster" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Rotera åt &höger" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Sk&juva..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Reducera &till svartvit (med gitter)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Reducera till &gråskala" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Invertera färger" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "R&ensa" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Gör konfidentiell" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Fler effekter..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "B&ild" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Marker&ing" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Visa s&ökväg" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Rita med kantutjämning" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 bitar" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1 %" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Teckensnittsfamilj" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Teckenstorlek" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Fet" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Kursivstil" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Understruken" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Överstruken" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Föregående verktygsalternativ (grupp nummer 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Nästa verktygsalternativ (grupp nummer 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Föregående verktygsalternativ (grupp nummer 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Nästa verktygsalternativ (grupp nummer 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Rita ogenomskinligt" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Rita med färglikhet..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Verktygsruta" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Visa rut&nät" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Visa &miniatyrbild" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Miniatyrbildsläge med zoom" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Aktivera miniatyrbilds&rektangel" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Zooma" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Hämta bild" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Misslyckades öppna den valda bildläsaren." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Pensel" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Rita med penslar av olika former och storlekar" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Klicka för att rita punkter eller dra för att rita streck." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Färgsudd" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Ersätter bildpunkter i förgrundsfärg med bakgrundsfärg" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Klicka eller dra för att sudda bildpunkter med förgrundsfärgen." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Radera" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Låter dig radera misstag" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Klicka eller dra för att sudda." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Släpp alla musknappar." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Penna" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Ritar punkter och streck på fri hand" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Sprayburk" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Sprayar graffiti" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Klicka eller dra för att spraya graffiti." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Högerklicka för att avbryta." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Vänsterklicka för att avbryta." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Låter dig välja en färg från bilden" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Klicka för att välja en färg." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Fyller i områden i bilden" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Klicka för att fylla i ett område." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Zooma" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Zoomar in och ut i bilden" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Klicka för att zooma in eller ut, eller dra åt vänster för att zooma in på " +"ett angivet område." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Kurva" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Ritar kurvor" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Dra ut start och slutpunkter." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Dra med vänsterknapp för att ange första styrpunkten eller högerklicka för " +"att avsluta." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Dra med högerknapp för att ange första styrpunkten eller vänsterklicka för " +"att avsluta." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Dra med vänsterknapp för att ange sista styrpunkten eller högerklicka för " +"att avsluta." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Dra med högerknapp för att ange sista styrpunkten eller vänsterklicka för " +"att avsluta." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Linje" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Ritar linjer" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Dra för att rita." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Polygon" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Ritar polygoner" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Dra för att rita första linjen." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Dra en annan linje med vänsterknapp eller högerklicka för att avsluta." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Dra en annan linje med högerknapp eller vänsterklicka för att avsluta." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Sammanbundna linjer" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Ritar sammanbundna linjer" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Ellips" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Ritar ellipser och cirklar" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Rektangel" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Ritar rektanglar och fyrkanter" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Rundad rektangel" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Ritar rektanglar och fyrkanter med rundade hörn" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Dra med vänsterknapp för att skapa en markering." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Dra med vänsterknapp för att flytta markeringen." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Dra med vänsterknapp för att ändra skala på markeringen." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Markering: Ogenomskinlig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Markering: Genomskinlig" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Markering: Genomskinlig färg" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Markering: Genomskinlig färglikhet" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Markering (ellips)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Skapar en elliptisk eller cirkulär markering" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Markering (fri form)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Gör en friformsmarkering" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Markering (rektangulär)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Gör en rektangulär markering" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Markering: Flytta" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Utsmeta" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Skriver text" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Text: Baksteg" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Text: Ta bort" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Text: Ny rad" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Text: Skriv" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Dra med vänsterknapp för att skapa en textruta." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Dra med vänsterknapp för att flytta textrutan." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Text: Flytta ruta" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Dra med vänsterknapp för att ändra textrutans storlek." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Vänsterklicka för att ändra markörens position." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Text: Ogenomskinlig bakgrund" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Text: Genomskinlig bakgrund" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Text: Byt färger" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Text: Förgrundsfärg" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Text: Bakgrundsfärg" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Text: Teckensnitt" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Text: Teckenstorlek" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Text: Fetstil" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Text: Kursivstil" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Text: Understruken" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Text: Överstruken" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Ingen zoom - Miniatyrbild" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1 % - Miniatyrbild" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        To configure it, click on the cube.

                        " +msgstr "" +"

                        Färglikhet är hur lika färger i olika bildpunkter måste " +"vara för att åtgärder ska anse att de är likadana.

                        Om du ställer in " +"den till något annat än Exakt, kan du arbeta effektivare med " +"gitterbilder och fotografier, på ett sätt som påminner om \"trollstaven\" i " +"andra ritprogram.

                        Funktionen påverkar:

                        • Markeringar: " +"I genomskinligt läge blir alla färger i markeringen som liknar " +"bakgrundsfärgen genomskinliga.
                        • Fyll: För områden med " +"liknande men inte identiska bildpunkter, fyller ett högre värde " +"troligen i flera bildpunkter.
                        • Färgsudd: Alla bildpunkter som " +"har en färg som liknar förgrundsfärgen ersätts med bakgrundsfärgen.
                        • Beskär automatiskt och Ta bort inre kant: För kanter " +"med liknande men inte identiska bildpunkter, beskär ett högre värde " +"troligen hela kanten.

                        Högre inställningar betyder att verktygen " +"anser att ett större färgintervall är tillräckligt liknande för att " +"anses nog lika. Därför ska du öka inställningen om verktygen ovan inte " +"påverkar bildpunkter vars färger du anser vara lika nog.

                        Om den har " +"för stor effekt och ändrar bildpunkter vars färger du inte anser vara " +"liknande (t.ex. om Fyll ändrar för många bildpunkter), ska du minska " +"inställningen.

                        För att anpassa den, klicka på kuben.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        " +msgstr "" +"

                        Färglikhet är hur lika färger i olika bildpunkter måste " +"vara för att åtgärder ska anse att de är likadana.

                        Om du ställer in " +"den till något annat än Exakt, kan du arbeta effektivare med " +"gitterbilder och fotografier, på ett sätt som påminner om \"trollstaven\" i " +"andra ritprogram.

                        Funktionen påverkar:

                        • Markeringar: " +"I genomskinligt läge blir alla färger i markeringen som liknar " +"bakgrundsfärgen genomskinliga.
                        • Fyll: För områden med " +"liknande men inte identiska bildpunkter, fyller ett högre värde " +"troligen i flera bildpunkter.
                        • Färgsudd: Alla bildpunkter som " +"har en färg som liknar förgrundsfärgen ersätts med bakgrundsfärgen.
                        • Beskär automatiskt och Ta bort inre kant: För kanter " +"med liknande men inte identiska bildpunkter, beskär ett högre värde " +"troligen hela kanten.

                        Högre inställningar betyder att verktygen " +"anser att ett större färgintervall är tillräckligt liknande för att " +"anses nog lika. Därför ska du öka inställningen om verktygen ovan inte " +"påverkar bildpunkter vars färger du anser vara lika nog.

                        Om den dock " +"har för stor effekt och ändrar bildpunkter vars färger du inte anser vara " +"liknande (t.ex. om Fyll ändrar för många bildpunkter), ska du minska " +"inställningen.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                        Color Similarity: %1%

                        Click to configure.

                        " +msgstr "

                        Färglikhet: %1 %

                        Klicka för att anpassa.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                        Color Similarity: Exact Match

                        Click to configure." +msgstr "" +"

                        Färglikhet: Exakt

                        Klicka för att anpassa.

                        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Ljusstyrka:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Åter&ställ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ko&ntrast:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gamma:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Å&terställ" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Kanaler:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Alla" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Röd" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Grön" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Blå" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "&Återställ alla värden" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Inställningar" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Mängd:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "A&ktivera" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Färger" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Färgton:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Färgmättnad:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Värde:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Röd" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Grön" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Blå" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Alla" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanaler" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Svartvit" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "S&vartvit (med gitter)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &färger" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 fä&rger (med gitter)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bitars färg" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Reducera till" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Kornighet:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                        To change the color of a color cell itself, double-click on it.

                        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                        " +msgstr "" +"

                        Vänsterklicka på en ifylld färgcell för att välja förgrundsfärg som " +"verktygen använder för att rita. Högerklicka istället för att välja " +"bakgrundsfärg.

                        Dubbelklicka på färgcellen för att ändra färg på själva " +"cellen.

                        Du kan också byta färg på en ifylld cell och vilken annan cell " +"som helst med drag och släpp. Om du håller nere Ctrl-tangenten, " +"skrivs cellen du släpper på över istället för att bytas med cellen du drar " +"från.

                        " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Konvertera &till:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Kvali&tet:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Förhandsgranskning" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Svartvit" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Svartvit (med gitter)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 färger" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 färger (med gitter)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-bitars färg" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Bil&dposition" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Mitt på sidan" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "&Längst upp till vänster på sidan" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Genomskinlig" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Standardvärden för Kolourpaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Färger: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Färger: %1 [ändrade]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Cirkel" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kvadrat" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Snedstreck" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Bakstreck" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Fyll inte" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Fyll med bakgrundsfärg" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Fyll med förgrundsfärg" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Ogenomskinlig" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Ett dokument som heter \"%1\" finns redan.\n" +#~ "Vill du skriva över det?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "En färgpalett som heter \"%1\" finns redan.\n" +#~ "Vill du skriva över det?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Att välja zoomnivå som inte är en multipel av 100 % orsakar inexakt " +#~ "redigering och problem med omritning.\n" +#~ "Vill du verkligen välja zoomnivån %1 %?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Välj zoomnivå %1 %" + +#~ msgid "None" +#~ msgstr "Ingen" + +#~ msgid "" +#~ "

                        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                        Are you sure want to resize the image?

                        " +#~ msgstr "" +#~ "

                        Att ändra storlek på bilden till %1 x %2 kan behöva en väsentlig " +#~ "mängd minne. Det kan reducera systemets svarstider och orsaka " +#~ "resursproblem för program.

                        Är du säker på att du vill ändra storlek " +#~ "på bilden?

                        " + +#~ msgid "Overwrite" +#~ msgstr "Skriv över" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Kunde inte öppna \"%1\" - okänd MIME-typ." + +#~ msgid "Save Preview" +#~ msgstr "Spara förhandsgranskning" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Besök webbplatsen för att få support." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Något insticksprogram som tillhandahåller bildläsarens dialogruta " +#~ "hittades inte.\n" +#~ "Det betyder oftast att paketet som tillhandahåller ksaneplugin inte är " +#~ "installerat." + +#~ msgid "No Scanning Support" +#~ msgstr "Inget stöd för bildläsare" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Stöd för bildläsare är inte installerat." + +#~ msgid "" +#~ "

                        KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

                        This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

                        " +#~ msgstr "" +#~ "

                        Kolourpaint kan inte klistra in innehållet på klippbordet, " +#~ "eftersom data oväntat försvann.

                        Det sker vanligtvis om programmet " +#~ "som var ansvarigt för klippbordets innehåll har avslutats.

                        " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Fånga &skärmbilder" + +#~ msgid "" +#~ "

                        To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

                        You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

                        Alternatively, you may try the application KSnapshot.

                        " +#~ msgstr "" +#~ "

                        För att spara en skärmbild, tryck på %1. Skärmbilden läggs på " +#~ "klippbordet, och du kan klistra in den i Kolourpaint.

                        Du kan " +#~ "ställa in genvägen Skärmbild av skrivbord i modulen Snabbtangenter i KDE:s " +#~ "systeminställningar.

                        Som ett alternativ kan du prova programmet Ksnapshot.

                        " + +#~ msgid "" +#~ "

                        You do not appear to be running KDE.

                        Once you have loaded KDE:" +#~ "

                        To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

                        Alternatively, you may try the " +#~ "application KSnapshot.

                        " +#~ msgstr "" +#~ "

                        Det verkar inte som du kör KDE.

                        När du väl har laddat KDE:" +#~ "

                        För att fånga en skärmbild, tryck på %1. " +#~ "Skärmbilden läggs på klippbordet, och du kan klistra in den i Kolourpaint." +#~ "

                        Som ett alternativ kan du prova programmet Ksnapshot.

                        " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Använd som skrivbordsunderlägg (¢rerat)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Använd som skrivbordsunderlägg (sida &vid sida)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Innan den här bilden kan användas som skrivbordsunderlägg, måste du spara " +#~ "den som en lokal fil.\n" +#~ "Vill du spara den?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Innan den här bilden kan användas som skrivbordsunderlägg, måste du spara " +#~ "den.\n" +#~ "Vill du spara den?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Kunde inte byta skrivbordsunderlägg." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Vänd markering" + +#~ msgid "Flip Image" +#~ msgstr "Vänd bild" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Vertikalt (upp-och-ner)" + +#~ msgid "&Horizontal" +#~ msgstr "&Horisontellt" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Förlust av färg- och genomskinlighetsinformation" + +#~ msgid "Loss of Color Information" +#~ msgstr "Förlust av färginformation" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Förlust av genomskinlighetsinformation" + +#~ msgid "" +#~ "

                        KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

                        To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

                        " +#~ msgstr "" +#~ "

                        Kolourpaint stöder inte det nuvarande skärmdjupet %1 bitar per " +#~ "bildpunkt. Kolourpaint försöker starta, men kan bete sig otillförlitligt." +#~ "

                        För att undvika problemet, ändra skärmdjup till 24 bitar per " +#~ "bildpunkt och starta därefter om Kolourpaint.

                        " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Skärmläge som inte stöds" + +#~ msgid "" +#~ "

                        This effect does not support the current screen depth of %1bpp.

                        To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

                        " +#~ msgstr "" +#~ "

                        Effekten stöder inte det nuvarande skärmdjupet %1 bitar per " +#~ "bildpunkt.

                        För att undvika problemet, ändra skärmdjup till 24 bitar " +#~ "per bildpunkt och starta därefter om Kolourpaint.

                        " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Kunde inte läsa in - slut på grafikminne." + +#~ msgid "Cannot Scan" +#~ msgstr "Kan inte läsa in" + +#~ msgid "&Flip..." +#~ msgstr "&Vänd..." + +#~ msgid "" +#~ "

                        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                        If you save this image, any color loss will " +#~ "become permanent.

                        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


                        It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

                        If you save " +#~ "this image, this loss of translucency will become permanent.

                        " +#~ msgstr "" +#~ "

                        Bilden som ska klistras in kan ha fler färger än aktuellt " +#~ "skärmläge. För att visa den kan viss färginformation tas bort.

                        Om du sparar bilden, blir all förlust av färginformation " +#~ "permanent.

                        För att undvika problemet, öka skärmdjupet till " +#~ "åtminstone %1 bitar per bildpunkt och starta därefter om Kolourpaint.


                        Den innehåller också genomskinlighet som inte stöds " +#~ "fullständigt. Genomskinlighetsdata kommer att approximeras med en 1-" +#~ "bitars genomskinlighetsmask.

                        Om du sparar bilden, blir förlusten " +#~ "av genomskinlighet permanent.

                        " + +#~ msgid "" +#~ "

                        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                        If you save this image, any color loss will " +#~ "become permanent.

                        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

                        " +#~ msgstr "" +#~ "

                        Bilden som ska klistras in kan ha fler färger än aktuellt " +#~ "skärmläge. För att visa den kan viss färginformation tas bort.

                        Om du sparar bilden, blir all förlust av färginformation " +#~ "permanent.

                        För att undvika problemet, öka skärmdjupet till " +#~ "åtminstone %1 bitar per bildpunkt och starta därefter om Kolourpaint." + +#~ msgid "" +#~ "

                        The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                        If you save this image, this loss of " +#~ "translucency will become permanent.

                        " +#~ msgstr "" +#~ "

                        Bilden som ska klistras in innehåller genomskinlighet som inte " +#~ "stöds fullständigt. Data för genomskinlighet kommer att approximeras med " +#~ "en 1-bitars genomskinlighetsmask.

                        Om du sparar bilden, blir " +#~ "förlusten av genomskinlighet permanent.

                        " + +#~ msgid "

                        There is nothing in the clipboard to paste.

                        " +#~ msgstr "

                        Det finns ingenting på klippbordet att klistra in.

                        " + +#~ msgid "" +#~ "

                        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                        If you save this image, any color loss will become " +#~ "permanent.

                        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


                        It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

                        If you save this " +#~ "image, this loss of translucency will become permanent.

                        " +#~ msgstr "" +#~ "

                        Bilden \"%1\" kan ha fler färger än aktuellt skärmläge. För att " +#~ "visa den kan viss färginformation tas bort.

                        Om du sparar bilden, " +#~ "blir all förlust av färginformation permanent.

                        För att undvika " +#~ "problemet, öka skärmdjupet till åtminstone %2 bitar per bildpunkt och " +#~ "starta därefter om Kolourpaint.


                        Den innehåller också " +#~ "genomskinlighet som inte stöds fullständigt. Genomskinlighetsdata kommer " +#~ "att approximeras med en 1-bitars genomskinlighetsmask.

                        Om du " +#~ "sparar bilden, blir förlusten av genomskinlighet permanent.

                        " + +#~ msgid "" +#~ "

                        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                        If you save this image, any color loss will become " +#~ "permanent.

                        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

                        " +#~ msgstr "" +#~ "

                        Bilden \"%1\" kan ha fler färger än aktuellt skärmläge. För att " +#~ "visa den kan viss färginformation tas bort.

                        Om du sparar bilden, " +#~ "blir all förlust av färginformation permanent.

                        För att undvika " +#~ "problemet, öka skärmdjupet till åtminstone %2 bitar per bildpunkt och " +#~ "starta därefter om Kolourpaint.

                        " + +#~ msgid "" +#~ "

                        The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                        If you save this image, this loss of " +#~ "translucency will become permanent.

                        " +#~ msgstr "" +#~ "

                        Bilden \"%1\" innehåller genomskinlighet som inte stöds " +#~ "fullständigt . Data för genomskinlighet kommer att approximeras med en 1-" +#~ "bitars genomskinlighetsmask.

                        Om du sparar bilden, blir förlusten " +#~ "av genomskinlighet permanent.

                        " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Kunde inte öppna \"%1\" - slut på grafikminne." + +#~ msgid "Scanning Support" +#~ msgstr "Stöd för bildläsare" diff --git a/po/ta/kolourpaint.po b/po/ta/kolourpaint.po new file mode 100644 index 0000000..073efaf --- /dev/null +++ b/po/ta/kolourpaint.po @@ -0,0 +1,3091 @@ +# translation of kolourpaint.po to +# Ambalam , 2004. +# Kishore G , 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-06-19 19:45+0530\n" +"Last-Translator: Kishore G \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 21.04.2\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "வேல்முருகன்" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "velnet2004@yahoo.co.in" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "மீதி" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "மழுங்கல்" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "கூறாக்குதல்" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, fuzzy, kde-format +msgid "Clear" +msgstr "தெளிவு" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "தேர்வு: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "விளைவு" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "ஒன்றுசேர்" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "பழுப்பு நிறத்திற்கு குறை" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "வண்ணத்தை மாற்று" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "கவிழ்" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "மோனோக்ரோம்முக்கு குறை (வண்ணம் தெளிக்கப்பட்ட)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "மோனோக்ரோம்முக்கு குறை" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "256 வண்ணத்துக்கு குறை (தெளிக்கப்பட்ட வண்ணம்)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "256 வண்ணத்துக்கு குறை" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "திருப்பு" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "இடம்வலமாக மற்றும் உயரவாகில் திருப்பு" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "இடம்வலமாகத் திருப்பு" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "உயர்வாகி திருப்பு" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "உரை: பெட்டியை அளவு மாற்று" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "தேர்ந்தெடுப்பு: அளவுமாற்று" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "தேர்ந்தெடுப்பு: சீர் அளவுகோல்" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "மறு அளவாக்கு" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "அளவுகோல்" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "சீர் அளவுகோல்" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "சுழற்று" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "ஓராயம்" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&செய்யாதே: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, fuzzy, kde-format +msgid "&Undo" +msgstr "&செய்யாதே: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&திரும்பச் செய்: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, fuzzy, kde-format +msgid "&Redo" +msgstr "&சிவப்பு" + +#: commands/kpCommandHistoryBase.cpp:454 +#, fuzzy, kde-format +msgid "Undo: %1" +msgstr "&செய்யாதே: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, fuzzy, kde-format +msgid "Undo" +msgstr "&செய்யாதே: %1" + +#: commands/kpCommandHistoryBase.cpp:462 +#, fuzzy, kde-format +msgid "Redo: %1" +msgstr "&திரும்பச் செய்: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, fuzzy, kde-format +msgid "Redo" +msgstr "சிவப்பு" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, fuzzy, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "%1 அதிகமான உருப்படிகள்" +msgstr[1] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "வண்ண எடுப்பான்" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "அதிகமாக நிரப்பு." + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, fuzzy, kde-format +#| msgid "More Image Effects (Selection)" +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "அதிக பிம்ப விளைவுகள் (தேர்வு)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "More Image Effects" +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "அதிக பிம்ப விளைவுகள்" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&விளைவு:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "வண்ணங்களைக் குறை" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "மென்மையாக்குதல் & கூர்மையாக்குதல்" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, fuzzy, kde-format +#| msgid "%1 x %2" +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "%1 x %2" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, fuzzy, kde-format +#| msgid "&Horizontal:" +msgid "Horizontal:" +msgstr "கிடைமட்டம்" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, fuzzy, kde-format +#| msgid "&Vertical:" +msgid "Vertical:" +msgstr "உயர" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, fuzzy, kde-format +#| msgid "&Effect:" +msgid "O&ffset" +msgstr "&விளைவு:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                        The Offset is the relative position where this image should be " +"placed, compared to other images.

                        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, fuzzy, kde-format +#| msgid "Text: Finish" +msgid "&Text Fields" +msgstr "உரை: முடி" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, fuzzy, kde-format +#| msgid "&Delete Selection" +msgid "&Delete Row" +msgstr "தேர்ந்தெடுத்தவையை அழி" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&திரும்ப அமை" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, fuzzy, kde-format +#| msgid "&Blue" +msgid "Value" +msgstr "&நீலம்" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, fuzzy, kde-format +#| msgid "Text: Finish" +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "உரை: முடி" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "அளவுகள்" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "மூலம்" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "முன்தோற்றம்" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "Resize / Scale" +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "அளவை மாற்று / அளவு எடு" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "இல் செயல்:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "முழு பிம்பம்" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "தேர்வு" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "உரைப் பெட்டி" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "செயல்பாடு" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "மறு அளவாக்கு" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "அளவுகோல்" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "சீர் அளவுகோல்" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "அகலம்" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "உயரம்" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "புதிய:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "விழுக்காடு" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "வைப்பு விவரண விகிதம்" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to resize the text box?

                        " +msgstr "" +"

                        உரைப்பெட்டியை %1x%2க்கு மறுஅளவாக்குவதால் கணிசமான இடத்தை எடுக்கலாம். இது " +"கணினியின் செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உரைப்பெட்டியை உறுதியாக மறுஅளவாகாவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, fuzzy, kde-format +#| msgid "Resize Text Box?" +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "உரைப் பெட்டியை மறு அளவாக்கு?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "உரைப் பெட்டியை மறு அளவாக்கு" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to resize the image?

                        " +msgstr "" +"

                        பிம்பத்தை %1x%2க்கு அளவுமாற்றுவதால் கணிசமான இடத்தை எடுக்கலாம். இது கணினியின் " +"செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உறுதியாக பிம்பத்தை அளவு மாற்றவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +#| msgid "Resize Image?" +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "பிம்பத்தை அளவு மாற்ற வேண்டுமா?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "பிம்பத்தை மறு அளவாக்கு" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to scale the image?

                        " +msgstr "" +"

                        பிம்பத்தை %1x%2க்கு அளவிடுவதால் கணிசமான இடத்தை எடுக்கலாம். இது கணினியின் " +"செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உறுதியாக பிம்பத்தை அளவிடவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +#| msgid "Scale Image?" +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "பிம்பத்தை மறுஅளவாக்கு?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "பிம்பத்தை மாற்று" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to scale the selection?

                        " +msgstr "" +"

                        தேர்ந்தெடுப்பை %1x%2க்கு அளவுமாற்றுவதால் கணிசமான இடத்தை எடுக்கலாம். இது " +"கணினியின் செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உறுதியாக தேர்ந்தெடுப்பை அளவு மாற்றவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Scale Selection?" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "தேர்ந்தெடுப்பை மறுஅளவாக்கு?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "தேர்ந்தெடுப்பை அளவு மாற்று" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the image?" +msgstr "" +"

                        பிம்பத்தை %1x%2க்கு அளவுமாற்றுவதால் கணிசமான இடத்தை எடுக்கலாம். இது கணினியின் " +"செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உறுதியாக பிம்பத்தை அளவு மாற்றவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, fuzzy, kde-format +#| msgid "Smooth Scale Image?" +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "பிம்பத்தை சீர் அளவுமாற்று" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "பிம்ப சீர் அளவுமாற்று" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the selection?" +"

                        " +msgstr "" +"

                        தேர்ந்தெடுப்பை %1x%2க்கு மென்மையாக்குவதால் கணிசமான இடத்தை எடுக்கலாம். இது " +"கணினியின் செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உறுதியாக தேர்ந்தெடுப்பை மென்மையாக்க வேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, fuzzy, kde-format +#| msgid "Smooth Scale Selection?" +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "சீர் அளவுகோல் தேர்ந்தெடுப்பு" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "சீர் அளவுகோல் தேர்ந்தெடுப்பு" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Selection" +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "தேர்ந்தெடுப்பை சுற்று" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "பிம்பத்தை சுற்று" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, fuzzy, kde-format +#| msgid "After Rotate:" +msgid "After rotate:" +msgstr "சுற்றியபின்:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "திசை" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "எண்ணி வலச்சுற்று" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "வலச்சுற்று" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "சாய் கோணம்" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 டிகிரிகள்" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 டிகிரிகள்" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 டிகிரிகள்" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "வழக்கம்:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr " டிகிரிகள்" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

                        Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                        Are you sure want to rotate the selection?

                        " +msgid "" +"

                        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to rotate the selection?

                        " +msgstr "" +"

                        தேர்ந்தெடுப்பை %1x%2க்கு சுழற்றுவதால் கணிசமான இடத்தை எடுக்கலாம். இது கணினியின் " +"செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உறுதியாக தேர்ந்தெடுப்பை சுழற்றவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +#| msgid "Rotate Selection?" +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "சுழற்சி தேர்ந்தெடுப்பு" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "சுழற்சி தேர்ந்தெடுப்பு" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +#| msgid "" +#| "

                        Rotating the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                        Are you sure want to rotate the image?

                        " +msgid "" +"

                        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to rotate the image?

                        " +msgstr "" +"

                        பிம்பத்தை %1x%2க்கு சுழற்றுவதால் கணிசமான இடத்தை எடுக்கலாம். இது கணினியின் " +"செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உறுதியாக பிம்பத்தை சுழற்றவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +#| msgid "Rotate Image?" +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "பிம்பத்தை சுழற்று?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "பிம்பத்தை சுழற்று" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Skew Selection" +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "சரிவு தேர்வு" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +#| msgid "Skew Image" +msgctxt "@title:window" +msgid "Skew Image" +msgstr "பிம்பத்தை சரிவாக்கு" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, fuzzy, kde-format +#| msgid "After Skew:" +msgid "After skew:" +msgstr "சரிவுக்குப் பிறகு:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "கிடைமட்டம்" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "உயர" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

                        Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                        Are you sure want to skew the selection?

                        " +msgid "" +"

                        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to skew the selection?

                        " +msgstr "" +"

                        தேர்ந்தெடுப்பை %1x%2க்கு சாய்ப்பதால் கணிசமான இடத்தை எடுக்கலாம். இது கணினியின் " +"செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        தேர்ந்தெடுப்பை பிம்பத்தை சாய்க்கவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +#| msgid "Skew Selection?" +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "தேர்ந்தெடுப்பை மறு அளவாக்கு?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "தேர்ந்தெடுப்பை ஒருபுறமாக சாய்" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

                        Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                        Are you sure want to skew the image?

                        " +msgid "" +"

                        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to skew the image?

                        " +msgstr "" +"

                        பிம்பத்தை %1x%2க்கு சாய்ப்பதால் கணிசமான இடத்தை எடுக்கலாம். இது கணினியின் " +"செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்.

                        உறுதியாக பிம்பத்தை சாய்க்கவேண்டுமா?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +#| msgid "Skew Image?" +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "பிம்பத்தை மறு அளவாக்கு" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "பிம்பத்தை ஒருபுறமாக சாய்" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, fuzzy, kde-format +#| msgid "Color Similarity" +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "வண்ண ஒற்றுமை" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, fuzzy, kde-format +#| msgid "RGB Color Cube Distance" +msgid "&RGB Color Cube Distance" +msgstr "RGB வண்ணப்பட்டகத்தின் தொலைவு" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "மிக சரியான பொருத்தம்" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, fuzzy, kde-format +#| msgid "Save Preview" +msgctxt "@title:window" +msgid "Save Preview" +msgstr "முன்காட்சியை சேமி" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, fuzzy, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 பைட்டுகள் (தோராயமாக %2%)" +msgstr[1] "%1 பைட்டுகள் (தோராயமாக %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "\"%1\" யை திறக்க முடியவில்லை." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" யை திறக்க முடியவில்லை - துணைபுரியாத படிம வடிவம்.\n" +"இந்த கோப்பு பழுதடைந்திருக்கலாம்." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "படிமத்தை சேமிக்க முடியவில்லை - தேவையான தகவல் இல்லை." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"மைம் வகை: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, fuzzy, kde-format +#| msgid "Internal Error" +msgctxt "@title:window" +msgid "Internal Error" +msgstr "உள் பிழை" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                        The %1 format may not be able to preserve all of the image's " +"color information.

                        Are you sure you want to save in this format?

                        " +msgstr "" +"

                        இந்த%1வடிவமைப்பால் பிம்பத்தினுடைய வண்ண தகவலை பாதுகாக்க முடியாது.

                        இந்த வடிவமைப்பில் சேமிக்க வேண்டுமா?

                        " + +#: document/kpDocument_Save.cpp:131 +#, fuzzy, kde-format +#| msgid "Lossy File Format" +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "நம்பகமற்ற கோப்பு வடிவம்" + +#: document/kpDocument_Save.cpp:140 +#, fuzzy, kde-format +msgid "" +"

                        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                        Are " +"you sure you want to save at this color depth?

                        " +msgstr "" +"

                        %1-பிட்டின் குறைந்த வண்ண ஆழத்தில் பிம்பத்தை சேமிக்கும்போது அதில் வண்ண இழப்பு " +"ஏற்படும். ஊடகங்களும் நீக்கப்படும்..

                        இந்த வண்ண ஆழத்தில் சேமிக்கவேண்டுமா?

                        " + +#: document/kpDocument_Save.cpp:150 +#, fuzzy, kde-format +#| msgid "Low Color Depth" +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "குறைந்த வண்ண ஆழம்" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "படிமத்தை சேமிக்க முடியவில்லை - தற்காலிக கோப்பினை உருவாக்க முடியவில்லை" + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "\"%1\" ஆக சேமிக்க முடியவில்லை." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "படிமத்தை சேமிக்க முடியவில்லை - மேல் ஏற்ற தோல்வியுற்றது." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "உள் விளிம்பை நீக்கு" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "உள் விளிம்பை நீக்கு" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "தானாக வெட்டுதல்" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "தானாக வெட்டு" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "KolourPaintஆல் தேர்ந்தெடுப்பின் உள் விளிம்பை நீக்கமுடியாது, அதை வைக்கமுடியாது." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, fuzzy, kde-format +#| msgid "Cannot Remove Internal Border" +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "உள் விளிம்பை நீக்க முடியவில்லை" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "KolourPaint தானாகவே பிம்பத்தை வெட்டாது, அதன் விளிம்பை வைக்கமுடியாது." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, fuzzy, kde-format +#| msgid "Cannot Autocrop" +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "தானாக வெட்டுதல் முடியாது" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "பிம்பமாக அமை" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "தேர்ந்தெடுப்பு: உருவாக்கு" + +#: kolourpaint.cpp:51 +#, fuzzy, kde-format +#| msgid "KolourPaint" +msgid "KolourPaint" +msgstr "கேலொர்பெயிண்ட்" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "KDE க்கான பெயிண்ட் நிரலி" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "தலைமை பார்வையாளர்" + +#: kolourpaint.cpp:72 +#, fuzzy, kde-format +msgid "Martin Koller" +msgstr "உரை கருவிப்பட்டி" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "குறும்படங்கள்" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "InputMethod ஆதரவு" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, fuzzy, kde-format +#| msgid "More Image Effects" +msgid "Image Effects" +msgstr "அதிக பிம்ப விளைவுகள்" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "திறக்கவேண்டிய பிம்ப கோப்பு" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "&பார்வை" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "படிமம்" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, fuzzy, kde-format +#| msgid "Colors" +msgid "&Colors" +msgstr "வண்ணங்கள்" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "பிரதான கருவிப்பட்டை" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "உரை கருவிப்பட்டி" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "தேர்ந்தெடுப்பு கருவி RMB பட்டி" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +#| msgid "Thumbnail" +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "குறும்படம்" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, fuzzy, kde-format +msgid "Left drag the handle to resize the image." +msgstr "பிம்பத்தை மறுஅளவிட பிடியை இழுக்கவும்." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "பிம்பத்தை மறுஅளவிடு: அனைத்து சுட்டி பொத்தானிடம் செல்க " + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "பிம்பத்தை மறுஅளவாக்கு: ரத்து செய்ய வலதுபுற க்ளிக் செய்யவும்." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "உரை" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, fuzzy, kde-format +#| msgid "Could not open \"%1\"." +msgid "Could not open color palette \"%1\"." +msgstr "\"%1\" யை திறக்க முடியவில்லை." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, fuzzy, kde-format +#| msgid "" +#| "Could not open \"%1\" - unsupported image format.\n" +#| "The file may be corrupt." +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" யை திறக்க முடியவில்லை - துணைபுரியாத படிம வடிவம்.\n" +"இந்த கோப்பு பழுதடைந்திருக்கலாம்." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, fuzzy, kde-format +#| msgid "Could not open \"%1\"." +msgid "Could not open KDE color palette \"%1\"." +msgstr "\"%1\" யை திறக்க முடியவில்லை." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save color palette as \"%1\"." +msgstr "\"%1\" ஆக சேமிக்க முடியவில்லை." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "தலைப்பில்லாதது" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, fuzzy, kde-format +#| msgid "KolourPaint" +msgid "Use KolourPaint Defaults" +msgstr "கேலொர்பெயிண்ட்" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, fuzzy, kde-format +#| msgid "&Flip..." +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "சுழற்று" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, fuzzy, kde-format +#| msgid "Reloa&d" +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "திரும்ப ஏற்று" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, fuzzy, kde-format +#| msgid "&Scale" +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "அளவுகோல்" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "படிமத்தை சேமிக்க" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, fuzzy, kde-format +#| msgid "&Delete Selection" +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "தேர்ந்தெடுத்தவையை அழி" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, fuzzy, kde-format +msgid "Color Box" +msgstr "வண்ணங்கள்" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"ஆவணம் \"%1\" மாற்றப்பட்டது.\n" +"நீங்கள் சேமிக்க விரும்புகிறீரா?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"ஆவணம் \"%1\" மாற்றப்பட்டது.\n" +"நீங்கள் சேமிக்க விரும்புகிறீரா?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"ஆவணம் \"%1\" மாற்றப்பட்டது.\n" +"நீங்கள் சேமிக்க விரும்புகிறீரா?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, fuzzy, kde-format +#| msgid "Colors" +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "வண்ணங்கள்" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Reloading will lose all changes since you last saved it.\n" +#| "Are you sure?" +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"ஆவணம்\"%1\" ஏற்கனவே திருத்தப்பட்டது.\n" +"திரும்ப ஏற்றுவது கண்டிப்பாக கடைசியாக மாற்றியவையை இழந்துவிடும்.\n" +"நீங்கள் விரும்புகிறீரா?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, fuzzy, kde-format +msgid "&Reload" +msgstr "திரும்ப ஏற்று" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Reloading will lose all changes.\n" +#| "Are you sure?" +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"ஆவணம்\"%1\" ஏற்கனவே திருத்தப்பட்டது.\n" +"திரும்ப ஏற்றினால் எல்லா மாற்றங்களையும் இழக்க நேரிடும்.\n" +"உறுதியாக செய்யலாமா?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Reloading will lose all changes.\n" +#| "Are you sure?" +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"ஆவணம்\"%1\" ஏற்கனவே திருத்தப்பட்டது.\n" +"திரும்ப ஏற்றினால் எல்லா மாற்றங்களையும் இழக்க நேரிடும்.\n" +"உறுதியாக செய்யலாமா?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, fuzzy, kde-format +#| msgid "Invert Colors" +msgid "Save Color Palette As" +msgstr "வண்ணத்தை மாற்று" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "புதிய சாளரத்தில் ஒட்டு" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "தேர்ந்தெடுத்தவையை அழி" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "கோப்பிற்கு நகலிடு..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "கோப்பிலிருந்து ஒட்டு..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "உரை: பெட்டியை உருவாக்கு" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "உரை: ஒட்டு" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "ஒட்ட முடியவில்லை" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "உரை: பெட்டியை அழி" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "தேந்தெடுப்பு: அழி" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "உரை: முடி" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "தேர்ந்தெடுப்பு: தேர்வை நீக்கு" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, fuzzy, kde-format +#| msgid "Copy to File" +msgctxt "@title:window" +msgid "Copy to File" +msgstr "கோப்பிற்கு நகல் எடு" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, fuzzy, kde-format +#| msgid "Paste From File" +msgctxt "@title:window" +msgid "Paste From File" +msgstr "கோப்பிலிருந்து ஒட்டு" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "ஏற்றுமதி..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, fuzzy, kde-format +msgid "Scan..." +msgstr "..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, fuzzy, kde-format +#| msgid "Acquiring Screenshots" +msgid "Acquire Screenshot" +msgstr "திரைப்பிடிப்புகளை பெறுகிறது" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "திரும்ப ஏற்று" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +#| msgid "Open Image" +msgctxt "@title:window" +msgid "Open Image" +msgstr "படிமத்தை திற" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, fuzzy, kde-format +#| msgid "Paste in &New Window" +msgid "Hide Main Window" +msgstr "புதிய சாளரத்தில் ஒட்டு" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Save Image As" +msgstr "படிமத்தை சேமிக்க" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "ஏற்றுமதி..." + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"ஆவணம்\"%1\" ஏற்கனவே திருத்தப்பட்டது.\n" +"திரும்ப ஏற்றுவது கண்டிப்பாக கடைசியாக மாற்றியவையை இழந்துவிடும்.\n" +"நீங்கள் விரும்புகிறீரா?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"ஆவணம்\"%1\" ஏற்கனவே திருத்தப்பட்டது.\n" +"திரும்ப ஏற்றினால் எல்லா மாற்றங்களையும் இழக்க நேரிடும்.\n" +"உறுதியாக செய்யலாமா?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Print Image" +msgstr "முழு பிம்பம்" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"நீங்கள் அனுப்புவதற்கு முன் சேமிக்க வேண்டும்.\n" +"நீங்கள் சேமிக்க விரும்புகிறீரா?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"ஆவணம் \"%1\" மாற்றப்பட்டது.\n" +"நீங்கள் சேமிக்க விரும்புகிறீரா?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "அளவை மாற்று / அளவுஎடு..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "பிம்பமாக அமை (வெட்டு)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, fuzzy, kde-format +#| msgid "&Vertical (upside-down)" +msgid "&Flip (upside down)" +msgstr "உயரவாக்கில்(மேற்பக்கம்-கீழ்)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, fuzzy, kde-format +#| msgid "Flip horizontally" +msgid "Mirror (horizontally)" +msgstr "இடம்வலமாகத் திருப்பு" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "சுழற்று..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgid "Rotate &Left" +msgstr "பிம்பத்தை சுற்று" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, fuzzy, kde-format +#| msgid "Rotate Image" +msgid "Rotate Righ&t" +msgstr "பிம்பத்தை சுற்று" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "சாய்வு" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "மோனோக்ரோமுக்கு வண்ணத்துக்கு குறை (தெளிக்கப்பட்ட வண்ணம்)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "பழுப்பு நிறத்துக்கு குறை" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "வண்ணத்தை மாற்று" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "தெளிவு" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&அதிக விளைவுகள்..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, fuzzy, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "படிமம்" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, fuzzy, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "தேர்வு" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "பாதையை &காட்டு" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "எழுத்துரு குடும்பம்" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, fuzzy, kde-format +msgid "Font Size" +msgstr "உரை:எழுத்துரு அளவு" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "தடிமன்" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, fuzzy, kde-format +msgid "Italic" +msgstr "உரை:சாய்வெழுத்து" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "அடிக்கோடு" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "குறுக்குக்கோடு" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "முந்தைய கருவி விருப்பத்தேர்வு (குழு #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "அடுத்த கருவி விருப்பத்தேர்வு (குழு #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "முந்தைய கருவி விருப்பத் தேர்வு (குழு #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "அடுத்த கருவி விருப்பத்தேர்வு (குழு #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, fuzzy, kde-format +#| msgid "Opaque" +msgid "&Draw Opaque" +msgstr "ஒளி பாயாத" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, fuzzy, kde-format +#| msgid "Color Similarity" +msgid "Draw With Color Similarity..." +msgstr "வண்ண ஒற்றுமை" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, fuzzy, kde-format +msgid "Tool Box" +msgstr "உரைப் பெட்டி" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "கட்டங்களை காட்டு" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "குறும்படத்தை காட்டு" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "பெரிதாக்கப்பட்ட சிறுபிம்ப வகை" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "சிறுபிம்ப நீள்வடிவத்தை செயல்படுத்து" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "முழு பிம்பம்" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "தூரிகை" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "வித்தியாசமான வடிவங்கள் மற்றும் அளவுகளை தூரிகைக் கொண்டு வரைக " + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "சொடுக்கி புள்ளிகளை வரை அல்லது இழுத்து அடியினை வரைக " + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "வண்ண அழிப்பி" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "பின்னணி வண்ணங்களை கொண்டு முன்னணி வண்ணங்களின் படப்புள்ளிகளை மாற்றவும்." + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "சொடுக்கு அல்லது இழுத்து படப்புள்ளிகளை அழித்திடும் முன்னணி வண்ணம்" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "அழிப்பி" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "தவறுகளை அழிக்கவிடுதல்" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "சொடுக்கு அல்லது இழுத்து அழி " + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "அனைத்து சுட்டி பொத்தானிடம் செல்க " + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "பேனா" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "புள்ளிகளை வரைக மற்றும் வெறும் கை அடிகள் " + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "சிதறுதலுக்காக" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "சிதறலின் கிரஃப்டி" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "சிதரலின் கிரஃப்டியை சொடுக்கு அல்லது இழு" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "ரத்து செய்ய வலதுபுறம் க்ளிக் செய்யவும்." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "ரத்து செய்ய இடதுபுறம் க்ளிக் செய்யவும்." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "நீங்கள் படிவத்திலிருந்து வண்ணத்தினை செயல்படுத்துவும்" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "சொடுக்கி வண்ணத்தைத் தேர்ந்தெடு" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "வட்டாரத்தின் படிவத்தினை நிரப்பு" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "சொடுக்கி வட்டாரத்தை நிரப்பு" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "வளைவு" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "வளைவுகளை வரைக" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "முதல் மற்றும் இறுதி புள்ளியினை இழுத்தல் " + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"இடதுபுறமாக இழுத்தல் முதல் கட்டுப்பாடு புள்ளியை அமைக்க அல்லது முடிக்க வலதுபுறம் க்ளிக் " +"செய்யவும்." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"வலதுபுறமாக இழுத்தல் முதல் கட்டுப்பாடு புள்ளியை அமைக்க அல்லது முடிக்க இடதுபுறம் க்ளிக் " +"செய்யவும்." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"இடதுபுறமாக இழுத்தல் கடைசி கட்டுப்பாடு புள்ளியை அமைக்க அல்லது முடிக்க வலதுபுறம் க்ளிக் " +"செய்யவும்." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"வலதுபுறமாக இழுத்தல் கடைசி கட்டுப்பாடு புள்ளியை அமைக்க அல்லது முடிக்க இடதுபுறம் க்ளிக் " +"செய்யவும்." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "கோடு" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "கோட்டிகளை வரைக" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "இழுத்து வரைதல்" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "பலகோணம்" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "பலகோணங்களை வரைக" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "முதல் கோட்டினை இழுத்து வரைதல்" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "மற்றொரு வரியை இடதுபுறமாக இழு அல்ல்து முடிக்க வலதுபுறம் க்ளிக் செய்யவும்." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "மற்றொரு வரியை வலதுபுறமாக இழு அல்லது முடிக்க இடதுபுறம் க்ளிக் செய்யவும்." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "இணையும் கோடுகள்" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "வரைதல் கோடுகளை இணைக்க" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "நீள் வட்டம்" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "நீள் வட்டம் மற்றும் வட்டத்தை வரைக" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "நீள்சதுரம்" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "சதுரங்கள் மற்றும் முக்கோணங்களை வரைதல்" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "வட்டவடிவ நீள்சதுரம்" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "வட்டமாக்கப்பட்ட ஓரங்களுடன் நீள்சதுரங்கள் மற்றும் முக்கோணங்களை வரைதல்" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "இடது பக்கமாக இழுத்துச் செயல்பாட்டினை உருவாக்கு " + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "இடது பக்கமாக இழுத்துச் செயல்பாட்டினைத் தள்ளுதல் " + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "மறு அளவாக்கியதை இடது பக்கமாக இழு." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "தேர்ந்தெடுப்பு: ஒளி ஊடுருவாத" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "தேர்ந்தெடுப்பு: ஊடுதெரிதல்" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "தேர்ந்தெடுப்பு: ஊடு தெரியும் வண்ணம்" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "தேர்ந்தெடுப்பு: ஒரே மாதிரியான ஊடு தெரியும் வண்ணம்" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "செயல்பாடு(நீளவட்ட)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "ஒரு மங்கலான அல்லது வட்டவடிவமான தேர்வை உருவாக்குகிறது" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "தேர்ந்தெடுப்பு(சுதந்திரவடிவம்)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "ஒரு சுலப-வடிவ தேர்வை உருவாக்குகிறாது" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "தேர்ந்தெடுப்பு(நீள்சதுரம்)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "ஒரு நீள்சதுரத்தை உருவாக்குகிறது" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "தேர்ந்தெடுப்பு:நகர்த்து" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: ஸ்மிர்" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "உரையை எழுதுகிறது" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "உரை:பின் வாங்கு" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "உரை:நீக்கு" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "உரை:புதிய கோடு" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "உரை:எழுது" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "இடது பக்கமாக இழுத்து உரைப் பெட்டியை உருவாக்கு" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "இடது பக்கமாக இழுத்துச் உரைப் பெட்டியைத் தள்ளு" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "உரை: பெட்டியை நகர்த்து" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "உரைப் பெட்டியை மறுஅளவாக்க இடது பக்கமாக இழுக்கவேண்டும்" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "காட்டி இடத்தை மாற்ற இடது சொடுக்கவும்" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "உரை: ஒளி ஊடுருவாத பின்னணி" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "உரை: ஊடு தெரியும் பின்னணி" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "உரை: வண்ணங்களை மாறுகோல்" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "உரை:முன்னணி வண்ணம்" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "உரை:பின்னணி வண்ணம்" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "உரை:எழுத்துரு" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "உரை:எழுத்துரு அளவு" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "உரை:தடிமன்" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "உரை:சாய்வெழுத்து" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "உரை:அடிக்கோடு" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "உரை:முழு அடித்தல்" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, fuzzy, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "பெரிதாக்கப்பட்ட சிறுபிம்ப வகை" + +#: views/kpZoomedThumbnailView.cpp:65 +#, fuzzy, kde-format +msgid "%1% - Thumbnail" +msgstr "குறும்படம்" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        To configure it, click on the cube.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                        Color Similarity: %1%

                        Click to configure.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                        Color Similarity: Exact Match

                        Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&பிரகாசம்:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "திரும்ப அமை" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "மாறுபாடு:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&காமா:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "திரும்ப அமை" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "வழிமுறைகள்:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "எல்லாம்" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "சிவப்பு" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "பச்சை" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "நீலம்" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "எல்லா மதிப்புகளையும் திரும்ப அமை" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "அமைப்புகள்" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&தொகை:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "செயல்படுத்து" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "வண்ணங்கள்" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, fuzzy, kde-format +#| msgid "&New:" +msgid "&Hue:" +msgstr "புதிய:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, fuzzy, kde-format +#| msgid "&Blue" +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&நீலம்" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&சிவப்பு" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&பச்சை" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&நீலம்" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&எல்லாம்" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "வழிமுறைகள்" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&&மானோக்ரோம்" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, fuzzy, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "மானோக்ரோம் (தெளிக்கப்பட்ட)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, fuzzy, kde-format +msgid "256 co&lor" +msgstr "25 வண்ணம்" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, fuzzy, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 வண்ணம் (தெளிக்கப்பட்ட)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, fuzzy, kde-format +msgid "24-&bit color" +msgstr "24-&பிட் வண்ணம்" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "இதற்கு குறை" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                        To change the color of a color cell itself, double-click on it.

                        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                        " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "இதற்கு மாற்று:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "தரம்:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&முன்காட்சி" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "மானோக்ரோம்" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "மோனோக்ரோம் (வண்ணம் தெளிக்கப்பட்ட)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 வண்ணம்" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 வண்ணம் (தெளிக்கப்பட்ட)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-பிட் வண்ணம்" + +#: widgets/kpPrintDialogPage.cpp:58 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "திறக்கவேண்டிய பிம்ப கோப்பு" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "தெரியக்கூடிய" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, fuzzy, kde-format +#| msgid "KolourPaint" +msgid "KolourPaint Defaults" +msgstr "கேலொர்பெயிண்ட்" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, fuzzy, kde-format +#| msgid "Colors" +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "வண்ணங்கள்" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "வட்டம்" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "சதுரம்" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "வகுத்தல் குறி" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "பின் வகுத்தல் குறி" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "நிரப்பு இல்லை" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "பின்னணி வண்ணத்தோடு நிரப்பு" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "முன்னணி வண்ணத்தோடு நிரப்பு" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "ஒளி பாயாத" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" ஆவணம் ஏற்கனவே உள்ளது.\n" +#~ "நீங்கள் மேல் எழுத விரும்புகிறீரா?" + +#, fuzzy +#~| msgid "" +#~| "A document called \"%1\" already exists.\n" +#~| "Do you want to overwrite it?" +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "\"%1\" ஆவணம் ஏற்கனவே உள்ளது.\n" +#~ "நீங்கள் மேல் எழுத விரும்புகிறீரா?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "பெரிதாக்கு நிலையின் மதிப்பை 100% இன் மடங்காக அமைக்கிறது விளைவுகள் திருத்தம் மற்றும் " +#~ "வரைதலின் அங்குலத்தில் இருக்கும்.\n" +#~ "நீங்கள் பெரிதாக்கு நிலை %1% க்கு அமைக்க விரும்புகிறீரா?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "பெரிதாக்கு நிலையை %1% க்கு அமை" + +#~ msgid "None" +#~ msgstr "ஒன்றுமில்லை" + +#~ msgid "" +#~ "

                        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                        Are you sure want to resize the image?

                        " +#~ msgstr "" +#~ "

                        பிம்பத்தை %1x%2க்கு அளவுமாற்றுவதால் கணிசமான இடத்தை எடுக்கலாம். இது " +#~ "கணினியின் செயல்திறனை குறைத்து மற்ற பயன்பாட்டு மூலங்களின் பிரச்னைகளுக்கு வழிவகுக்கும்." +#~ "

                        உறுதியாக பிம்பத்தை அளவு மாற்றவேண்டுமா?

                        " + +#~ msgid "Overwrite" +#~ msgstr "மேல் எழுது" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "\"%1\" யை திறக்க முடியவில்லை - தெரியாத மைம் வகை." + +#~ msgid "Save Preview" +#~ msgstr "முன்காட்சியை சேமி" + +#~ msgid "" +#~ "

                        KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

                        This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

                        " +#~ msgstr "" +#~ "

                        பிடிப்புப் பலகையின் எதிர்பாராமல் தெரியும் தரவை KolourPaintஆல் " +#~ "ஒட்டமுடியாது

                        இது பிடிப்புப் பலகையின் உள்ளடக்கங்களை காட்டும் பயன்பாடு " +#~ "மூடியிருக்கும்போது வழக்கமாக நடைபெறும்.

                        " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "&திரைப்பிடிப்புகளை பெறுதல்" + +#, fuzzy +#~| msgid "" +#~| "

                        To acquire a screenshot, press %1. The screenshot will be " +#~| "placed into the clipboard and you will be able to paste it in " +#~| "KolourPaint.

                        You may configure the Desktop Screenshot " +#~| "shortcut in the KDE Control Center module Keyboard Shortcuts.

                        Alternatively, you may try the " +#~| "application KSnapshot.

                        " +#~ msgid "" +#~ "

                        To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

                        You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

                        Alternatively, you may try the application KSnapshot.

                        " +#~ msgstr "" +#~ "

                        திரைப்பிடிப்பை பெற, %1ஐஅழுத்தவும். திரைப்பிடிப்பு பிடிப்புப்பலகையினுள் " +#~ "வைக்கப்பட்டுவிடும். நீங்கள் அதை KolourPaintல் ஒட்டலாம்.

                        நீங்கெள் மேல்மேசை " +#~ "திரைப்பிடிப்பு குறுக்குவழியை கேடியி கட்டுப்பாட்டுமைய பகுதியில் " +#~ "வடிவமைக்கலாம்விசைப்பலகை குறுக்குவழிகள்." +#~ "

                        மாற்றாக, KSnapshotல் முயற்சிக்கலாம்..

                        " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "சுவர்காகிதமாக அமை (மையமாக)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "சுவர் காகிதமாக அமை (&அடுக்குமுறை)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "இந்த படிமம் சுவர்காகிதமாக அமைப்பதற்கு முன், நீங்கள் கண்டிப்பாக உள் கோப்பாக சேமிக்க " +#~ "வேண்டும்.\n" +#~ "நீங்கள் சேமிக்க விரும்புகிறீரா?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "இந்த படிமம் சுவர்காகிதமாக அமைப்பதற்கு முன், நீங்கள் கண்டிப்பாக உள் கோப்பாக சேமிக்க " +#~ "வேண்டும்.\n" +#~ "நீங்கள் சேமிக்க விரும்புகிறீரா?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "சுவர்காகிதத்தை மாற்ற முடியாது" + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "தேர்ந்தெடுத்து திருப்பு" + +#~ msgid "Flip Image" +#~ msgstr "படிமத்தைத் திருப்பு" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "உயரவாக்கில்(மேற்பக்கம்-கீழ்)" + +#~ msgid "&Horizontal" +#~ msgstr "இடம்வலமாக" + +#, fuzzy +#~| msgid "Could not open \"%1\" - out of graphics memory." +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "\"%1\" யை திறக்க முடியவில்லை - வரைகலை நிணைவிற்கு வெளியே உள்ளது" + +#, fuzzy +#~| msgid "Cannot Paste" +#~ msgid "Cannot Scan" +#~ msgstr "ஒட்ட முடியவில்லை" + +#~ msgid "&Flip..." +#~ msgstr "சுழற்று" + +#, fuzzy +#~ msgid "" +#~ "

                        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                        If you save this image, any color loss will " +#~ "become permanent.

                        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


                        It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

                        If you save " +#~ "this image, this loss of translucency will become permanent.

                        " +#~ msgstr "" +#~ "தற்போதைய திரை வகையின் நிறைய வண்ணங்கள் கொண்டு இருக்கலாம் %1. இதை காட்டுவதற்காக, சில " +#~ "வண்ணங்களை மாற்ற வேண்டும். உங்கள் திரை\n" +#~ "ஆழத்தை குறைந்தது %2bpp அதிகரிக்க முயலவும். முழுமையாக துணைபுரியாத மாற்றங்கள் " +#~ "உள்ளது. மாற்ற வேண்டிய தகவல் சுமாராக 1-பிட் தெரியாத கவசமாக இருக்கும்." + +#, fuzzy +#~| msgid "" +#~| "The image to be pasted may have more colors than the current screen " +#~| "mode. In order to display it, some colors may be changed. Try increasing " +#~| "your screen depth to at least %1bpp." +#~ msgid "" +#~ "

                        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                        If you save this image, any color loss will " +#~ "become permanent.

                        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

                        " +#~ msgstr "" +#~ "தற்போதைய திரை வகையைவிட அதிக நிறைய வண்ணங்கள் கொண்டு இருக்கலாம் இதை காட்டுவதற்காக, " +#~ "சில வண்ணங்களை மாற்ற வேண்டும். உங்கள் திரை ஆழத்தை குறைந்தது %1bpp அதிகரிக்க " +#~ "முயற்சிக்கவும்." + +#, fuzzy +#~ msgid "" +#~ "

                        The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                        If you save this image, this loss of " +#~ "translucency will become permanent.

                        " +#~ msgstr "" +#~ "%1 இல் முழுமையாக துணை புரியாத மாற்றங்கள் உள்ளது. மாற்ற வேண்டிய தகவல் சுமாராக 1-" +#~ "பிட் தெரியாத கவசமாக இருக்கும்." + +#, fuzzy +#~| msgid "" +#~| "The image \"%1\" may have more colors than the current screen mode. In " +#~| "order to display it, some colors may be changed. Try increasing your " +#~| "screen depth to at least %2bpp.\n" +#~| "It also contains translucency which is not fully supported. The " +#~| "translucency data will be approximated with a 1-bit transparency mask." +#~ msgid "" +#~ "

                        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                        If you save this image, any color loss will become " +#~ "permanent.

                        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


                        It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

                        If you save this " +#~ "image, this loss of translucency will become permanent.

                        " +#~ msgstr "" +#~ "தற்போதைய திரை வகையின் நிறைய வண்ணங்கள் கொண்டு இருக்கலாம் %1. இதை காட்டுவதற்காக, சில " +#~ "வண்ணங்களை மாற்ற வேண்டும். உங்கள் திரை\n" +#~ "ஆழத்தை குறைந்தது %2bpp அதிகரிக்க முயலவும். முழுமையாக துணைபுரியாத மாற்றங்கள் " +#~ "உள்ளது. மாற்ற வேண்டிய தகவல் சுமாராக 1-பிட் தெரியாத கவசமாக இருக்கும்." + +#, fuzzy +#~| msgid "" +#~| "The image \"%1\" may have more colors than the current screen mode. In " +#~| "order to display it, some colors may be changed. Try increasing your " +#~| "screen depth to at least %2bpp." +#~ msgid "" +#~ "

                        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                        If you save this image, any color loss will become " +#~ "permanent.

                        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

                        " +#~ msgstr "" +#~ "தற்போதைய திரை வகையின் நிறைய வண்ணங்கள் கொண்டு இருக்கலாம் %1. இதை காட்டுவதற்காக, சில " +#~ "வண்ணங்களை மாற்ற வேண்டும். உங்கள் திரை ஆழத்தை குறைந்தது %2bpp அதிகரிக்க முயலவும்." + +#, fuzzy +#~| msgid "" +#~| "The image \"%1\" contains translucency which is not fully supported. The " +#~| "translucency data will be approximated with a 1-bit transparency mask." +#~ msgid "" +#~ "

                        The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                        If you save this image, this loss of " +#~ "translucency will become permanent.

                        " +#~ msgstr "" +#~ "%1 இல் முழுமையாக துணை புரியாத மாற்றங்கள் உள்ளது. மாற்ற வேண்டிய தகவல் சுமாராக 1-" +#~ "பிட் தெரியாத கவசமாக இருக்கும்." + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "\"%1\" யை திறக்க முடியவில்லை - வரைகலை நிணைவிற்கு வெளியே உள்ளது" + +#~ msgid "Selection: Transparency" +#~ msgstr "தேர்ந்தெடுப்பு: ஊடு தெரிதல்" + +#~ msgid "You have to restart KolourPaint for these changes to take effect." +#~ msgstr "நீங்கள் இந்த மாற்றங்கள் விளைவு பெற கலர்பெயிண்டை திரும்ப ஆரம்பிக்க வேண்டும்" + +#~ msgid "Toolbar Settings Changed" +#~ msgstr "கருவிப்பட்டி அமைப்புகள் மாறிவிட்டது" + +#~ msgid "Hide &Path" +#~ msgstr "பாதையை &மறை" + +#~ msgid "Hide &Grid" +#~ msgstr "மறை &கட்டம்" + +#~ msgid "Hide T&humbnail" +#~ msgstr "குறும்படத்தை மறை" + +#, fuzzy +#~| msgid "Reduce Colors" +#~ msgid "Reload Colors" +#~ msgstr "வண்ணங்களைக் குறை" + +#~ msgid "Low Screen Depth" +#~ msgstr "குறைந்த திரை ஆழம்" + +#~ msgid "Image Contains Translucency" +#~ msgstr "படிமம் மாற்றங்கள் கொண்டது" + +#, fuzzy +#~| msgid "" +#~| "

                        Color Similarity is how close colors must be in the RGB " +#~| "Color Cube to be considered the same.

                        If you set it to something " +#~| "other than Exact, you can work more effectively with dithered " +#~| "images and photos.

                        This feature applies to transparent selections, " +#~| "as well as the Flood Fill, Color Eraser and Autocrop tools.

                        To " +#~| "configure it, double click on the cube.

                        " +#~ msgid "" +#~ "

                        Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

                        If you set it to something " +#~ "other than Exact Match, you can work more effectively with " +#~ "dithered images and photos.

                        This feature applies to transparent " +#~ "selections, as well as the Flood Fill, Color Eraser and Autocrop / Remove " +#~ "Internal Border tools.

                        To configure it, click on the cube.

                        " +#~ msgstr "" +#~ "

                        வண்ணங்களின் ஒற்றுமை எப்படி RGB வண்ணப் பெட்டியை கண்டிப்பாக மூட வேண்டும்." +#~ "

                        நீங்கள் சரியான வற்றவை விட வேறு சிலவற்றை அமைக்க வேண்டுமென்றால், நீங்கள் " +#~ "நன்றாக வேலை புரியும் படிமங்களும் மற்றும் புகைப்படங்களூம்.

                        இந்த எதிர்கால " +#~ "தெரியும் தேர்ந்தெடுப்புகள், அதிக நிரப்பலும் இருக்கும், வண்ணம் அழிப்பான் மற்றும் தானாக " +#~ "வெட்டும் கருவி.

                        " + +#, fuzzy +#~| msgid "" +#~| "

                        Color Similarity is how close colors must be in the RGB " +#~| "Color Cube to be considered the same.

                        If you set it to something " +#~| "other than Exact, you can work more effectively with dithered " +#~| "images and photos.

                        This feature applies to transparent selections, " +#~| "as well as the Flood Fill, Color Eraser and Autocrop tools.

                        " +#~ msgid "" +#~ "

                        Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

                        If you set it to something " +#~ "other than Exact Match, you can work more effectively with " +#~ "dithered images and photos.

                        This feature applies to transparent " +#~ "selections, as well as the Flood Fill, Color Eraser and Autocrop / Remove " +#~ "Internal Border tools.

                        " +#~ msgstr "" +#~ "

                        வண்ணங்களின் ஒற்றுமை எப்படி RGB வண்ணப் பெட்டியை கண்டிப்பாக மூட வேண்டும்." +#~ "

                        நீங்கள் சரியான வற்றவை விட வேறு சிலவற்றை அமைக்க வேண்டுமென்றால், நீங்கள் " +#~ "நன்றாக வேலை புரியும் படிமங்களும் மற்றும் புகைப்படங்களூம்.

                        இந்த எதிர்கால " +#~ "தெரியும் தேர்ந்தெடுப்புகள், அதிக நிரப்பலும் இருக்கும், வண்ணம் அழிப்பான் மற்றும் தானாக " +#~ "வெட்டும் கருவி.

                        " + +#, fuzzy +#~| msgid "Paste &From File..." +#~ msgid "Use File..." +#~ msgstr "கோப்பிலிருந்து ஒட்டு..." + +#~ msgid "Maintainer" +#~ msgstr "பாதுகாப்பாளர்" + +#, fuzzy +#~| msgid "Circle" +#~ msgid "Michele" +#~ msgstr "வட்டம்" + +#, fuzzy +#~ msgid "Rotate 90 Degrees Counterclockwise" +#~ msgstr "எண்ணி வலச்சுற்று" + +#~ msgid "Color similarity: %1%" +#~ msgstr "வண்ண ஒற்றுமை: %1%" + +#~ msgid "Color similarity: Exact" +#~ msgstr "வண்ண ஒற்றுமை: சரியான" + +#~ msgid "%1 bytes" +#~ msgstr "%1 பைட்டுகள்" + +#~ msgid "%1 bytes (%2%)" +#~ msgstr "%1 பைட்டுகள் (%2%)" + +#~ msgid "%1 B" +#~ msgstr "%1 B" + +#~ msgid "%1 B (%2%)" +#~ msgstr "%1 B (%2%)" + +#~ msgid "%1 B (approx. %2%)" +#~ msgstr "%1 பி (தோராய. %2%)" + +#~ msgid "%1B" +#~ msgstr "%1B" + +#~ msgid "%1B (%2%)" +#~ msgstr "%1B (%2%)" + +#~ msgid "%1B (approx. %2%)" +#~ msgstr "%1B (ஏறத்தாழ. %2%)" + +#~ msgid "Custom Pen or Brush" +#~ msgstr "தனிபயன் பேனா அல்லது தூரிகை" diff --git a/po/tg/kolourpaint.po b/po/tg/kolourpaint.po new file mode 100644 index 0000000..435bb28 --- /dev/null +++ b/po/tg/kolourpaint.po @@ -0,0 +1,3062 @@ +# translation of kolourpaint.po to Tajik +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# 2004, infoDev, a World Bank organization +# 2004, Khujand Computer Technologies, Inc. +# 2004, Youth Opportunities, NGO +# Victor Ibragimov , 2005, 2019. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2019-09-29 12:28+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: English \n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 19.04.3\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "" +"НПО \"Имкониятҳои ҷавонон\" ва Khujand Computer Technologies, Inc. USA, " +"Роҷер Ковакс, Виктор Ибрагимов, Марина Колючева" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "" +"youth_opportunities@tajikngo.org,,rkovacs@khujand.org,,MarinaKL@tajikngo.org" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Баробари" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Суст кардан" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Зиёд кардани баландӣ" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, fuzzy, kde-format +msgid "Clear" +msgstr "&Пок кардан" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Ҷудо кардан: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Нақши муқарнас" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Муқарар кардан" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Ба тобиши ранги хокистари тағйир додан." + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, fuzzy, kde-format +msgid "Invert Colors" +msgstr "&Таъғироти рангҳо" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Табдилдиҳӣ" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Кам кардан ба Якранг(Лаппишуда)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Кам кардан ба Якранг" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Кам кардани Ранг ба 256(Лаппишуда) " + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Кам кардани Ранг ба 256" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Тасвир додан" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Амуди ва уфуқи тасвир додан" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Уфуқи тасвир додан" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Амуди тасвир додан" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Матн: Тағйир додани андозаи блок" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, fuzzy, kde-format +msgid "Selection: Scale" +msgstr "Ҷудо кардан: Шкалаи шустабарӣ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Ҷудо кардан: Шкалаи шустабарӣ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Тағйири андоза" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Масштабонӣ" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Ҷадвали шустабарӣ" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Дучор кардан" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Таҳрифот" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Бекор кардан: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, fuzzy, kde-format +msgid "&Undo" +msgstr "&Бекор кардан: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Баргардонидан: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, fuzzy, kde-format +msgid "&Redo" +msgstr "&Сурх" + +#: commands/kpCommandHistoryBase.cpp:454 +#, fuzzy, kde-format +msgid "Undo: %1" +msgstr "&Бекор кардан: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, fuzzy, kde-format +msgid "Undo" +msgstr "&Бекор кардан: %1" + +#: commands/kpCommandHistoryBase.cpp:462 +#, fuzzy, kde-format +msgid "Redo: %1" +msgstr "&Баргардонидан: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, fuzzy, kde-format +msgid "Redo" +msgstr "Сурх" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, fuzzy, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "_n:%1 намунаи зиёд" +msgstr[1] "%1 намунаҳои зиёд" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Интихоби ранг" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Рехта пур кардан" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, fuzzy, kde-format +#| msgid "More Image Effects (Selection)" +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Таъсири зиёд (ҷудо кардан)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "More Image Effects" +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Таъсири зиёд" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Таъсир: " + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Миқдори рангро кам кардан" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Тезӣ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, fuzzy, kde-format +#| msgid "%1 x %2" +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr "%1 x %2" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, fuzzy, kde-format +#| msgid "&Horizontal:" +msgid "Horizontal:" +msgstr "&Уфуқӣ:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, fuzzy, kde-format +#| msgid "&Vertical:" +msgid "Vertical:" +msgstr "&Амудӣ:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, fuzzy, kde-format +#| msgid "&Effect:" +msgid "O&ffset" +msgstr "&Таъсир: " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                        The Offset is the relative position where this image should be " +"placed, compared to other images.

                        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, fuzzy, kde-format +#| msgid "Text: Finish" +msgid "&Text Fields" +msgstr "Матн: Ба итмом расондан" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, fuzzy, kde-format +#| msgid "&Delete Selection" +msgid "&Delete Row" +msgstr "Ҳузфи &ҷудошуда " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Бозсози" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, fuzzy, kde-format +#| msgid "&Blue" +msgid "Value" +msgstr "&Кабуд" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, fuzzy, kde-format +#| msgid "Text: Finish" +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Матн: Ба итмом расондан" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Андозаҳо" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Нусхаи асл:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Намоиш" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, fuzzy, kde-format +#| msgid "Resize / Scale" +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Тағйири андоза/Масштабони..." + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, fuzzy, kde-format +msgid "Ac&t on:" +msgstr "Амал кунед." + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Ҳамаи тасвирот" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Ҷудо кардан" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Блоки матни" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Амалиёт" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, fuzzy, kde-format +msgid "" +"
                        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                        " +msgstr "" +"
                          Андозаи-ро тағир диҳед:андозаи тасвир калон мешавад,сохтани " +"минтақаҳои нав ва /ё ин кисабаби (пур шудаи бо ранги дуюм дараҷа) ё ин ки " +"хурд шудааст,кутоҳкунии ин дар ҳуқуқ ва / ё ин ки бо сабаб. <литий> " +"Масштаб :тасвир васеъ карда мешавад, такрор кардани пикселҳо ё ин ки " +"пачақ карда шуда, паст намудани пикселҳо. <литий> Масштаби Ҳамвор :" +"Ин ҳамон чизе дар Масштаби ғайр аз эзоҳ он ки инпайвастшавии " +"пикселҳоро омехта менамояд, барои он ки иҷро кардани тасвири нигоҳ карда " +"истода.
                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Тағйири андоза" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Масштабонӣ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "Ҷ&адвали шустабарӣ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Васеъият:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Баландӣ:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Нав:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Фоизҳо:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Нигоҳ доштани &муносибат" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to resize the text box?

                        " +msgstr "" +"

                        Тағирдиҳии андозаи матни қуттӣ ба %1x%2метавонад миқдори асосии " +"хотир. Ин метавонад низоми зиндаи ҷавобро хурд намояд. ва дигар масъалаи " +"амалиро ҷеғ занад.

                        Шумо дар ҳақиқат мехоҳед ба андозаи қуттӣ тағирот " +"дароред?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, fuzzy, kde-format +#| msgid "Resize Text Box?" +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Андозаи матнии блокро тағйир додан? " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "А&ндозаи матнии блокро тағйир додан" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, fuzzy, kde-format +msgid "" +"

                        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to resize the image?

                        " +msgstr "" +"

                        Тағирдиҳии андозаи тасвир дар %1%2метавонад миқдори асосии хотир " +"бошад. Ин метавонад низоми зиндаи ҷавобро хурд намояд. ва дигар масъалаи " +"амалиро ҷеғ занад.

                        Шумо дар ҳақиқат мехоҳед ба андозаи қуттӣ " +"тағирот дароред?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, fuzzy, kde-format +#| msgid "Resize Image?" +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Тағйир додани ченак?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Т&ағйир додани ченак" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, fuzzy, kde-format +msgid "" +"

                        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to scale the image?

                        " +msgstr "" +"

                        Ҳисоб кардани тасвир ба %1x%2метавонад миқдори асосии амалро дар " +"хотир нигоҳ дорад. Ин метавонад низоми зиндаи ҷавобро хурд намояд. ва дигар " +"масъалаи амалиро ҷеғ занад.

                        Шумо дар ҳақиқат мехоҳед ба боло " +"баромадани тасвир тағирот дароред?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, fuzzy, kde-format +#| msgid "Scale Image?" +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Тасвиротро ба маштаб даровардан? " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Та&свиротро ба маштаб даровардан" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, fuzzy, kde-format +msgid "" +"

                        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to scale the selection?

                        " +msgstr "" +"

                        Интихоб намудани ба масштаб даровардан ба %1x%2 метавонад миқдори " +"асосии амалро дар хотир. Ин метавонад низоми зиндаи ҷавобро хурд намояд. ва " +"дигар масъалаи амалиро ҷеғ занад.

                        Шумо дар ҳақиқат мехоҳед ба " +"андозаи қуттӣ тағирот дароред?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, fuzzy, kde-format +#| msgid "Scale Selection?" +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Масштабонии ҷудокунӣ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Масш&табонии ҷудокунӣ" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, fuzzy, kde-format +msgid "" +"

                        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the image?" +msgstr "" +"

                        Ҳисоб кардани ҳамвор ба %1x%2метавонад миқдори асосии амалро дар " +"хотир нигоҳ дорад. Ин метавонад низоми зиндаи ҷавобро хурд намояд. ва дигар " +"масъалаи амалиро ҷеғ занад.

                        Шумо дар ҳақиқат мехоҳед ба боло " +"баромадани тасвир тағирот дароред?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, fuzzy, kde-format +#| msgid "Smooth Scale Image?" +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Ҷадвали шустабарӣ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Ҷадвали шустабар&ии тасвир" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, fuzzy, kde-format +msgid "" +"

                        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the selection?" +"

                        " +msgstr "" +"

                        щественное количество памяти. Это может уменьшить живой отклик " +"системы и вызвать другие прикладные проблемы ресурса.

                        - Вы " +"уверенный, Вы хотите пригладить масштаб выбор Ҳисоб намудани интихоби " +"ҳамвор дар %1%2 метавонад миқд амалро дар хотир нигоҳ дорад.Ин метавонад " +"хурд " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, fuzzy, kde-format +#| msgid "Smooth Scale Selection?" +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Масштабонии ҷудокунӣ?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Масштабон&ии ҷудокунӣ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Ҷудо кардашударо гардондан?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Тасвирот&ро гардондан" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, fuzzy, kde-format +msgid "After rotate:" +msgstr "Баъди %1:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Ҷиҳат" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Муқобили ақрабаки соат" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&Аз рӯи ақрабаки соат" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Кунҷ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 г&радус" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 г&радус" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 &градус" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Д&игар:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "град" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, fuzzy, kde-format +#| msgid "" +#| "

                        Rotating the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                        Are you sure want to rotate the selection?

                        " +msgid "" +"

                        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to rotate the selection?

                        " +msgstr "" +"

                        Тобхурии тасвир дар %1x%2 метавонад миқдори асосии амалро дар хотир " +"нигоҳ дорад. Ин метавонад низоми зиндаи ҷавобро хурд намояд. ва дигар " +"масъалаи амалиро ҷеғ занад.

                        Шумо дар ҳақиқат мехоҳед амали тобхуриро " +"тағирот дароред?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, fuzzy, kde-format +#| msgid "Rotate Selection?" +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Ҷудо кардашударо гардондан?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Ҷу&до кардашударо гардондан?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, fuzzy, kde-format +msgid "" +"

                        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to rotate the image?

                        " +msgstr "" +"

                        Тобиши тасвирот ба %1x%2, метавонад миқдори зиёди хотираро гирад. Ин " +"метавонад кори низомро суст кунад ва дигар масъалае оиди барнома пайдо " +"кунад.

                        Оё мутмаинед, ки мехоҳед тасвиротро битобед?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, fuzzy, kde-format +#| msgid "Rotate Image?" +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Тасвиротро гардондан?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Тасвирот&ро гардондан" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Ҷудо кардашударо вайрон кардан?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "&Тасвиротро вайрон кардан" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, fuzzy, kde-format +msgid "After skew:" +msgstr "Баъди %1:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Уфуқӣ:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Амудӣ:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, fuzzy, kde-format +#| msgid "" +#| "

                        Skewing the selection to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                        Are you sure want to skew the selection?

                        " +msgid "" +"

                        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to skew the selection?

                        " +msgstr "" +"

                        Ҳосили таҳрифи қисми ҷудошудаи тасвирот дар %1x%2 каме ҳаҷми хотираи " +"оперативиро талаб мекунад. Ин метавонад ба суръати ҷавоби низом таъсир " +"расонад.

                        Идома диҳам?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, fuzzy, kde-format +#| msgid "Skew Selection?" +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Ҷудо кардашударо вайрон кардан?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Ҷу&до кардашударо вайрон кардан" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, fuzzy, kde-format +#| msgid "" +#| "

                        Skewing the image to %1x%2 may take a substantial amount of " +#| "memory. This can reduce system responsiveness and cause other application " +#| "resource problems.

                        Are you sure want to skew the image?

                        " +msgid "" +"

                        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to skew the image?

                        " +msgstr "" +"

                        Ҳосили таҳрифи тасвиротро дар %1x%2 каме ҳаҷми хотираи оперативиро " +"талаб мекунад. Ин метавонад ба суръати ҷавоби низом таъсир расонад.

                        " +"Идома диҳам?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, fuzzy, kde-format +#| msgid "Skew Image?" +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Тасвиротро вайрон кардан?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "&Тасвиротро вайрон кардан" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, fuzzy, kde-format +#| msgid "Color Similarity" +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Мутобиқати ранг" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, fuzzy, kde-format +#| msgid "RGB Color Cube Distance" +msgid "&RGB Color Cube Distance" +msgstr "RGB Масофаи куби." + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Мутобиқоти дақиқ" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, fuzzy, kde-format +#| msgid "Save Preview" +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Нигоҳ доштани намоиш" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, fuzzy, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 байтҳо (қариб. %2%)" +msgstr[1] "%1 байтҳо (қариб. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Натавонистам \"%1\"-ро боз кунам. " + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Натавонистам \"%1\"-ро боз кунам -навъи тасвирот ё файли номаълум хароб аст." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Қодир ба нигоҳ доштани файл нестам - ахборот нокифоя аст." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Mimetype: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<неcт>" + +#: document/kpDocument_Save.cpp:89 +#, fuzzy, kde-format +#| msgid "Internal Error" +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Хатои дохили " + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                        The %1 format may not be able to preserve all of the image's " +"color information.

                        Are you sure you want to save in this format?

                        " +msgstr "" +"

                        Формат %1 мумкин дорои нигоҳ доштани ахбороти тасвири " +"ранагаро нест.

                        Шумо мехоҳед инро дар формат ёддошт кунед?

                        " + +#: document/kpDocument_Save.cpp:131 +#, fuzzy, kde-format +#| msgid "Lossy File Format" +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Файли формат бо гумгаштаҳояш" + +#: document/kpDocument_Save.cpp:140 +#, fuzzy, kde-format +msgid "" +"

                        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                        Are " +"you sure you want to save at this color depth?

                        " +msgstr "" +"

                        Дар хотир гузоштани тасвир дар ранги пасти бо чуқурии %1- ба гум " +"кардани ахбороти ранг меоварад.Ҳамаи чизҳои мусаффо ҳам дур карда мешаванд." +"

                        Шумо мехоҳед,ки дар ҳамин чуқурии ранг дар хотир гузоштан?

                        Экономия изображения в низкой цветной глубине %1-bit может иметь " +"следствием потерю цветной информации" + +#: document/kpDocument_Save.cpp:150 +#, fuzzy, kde-format +#| msgid "Low Color Depth" +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Каъри ранги паст" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" +"Натавонистам файлро захира кунам - эҷоди файли муваққатӣ имконпазир нест. " + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "Натавонистам файлро бо номи\"%1\".захира кунам. " + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Натавонистам файлро захира намоям - хатои таҳвил ба сервир." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Ҳудуди дохилиро &ҳузф кардан." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Ҳудуди дохилиро ҳузф кардан." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Автобуриш&от" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Автобуришот" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"Рангҳои ранга интихоби дарунии сарҳадро аз як ҷо ба ҷои дигар кучонидан " +"номумкин аст чунки ин аллакай ҷойро нишон намедиҳад." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, fuzzy, kde-format +#| msgid "Cannot Remove Internal Border" +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Наметавонам ҳудуди дохилиро ҳузф кунам." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "Рангҳо бо таври автоматӣ тасвирро нишон дода наметавонанд чунки" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, fuzzy, kde-format +#| msgid "Cannot Autocrop" +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Наметавонам автобуриширо иҷро кунам." + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Тасвиротро нигоҳ доштан ҳамчун " + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Ҷудо кардан: Эҷод" + +#: kolourpaint.cpp:51 +#, fuzzy, kde-format +#| msgid "KolourPaint" +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, fuzzy, kde-format +#| msgid "Paint Program for KDE" +msgid "Paint Program by KDE" +msgstr "Муҳаррири графикии КDЕ" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Мушоҳидаткунанда" + +#: kolourpaint.cpp:72 +#, fuzzy, kde-format +msgid "Martin Koller" +msgstr "Лавҳаи абзорҳо\"Матн\"" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Ишоротҳо " + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, fuzzy, kde-format +#| msgid "More Image Effects" +msgid "Image Effects" +msgstr "Таъсири зиёд" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgid "Image files to open, optionally" +msgstr "" +"Тасвири сангпушт ёфт нашуд.\n" +"Сабтоти барномаро биозмоед." + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, fuzzy, kde-format +msgid "&View" +msgstr "&Намоиш" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Тасвирот" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, fuzzy, kde-format +#| msgid "Colors" +msgid "&Colors" +msgstr "Рангҳо" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, fuzzy, kde-format +msgid "Main Toolbar" +msgstr "Лавҳаи абзорҳо\"Матн\"" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Лавҳаи абзорҳо\"Матн\"" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, fuzzy, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Ҷудо кардан: Гузарондан" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "" + +#: kpThumbnail.cpp:129 +#, fuzzy, kde-format +#| msgid "Thumbnail" +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Нуқсаи хурдкардашуда" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, fuzzy, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Дастакро кашед барои тағирдиҳии андозаи тасвир." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Тағирдиҳии андозаи тасвир:Ҳамаи тугмачаҳои мушакро сар диҳед." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Тағирдиҳии андозаи тасвир:Пахши рост барои рад кардан." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Матн" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, fuzzy, kde-format +#| msgid "Could not open \"%1\"." +msgid "Could not open color palette \"%1\"." +msgstr "Натавонистам \"%1\"-ро боз кунам. " + +#: lgpl/generic/kpColorCollection.cpp:154 +#, fuzzy, kde-format +#| msgid "" +#| "Could not open \"%1\" - unsupported image format.\n" +#| "The file may be corrupt." +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Натавонистам \"%1\"-ро боз кунам -навъи тасвирот ё файли номаълум хароб аст." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, fuzzy, kde-format +#| msgid "Could not open \"%1\"." +msgid "Could not open KDE color palette \"%1\"." +msgstr "Натавонистам \"%1\"-ро боз кунам. " + +#: lgpl/generic/kpColorCollection.cpp:264 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save color palette as \"%1\"." +msgstr "Натавонистам файлро бо номи\"%1\".захира кунам. " + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, fuzzy, kde-format +#| msgid "KolourPaint" +msgid "Use KolourPaint Defaults" +msgstr "KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, fuzzy, kde-format +#| msgid "&Flip..." +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Баргардонидан..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, fuzzy, kde-format +#| msgid "Reloa&d" +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Пурбор кардан&d" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, fuzzy, kde-format +#| msgid "&Scale" +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Масштабонӣ" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Тасвиротро ҳамчун нигоҳ доштан" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, fuzzy, kde-format +#| msgid "&Delete Selection" +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Ҳузфи &ҷудошуда " + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, fuzzy, kde-format +msgid "Color Box" +msgstr "Рангҳо" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Ҳуҷҷат \"%1\" тағйир додашуда буд.\n" +"Мехоҳед онро нигоҳ доред?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Ҳуҷҷат \"%1\" тағйир додашуда буд.\n" +"Мехоҳед онро нигоҳ доред?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Do you want to save it?" +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Ҳуҷҷат \"%1\" тағйир додашуда буд.\n" +"Мехоҳед онро нигоҳ доред?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, fuzzy, kde-format +#| msgid "Colors" +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Рангҳо" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Reloading will lose all changes since you last saved it.\n" +#| "Are you sure?" +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Санад \"%1\" тағйир додашуда буд.\n" +"Пурборкунии вай ба он оварда мерасонад, ки ҳамаи тайиротҳо бо нигоҳдошти " +"охирон нобуд мешаванд.\n" +"Идома диҳам?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, fuzzy, kde-format +msgid "&Reload" +msgstr "Пурбор кардан&d" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Reloading will lose all changes.\n" +#| "Are you sure?" +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Санад \"%1\" тағйир додашуда буд.\n" +"Пурборкунии вай ба нобуд кардани ҳамаи тайиротҳо оварда мерасонад.\n" +"Идома диҳам?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, fuzzy, kde-format +#| msgid "" +#| "The document \"%1\" has been modified.\n" +#| "Reloading will lose all changes.\n" +#| "Are you sure?" +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Санад \"%1\" тағйир додашуда буд.\n" +"Пурборкунии вай ба нобуд кардани ҳамаи тайиротҳо оварда мерасонад.\n" +"Идома диҳам?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, fuzzy, kde-format +msgid "Save Color Palette As" +msgstr "&Таъғироти рангҳо" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr " Дар тирезаи нав &гузоштан " + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "Ҳузфи &ҷудошуда " + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "Нуқсагири дар &файл..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Гузоштан &аз файл... " + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Матн: Эҷоди блок " + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Матн: гузоштан" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Наметавонам гузорам" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Матн: Блокро ҳузф кардан" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Ҷудо кардан: Ҳузф" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Матн: Ба итмом расондан" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Ҷудо кардан: Барҳам додан " + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, fuzzy, kde-format +#| msgid "Copy to File" +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Нуқсагирӣ дар файл" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, fuzzy, kde-format +#| msgid "Paste From File" +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Гузоштан аз файл" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "&Содирот кардан" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, fuzzy, kde-format +msgid "Scan..." +msgstr "..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Пурбор кардан&d" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, fuzzy, kde-format +#| msgid "Open Image" +msgctxt "@title:window" +msgid "Open Image" +msgstr "Тасвиротро кушодан" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] "" +msgstr[1] "" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, fuzzy, kde-format +#| msgid "Paste in &New Window" +msgid "Hide Main Window" +msgstr " Дар тирезаи нав &гузоштан " + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, fuzzy, kde-format +#| msgid "Save Image As" +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Тасвиротро ҳамчун нигоҳ доштан" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, fuzzy, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "&Содирот кардан" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Санад \"%1\" тағйир додашуда буд.\n" +"Пурборкунии вай ба он оварда мерасонад, ки ҳамаи тайиротҳо бо нигоҳдошти " +"охирон нобуд мешаванд.\n" +"Идома диҳам?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Санад \"%1\" тағйир додашуда буд.\n" +"Пурборкунии вай ба нобуд кардани ҳамаи тайиротҳо оварда мерасонад.\n" +"Идома диҳам?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Print Image" +msgstr "Ҳамаи тасвирот" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Пеш аз фиристодан, шумо бояд тасвиротро нигоҳ доред.\n" +"Инро иҷро кардан?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Ҳуҷҷат \"%1\" тағйир додашуда буд.\n" +"Мехоҳед онро нигоҳ доред?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Тағйи&ри андоза/Масштабони кардан... " + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Мон&дани мисли тасвири (Crop)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, fuzzy, kde-format +#| msgid "&Vertical (upside-down)" +msgid "&Flip (upside down)" +msgstr "&Амуди (аз боло ба поён)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, fuzzy, kde-format +#| msgid "Flip horizontally" +msgid "Mirror (horizontally)" +msgstr "Уфуқи тасвир додан" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "То&биш..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, fuzzy, kde-format +msgid "Rotate &Left" +msgstr "Тасвирот&ро гардондан" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, fuzzy, kde-format +msgid "Rotate Righ&t" +msgstr "Тасвирот&ро гардондан" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "&Ғалат кардан..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Кам кардан ба Як&ранг(Лаппишуда)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Тағйир додан дар &тобиши хокистарӣ" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Таъғироти рангҳо" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Пок кардан" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Таъсироти зиёд..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, fuzzy, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Тасвирот" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, fuzzy, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Ҷудо &кардан" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Намоиши &роҳ" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Оилаи ҳуруфҳо " + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, fuzzy, kde-format +msgid "Font Size" +msgstr "Матн: Андозаи ҳуруф" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Ним фарбеҳ" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, fuzzy, kde-format +msgid "Italic" +msgstr "Матн: Курсив" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Хат кашидашуда" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Хат кашидан" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Пешанги Интихоби Асбоб(Гурӯҳи#1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Оянда Интихоби Асбоб(Гурӯҳи#1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Пешанги Интихоби Асбоб(Гурӯҳи#2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Оянда Интихоби Асбоб(Гурӯҳи#2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, fuzzy, kde-format +#| msgid "Opaque" +msgid "&Draw Opaque" +msgstr "Норавшан" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, fuzzy, kde-format +#| msgid "Color Similarity" +msgid "Draw With Color Similarity..." +msgstr "Мутобиқати ранг" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, fuzzy, kde-format +msgid "Tool Box" +msgstr "Блоки матни" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Намоиши &шабака " + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Намоиши &хурдшавии нуқсагирӣ" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Ҳамаи тасвирот" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Мӯқалам " + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Бо мӯқаламҳои ҳар гуна намуд ва ченак кашед." + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Пахш намоед то ин ки нуқтаҳоро бароред ё ин ки зарбаҳоро бароред." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Тоза намудани ранг" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Рангҳои пикселии нақшаи пешро ба ранги дараҷаи дуюм иваз менамояд." + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Пахш намоед ё ин ки нақшаи рангҳот пеши пикселҳоро нобуд созем." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Ластик" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Хатогиҳоро ислоҳ кунед." + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Пахш намоед ё ин ки бароед то ин ки нобуд созем." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Биёед ҳамаи тугмачаҳои мушакро ба кор дарорем." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Қалам" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Кашидани нуқта ё хат бо даст" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Пошдиҳак" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Граффити " + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Клик кунед ё барои графитти гузаронед. " + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, fuzzy, kde-format +msgid "Right click to cancel." +msgstr "Тағирдиҳии андозаи тасвир:Пахши рост барои рад кардан." + +#: tools/kpTool_UserNotifications.cpp:45 +#, fuzzy, kde-format +msgid "Left click to cancel." +msgstr "Тағирдиҳии андозаи тасвир:Пахши рост барои рад кардан." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Интихоби ранг аз тасвир" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Барои интихоби ранг дар инҷо пахш кунед." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Мавзеи тасвиротро бо ранг пур кардан" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Барои ба кор андохтани фарш кунонӣ, клик кунед." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Каҷшуда" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Каҷшударо кашидан" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Оғоз кардан ва анҷом додани корҳо." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, fuzzy, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "%1нуқтаи аввали назоратро барқарор кунед, ё ин ки %2 анҷом диҳед." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, fuzzy, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "%1нуқтаи аввали назоратро барқарор кунед, ё ин ки %2 анҷом диҳед." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, fuzzy, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "%1нуқтаи охирини назоратро барқарор кунед, ё ин ки %2 анҷом диҳед." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, fuzzy, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "%1нуқтаи охирини назоратро барқарор кунед, ё ин ки %2 анҷом диҳед." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Хат" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Хатро кашидан" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Гузаронед барои оғози кашидан ." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Бисёркунҷа" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Кашидани бисёркунҷа" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Барои кашидани хати ибтидоӣ онро бигузаронед." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, fuzzy, kde-format +msgid "Left drag another line or right click to finish." +msgstr "%1 хати дигар ё ин ки %2 анҷом диҳед." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, fuzzy, kde-format +msgid "Right drag another line or left click to finish." +msgstr "%1 хати дигар ё ин ки %2 анҷом диҳед." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Хатҳои пайвастшуда" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Кашидани хатҳои пайваста" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Эллипс" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Эллипсис ва давраҳо кашед." + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Росткунҷа" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Кашидани росткунҷа ё чоркунҷа" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Росткунҷаи даврашакл" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Росткунҷаи дуранг ва майдон бо кунҷи гирд карда шуда" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Аз чап интихобро ташкил кунед." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Аз чап интихобро ҷой кардан." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Интихоби аз тарафи чап бударо аҳамият диҳед." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Ҷудо кардан: Эҷод" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Ҷудо кардан: Шаффофӣ" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Ҷудо кардан: Ранги шаффофӣ" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Ҷудо кардан: Рангиш шаффофӣ монанд" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Ҷудо курдан (эллиптикӣ)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Интихоби эллиптикӣ ё ин ки интихоби даврзан кунед." + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Ҷудо кардан (шакли озод)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Аз интихоб озод кардан." + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Ҷудокунӣ (росткунҷа)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Росткунҷаро интихоб кунед." + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Ҷудо кардан: Гузарондан" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Доғ" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Матнро навистан" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Матн: Backspace" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Матн: Ҳузф" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Матн: Сатри нав" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Матн: Навиштан" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Аз чап қуттичаи матнро созед." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Аз чап матнро ба қуттича баред." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Матн: Гузаронидани блок" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Аз чап қуттии матнро аз нав андоза кунед." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Бигзоред ғалақача ҷои курсорро дигар кунад." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Матн: Заминаи эҷод" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Матн: Заминаи шаффофӣ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Матн: Иввази ранг" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Матн: Ранг" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Матн: Замина" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Матн: Ҳуруф" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Матн: Андозаи ҳуруф" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Матн: Нимафарбеҳ" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Матн: Курсив" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Матн: Хаткашидашуда" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Матн: Хаткашида" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, fuzzy, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Пинҳон намудани &хурдшавии нуқсагирӣ" + +#: views/kpZoomedThumbnailView.cpp:65 +#, fuzzy, kde-format +msgid "%1% - Thumbnail" +msgstr "Нуқсаи хурдкардашуда" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        To configure it, click on the cube.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                        Color Similarity: %1%

                        Click to configure.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                        Color Similarity: Exact Match

                        Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Рӯшани:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "&Бозсози" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Мухо&лифот" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Гамма:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Боз&сози" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "&Каналҳо:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Ҳама" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Сурх" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Сабз" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Кабуд" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Партофтани &ҳама маъно" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Танзимотҳо" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Бузургӣ:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Фаъол сохтан" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Рангҳо" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, fuzzy, kde-format +#| msgid "&New:" +msgid "&Hue:" +msgstr "&Нав:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, fuzzy, kde-format +#| msgid "&Blue" +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Кабуд" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Сурх" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Сабз" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Кабуд" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Ҳама" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Каналҳо" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Сафеду-сиёҳ" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, fuzzy, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Як&ранга (Лаппишуда)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, fuzzy, kde-format +msgid "256 co&lor" +msgstr "256 Ра&нг" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, fuzzy, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 Ра&нг(Лаппишуда)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, fuzzy, kde-format +msgid "24-&bit color" +msgstr "24-&ранги кам" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, fuzzy, kde-format +msgid "Reduce To" +msgstr "Хурдтар кардан:" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                        To change the color of a color cell itself, double-click on it.

                        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                        " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Дигаргун сохтан &дар:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Cифа&т:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Намоиш" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Monochrome" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Monochrome (Dithered)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Ранг" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Ранг(Лағжондашуда)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-бит Ранг" + +#: widgets/kpPrintDialogPage.cpp:58 +#, fuzzy, kde-format +#| msgid "Image file to open" +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "" +"Тасвири сангпушт ёфт нашуд.\n" +"Сабтоти барномаро биозмоед." + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Шаффоф" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, fuzzy, kde-format +#| msgid "KolourPaint" +msgid "KolourPaint Defaults" +msgstr "KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, fuzzy, kde-format +#| msgid "Colors" +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Рангҳо" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Доира" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Квадрат" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Хати нишеб" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Хати бозгашт" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Ғайри рехта пуркунӣ" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Бо ранги замина пур кардан" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Мавқеи пеши рангро пур кардан" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Норавшан" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Санади \"%1\" аллакай мавҷуд аст\n" +#~ "Онро ивваз кунам?" + +#, fuzzy +#~| msgid "" +#~| "A document called \"%1\" already exists.\n" +#~| "Do you want to overwrite it?" +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Санади \"%1\" аллакай мавҷуд аст\n" +#~ "Онро ивваз кунам?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Мондани сатҳи тасвири тағиршаванда дар қиммати ,ки зиёд нест аз " +#~ "100%натиҷаҳои дар таҳрирдиҳи норасо ва душвориҳо дар тағирдиҳи.\n" +#~ "Шумо мехоҳед монед сатҳи тағиршавандаро дар %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Сабт намудани масштаб дар %1%" + +#~ msgid "None" +#~ msgstr "Ғоиб аст" + +#~ msgid "" +#~ "

                        Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                        Are you sure want to resize the image?

                        " +#~ msgstr "" +#~ "

                        Тағир намудани андозаи тасвир %1x%2 мумкин ,ки асосӣ вақти " +#~ "хотираро мегирад.Ин метавонад ба камкунии системаи ҷавобдиҳи ва метавонад " +#~ "зарар расонад ба дигар аппликасияҳо сарчашмаи душвориҳо.

                        Шумо " +#~ "мехоҳед тасвирро андозаашро тағир намоед?

                        " + +#~ msgid "Overwrite" +#~ msgstr "Иввазот" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Натавонистам \"%1\"- ро боз кунам - mimetype-и номаълум." + +#~ msgid "Save Preview" +#~ msgstr "Нигоҳ доштани намоиш" + +#~ msgid "" +#~ "

                        KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

                        This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

                        " +#~ msgstr "" +#~ "

                        KolourPaint наметавонад миқдори клипбордро часпондан барои он ки " +#~ "маълумот ногаҳони гум шуд.

                        Ин одатан дар он вақт рӯй медиҳад,ки " +#~ "агар аппликасияе,ки барои маълумотҳо клипборд ҷавобгар буд ,маҳкам шуданд." +#~ "

                        KolourPaint не может приклеить содержание клипборда, поскольку " +#~ "данные неожиданно исчезли" + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Гузоштан &дар мизи кори (дар марказ)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Гузоштан дар мизи кори (&сохтан)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Шумо бояд тасвиротро ба тарзи маҳали пеш аз сабт кардани он дар мизи " +#~ "корӣнигоҳ доред.\n" +#~ "Инро иҷро кардан? " + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Шумо бояд тасвиротро нигоҳ доред пеш аз сабт кардани он дар мизи корӣ.\n" +#~ "Инро иҷро кардан? " + +#~ msgid "Could not change wallpaper." +#~ msgstr "Натавонистам танзимотӣ ҳардуи мизи кориро тайир диҳам." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Тасвиро ҷудо кардан" + +#~ msgid "Flip Image" +#~ msgstr "Инъикоси тасвирот" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Амуди (аз боло ба поён)" + +#~ msgid "&Horizontal" +#~ msgstr "&Уфуқи" + +#, fuzzy +#~| msgid "Could not open \"%1\" - out of graphics memory." +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Натавонистам \"%1\"-ро боз кунам - хотираи графикии хеле кам аст." + +#, fuzzy +#~| msgid "Cannot Paste" +#~ msgid "Cannot Scan" +#~ msgstr "Наметавонам гузорам" + +#~ msgid "&Flip..." +#~ msgstr "&Баргардонидан..." + +#, fuzzy +#~ msgid "" +#~ "

                        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                        If you save this image, any color loss will " +#~ "become permanent.

                        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


                        It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

                        If you save " +#~ "this image, this loss of translucency will become permanent.

                        " +#~ msgstr "" +#~ "%1 метавонад бисёртар рангҳо доштан, баръакси ҷории тартиботи экранӣ. Дар " +#~ "вақти нишон додан мумкин аст, ки якхел рангҳо тағйир ёбанд.Кӯшиш намоед, " +#~ "ки қаъри ранги экранро то %2bpp, зиёд кунед.\n" +#~ "Дар инҷо ҳамин хел шафоффӣ аст,ки ба пуррагӣ нигоҳ дошта намешавад. " +#~ "Маълумотҳои нимшафофф кардани 1-битаи ниқоби шафоффӣ яклӯхт карда " +#~ "мешаванд." + +#, fuzzy +#~ msgid "" +#~ "

                        The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                        If you save this image, any color loss will " +#~ "become permanent.

                        To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

                        " +#~ msgstr "" +#~ "Ин %1метавонад бисёр рангҳоро дар экрани вуҷуд буда дошта бошад.Барои " +#~ "нишон додани ин рангҳо камакаки ранг дигаргун мешавад.Кӯшиш намоед ки " +#~ "чуқурии экранатон %2bpp бошад. " + +#, fuzzy +#~ msgid "" +#~ "

                        The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                        If you save this image, this loss of " +#~ "translucency will become permanent.

                        " +#~ msgstr "" +#~ "%1 таркиби нисфшаффоф аст,ки нисфанмададгир мебошад. Санаи нисфшаффофи " +#~ "қариб ба 1-бит ниқоби шаффофи баробар мешавад." + +#, fuzzy +#~ msgid "" +#~ "

                        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                        If you save this image, any color loss will become " +#~ "permanent.

                        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


                        It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

                        If you save this " +#~ "image, this loss of translucency will become permanent.

                        " +#~ msgstr "" +#~ "%1 метавонад бисёртар рангҳо доштан, баръакси ҷории тартиботи экранӣ. Дар " +#~ "вақти нишон додан мумкин аст, ки якхел рангҳо тағйир ёбанд.Кӯшиш намоед, " +#~ "ки қаъри ранги экранро то %2bpp, зиёд кунед.\n" +#~ "Дар инҷо ҳамин хел шафоффӣ аст,ки ба пуррагӣ нигоҳ дошта намешавад. " +#~ "Маълумотҳои нимшафофф кардани 1-битаи ниқоби шафоффӣ яклӯхт карда " +#~ "мешаванд." + +#, fuzzy +#~ msgid "" +#~ "

                        The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                        If you save this image, any color loss will become " +#~ "permanent.

                        To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

                        " +#~ msgstr "" +#~ "Ин %1метавонад бисёр рангҳоро дар экрани вуҷуд буда дошта бошад.Барои " +#~ "нишон додани ин рангҳо камакаки ранг дигаргун мешавад.Кӯшиш намоед ки " +#~ "чуқурии экранатон %2bpp бошад. " + +#, fuzzy +#~ msgid "" +#~ "

                        The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                        If you save this image, this loss of " +#~ "translucency will become permanent.

                        " +#~ msgstr "" +#~ "%1 таркиби нисфшаффоф аст,ки нисфанмададгир мебошад. Санаи нисфшаффофи " +#~ "қариб ба 1-бит ниқоби шаффофи баробар мешавад." + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Натавонистам \"%1\"-ро боз кунам - хотираи графикии хеле кам аст." + +#~ msgid "Selection: Transparency" +#~ msgstr "Ҷудо кардан: Шаффофӣ" + +#~ msgid "You have to restart KolourPaint for these changes to take effect." +#~ msgstr "Барои тағйиротро ба кор бурдан, KolourPaint -ро ба шурӯъ дароред." + +#~ msgid "Toolbar Settings Changed" +#~ msgstr "Танзимотӣ панели асбобҳо тағйир ёфтан" + +#~ msgid "Hide &Path" +#~ msgstr "Пинҳони &роҳ" + +#~ msgid "Hide &Grid" +#~ msgstr "Пинҳони &шабака" + +#~ msgid "Hide T&humbnail" +#~ msgstr "Пинҳон намудани &хурдшавии нуқсагирӣ" + +#, fuzzy +#~| msgid "Reduce Colors" +#~ msgid "Reload Colors" +#~ msgstr "Миқдори рангро кам кардан" + +#~ msgid "Low Screen Depth" +#~ msgstr "Қаъри ранги пастии экран" + +#~ msgid "Image Contains Translucency" +#~ msgstr "Тасвирот дорои шаффофи аст." + +#, fuzzy +#~| msgid "" +#~| "

                        Color Similarity is how close colors must be in the RGB " +#~| "Color Cube to be considered the same.

                        If you set it to something " +#~| "other than Exact, you can work more effectively with dithered " +#~| "images and photos.

                        This feature applies to transparent selections, " +#~| "as well as the Flood Fill, Color Eraser and Autocrop tools.

                        To " +#~| "configure it, double click on the cube.

                        " +#~ msgid "" +#~ "

                        Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

                        If you set it to something " +#~ "other than Exact Match, you can work more effectively with " +#~ "dithered images and photos.

                        This feature applies to transparent " +#~ "selections, as well as the Flood Fill, Color Eraser and Autocrop / Remove " +#~ "Internal Border tools.

                        To configure it, click on the cube.

                        " +#~ msgstr "" +#~ "

                        Ранги мутобиқ дар барномаи ранги RGB рангҳо бояд мутобиқ " +#~ "оянд.

                        Агар инро ба дигар чизи аз ин Дақиқ хубтар сабт " +#~ "кунед, шумо бо тасвирот ва суратҳои лапида истода боз ҳам самаранок кор " +#~ "хоҳед кард.

                        Ин хусусиятҳо ба ҷудокунии шаффоф ба монанди асбобҳои " +#~ "рехта пуркунӣ, ранги резинка ва худбуриш низ истифода мешавад.

                        " +#~ "

                        Барои танзим намудани ин ба рӯи мукааб ду маротиба зер кунед.

                        " + +#, fuzzy +#~| msgid "" +#~| "

                        Color Similarity is how close colors must be in the RGB " +#~| "Color Cube to be considered the same.

                        If you set it to something " +#~| "other than Exact, you can work more effectively with dithered " +#~| "images and photos.

                        This feature applies to transparent selections, " +#~| "as well as the Flood Fill, Color Eraser and Autocrop tools.

                        " +#~ msgid "" +#~ "

                        Color Similarity is how close colors must be in the RGB " +#~ "Color Cube to be considered the same.

                        If you set it to something " +#~ "other than Exact Match, you can work more effectively with " +#~ "dithered images and photos.

                        This feature applies to transparent " +#~ "selections, as well as the Flood Fill, Color Eraser and Autocrop / Remove " +#~ "Internal Border tools.

                        " +#~ msgstr "

                        Ранги монанд " + +#, fuzzy +#~| msgid "Paste &From File..." +#~ msgid "Use File..." +#~ msgstr "Гузоштан &аз файл... " + +#~ msgid "Maintainer" +#~ msgstr "Мушоият " + +#, fuzzy +#~| msgid "Circle" +#~ msgid "Michele" +#~ msgstr "Доира" + +#, fuzzy +#~ msgid "Rotate 90 Degrees Counterclockwise" +#~ msgstr "&Муқобили ақрабаки соат" + +#~ msgid "Color similarity: %1%" +#~ msgstr "Мутобиқати ранг: %1%" + +#~ msgid "Color similarity: Exact" +#~ msgstr "Мутобиқоти ранг: Дақиқ" + +#~ msgid "%1 bytes" +#~ msgstr "%1 байт" + +#~ msgid "%1 bytes (%2%)" +#~ msgstr "%1 байт (%2%)" + +#~ msgid "%1 B" +#~ msgstr "%1 B" + +#~ msgid "%1 B (%2%)" +#~ msgstr "%1 B (%2%)" + +#~ msgid "%1 B (approx. %2%)" +#~ msgstr "%1 B (approx. %2%)" + +#~ msgid "%1B" +#~ msgstr "%1B" + +#~ msgid "%1B (%2%)" +#~ msgstr "%1B (%2%)" + +#~ msgid "%1B (approx. %2%)" +#~ msgstr "%1B (қариб. %2%)" + +#~ msgid "Custom Pen or Brush" +#~ msgstr "Қалам ё мӯқалами дигар" diff --git a/po/tr/kolourpaint.po b/po/tr/kolourpaint.po new file mode 100644 index 0000000..a7339a0 --- /dev/null +++ b/po/tr/kolourpaint.po @@ -0,0 +1,2735 @@ +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Adem Alp Yıldız , 2004. +# Alper Sen , 2005. +# Alper Şen , 2005. +# Elfun K. , 2009. +# Görkem Çetin , 2005. +# Görkem Çetin , 2004. +# Ozan Çağlayan , 2011. +# obsoleteman , 2008-2009,2012. +# Serhat Demirkol , 2009. +# Volkan Gezer , 2013-2014. +# Emir SARI , 2022. +msgid "" +msgstr "" +"Project-Id-Version: kdegraphics-kde4\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-04-14 13:19+0300\n" +"Last-Translator: Emir SARI \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 21.12.3\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Serdar Soytetir" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "tulliana@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Denge" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Yumuşat" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Keskinleştir" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Temizle" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Seçim: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Kabartma" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Düzleştir" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Gri Tona Dönüştür" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Ton, Doygunluk, Değer" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Renkleri Ters Çevir" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Ters Çevir" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Monokroma Dönüştür (Titrek)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Monokroma Dönüştür" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "256 Renge Dönüştür (Titrek)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "256 Renge Dönüştür" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Grafiksel Dengeleyici" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Döndür" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Dikey ve yatay olarak döndür" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Yatay olarak döndür" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Dikey olarak döndür" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Metin: Yeniden Boyutlandırma Kutusu" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Seçim: Ölçekle" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Seçim: Yumuşak Ölçekle" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Yeniden Boyutlandır" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Büyüt" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Yumuşak Büyüt" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Döndür" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Eğ" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "Ger&i Al: %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "Ger&i Al" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Yinele: %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Yinele" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Geri Al: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Geri Al" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Yinele: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Yinele" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "Ek %1 öge" +msgstr[1] "Ek %1 öge" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Resim Seçici" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Akıcı Doldur" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Daha Fazla Resim Efekti (Seçim)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Daha Fazla Resim Efekti" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Efekt:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Renkleri Dönüştür" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Yumuşat & Keskinleştir" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Belge Özellikleri" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "&Her İnç için Nokta Sayısı (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Belirtilmemiş" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Yatay:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Dikey:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                        " +msgstr "" +"

                        İnç başına Nokta (DPI) bir inç (2,54 cm) içerisinde basılacak " +"resmin piksel sayısını belirler.

                        Resmin DPI değerini ne kadar yüksek " +"olursa resim o kadar küçük basılacaktır. Yazıcınıza bağlı olarak, 300 veya " +"600 DPI'dan yüksek bir değer belirlerseniz yazıcınızın yüksek kalite baskı " +"üretmesinin pek mümkün olmadığını göz önünde bulundurun.

                        Bir resmi " +"ekrandaki aynı boyutuyla yazdırmak istiyorsanız resmin DPI değerleri ile " +"ekranın DPI değerlerini aynı belirleyin.

                        Eğer herhangi bir DPI değeri " +"Belirtilmemiş ise resim ekrandaki aynı boyutuyla yazdırılacaktır.

                        Tüm resim biçimleri DPI değerlerini desteklemez. Eğer kaydettiğiniz " +"biçim DPI değerlerini desteklemiyorsa değerler kaydedilmeyecektir.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Ye&rleşim" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                        The Offset is the relative position where this image should be " +"placed, compared to other images.

                        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                        " +msgstr "" +"

                        Göreli Konum, diğer resimlerle karşılaştırılığında resmin " +"yerleştirileceği göreceli konumdur.

                        Tüm resim biçimleri Göreli " +"Konum özelliğini desteklemez. Eğer kaydettiğiniz biçim bu özelliği " +"desteklemiyorsa burada belirlediğiniz değerler kaydedilmeyecektir.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Metin Alanları" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Satır Ekle" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "Sa&tırı Sil" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "S&ıfırla" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                        " +msgstr "" +"

                        Metin Alanları resim hakkında ek bilgi sağlar. Bu, olasılıkla, " +"herhangi bir metni özgürce yazabileceğini bir yorum alanıdır.

                        Yine de " +"metin alanları biçim özelliklidir, böylece alanlar kuramsal olarak - " +"düzenlememeniz gereken - bilgisayar yorumlu veri olabilirler - ancak bu pek " +"mümkün değildir.

                        Tüm resim biçimleri Metin Alanlarını " +"desteklemez. Eğer kaydettiğiniz biçim metin alanlarını desteklemiyorsa bu " +"alanlar kaydedilmeyecektir.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Anahtar" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Değer" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "%2 satırındaki \"%1\" metin değeri bir anahtar gerektiriyor." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Tüm metin anahtarları eşsiz olmalıdır. %2 ve %3 satırlarındaki \"%1\" metin " +"anahtarı aynı." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Geçersiz Metin Alanları" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Boyutlar" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Orjinal:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Önizleme" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "Günce&lle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Yeniden Boyutlandır / Ölçekle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "E&ylem:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Tüm Resim" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Seçim" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Metin Kutusu" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "İşlem" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                        " +msgstr "" +"
                        • Yeniden boyutlandırma: Resim sağda ve/veya aşşağıda yeni " +"alanların oluşturulması(arka plan rengi ile doldurularak) ile büyütülecek " +"veya sağdan ve/veya aşşağıdan kesilme ile küçültülecek.
                        • Ölçek: Resim beneklerin çoğaltılması ile genişletilcek veya azaltılması ile " +"küçültülecek.
                        • Yumuşak Ölçek: Bu Ölçek ile aynıdır " +"fakat bu sefer komşu beneklerin karıştırılması ile daha güzel gözüken bir " +"resim yaratır.
                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "Yeniden Boyutlandı&r" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "Büyü&t" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "&Yumuşak Ölçekle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Genişlik:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Yükseklik:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "Ye&ni:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Yüzde:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Or&anı koru" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to resize the text box?

                        " +msgstr "" +"

                        Metin kutusu %1x%2 çözünürlüğüne boyutlandırılıyor. Bu sistemin daha " +"geç cevap vermesine ve diğer programların kaynak kullanımında soruna yol " +"açabilir.

                        Metin kutusunu yeniden boyutlandırmak istediğinize emin " +"misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Metin Kutusu Yeniden Boyutlandırılsın mı?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "Metin Kutusunu &Yeniden Boyutlandır" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to resize the image?

                        " +msgstr "" +"

                        Resim %1x%2 çözünürlüğüne göre yeniden boyutlandırılıyor, bu mevcut " +"hafızaya göre uzun süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir " +"ve diğer programların kaynakları kullanmasında sorun çıkarabilir.

                        Resmi yeniden boyutlandırmaya emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Resim Yeniden Boyutlandırılsın mı?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "Res&mi Yeniden Boyutlarndır" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to scale the image?

                        " +msgstr "" +"

                        Resim %1x%2 çözünürlüğüne göre yeniden ölçekleniyor, bu mevcut " +"hafızaya göre uzun süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir " +"ve diğer programların kaynakları kullanmasında sorun çıkarabilir.

                        Resmi ölçeklendirmeye emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Resim Ölçeklensin mi?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Resmi Ö&lçekle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to scale the selection?

                        " +msgstr "" +"

                        Seçim %1x%2 çözünürlüğüne göre ölçeklendiriliyor, bu mevcut hafızaya " +"göre uzun süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir ve diğer " +"programların kaynakları kullanmasında sorun çıkarabilir.

                        Seçimi " +"ölçeklendirmeye emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Seçim Ölçeklensin mi?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Seçimi Ö&lçekle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the image?" +msgstr "" +"

                        Resim %1x%2 çözünürlüğüne göre yumuşak ölçeklendiriliyor, bu mevcut " +"hafızaya göre uzun süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir " +"ve diğer programların kaynakları kullanmasında sorun çıkarabilir.

                        Resmi yumuşak ölçeklendirmeye emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Resim Yumuşak şekilde Ölçeklensin mi?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Resmi Y&umuşak Ölçekle" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the selection?" +"

                        " +msgstr "" +"

                        Seçim %1x%2 çözünürlüğüne göre yumuşak ölçeklendiriliyor, bu mevcut " +"hafızaya göre uzun süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir " +"ve diğer programların kaynakları kullanmasında sorun çıkarabilir.

                        Seçimi yumuşak ölçeklendirmeye emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Seçim Yumuşak şekilde Ölçeklensin mi?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Seçimi Yu&muşak Ölçekle" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Seçimi Döndür" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Resmi Döndür" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Döndürdükten sonra:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Yön" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "Saat Yönünün &Tersi" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "S&aat Yönü" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Açı" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &derece" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 d&erece" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 de&rece" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Ö&zel:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "derece" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to rotate the selection?

                        " +msgstr "" +"

                        Seçim %1x%2 çözünürlüğüne göre döndürülüyor, bu mevcut bellek için " +"uzun süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir ve diğer " +"programların kaynakları kullanmasında sorun çıkarabilir.

                        Seçimi " +"döndürmek istediğinize emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Seçim Döndürülsün mü?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Seçimi Dö&ndür" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to rotate the image?

                        " +msgstr "" +"

                        Resim %1x%2 çözünürlüğüne göre döndürülüyor, bu mevcut bellek için " +"uzun süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir ve diğer " +"programların kaynakları kullanmasında sorun çıkarabilir.

                        Resmi " +"döndürmek istediğinize emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Resmi Döndürülsün mü?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "Resmi Dön&dür" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Seçimi Bük" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Resmi Bük" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Büktükten sonra:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Yatay:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "Di&key:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to skew the selection?

                        " +msgstr "" +"

                        Seçim %1x%2 çözünürlüğüne göre eğiliyor, bu mevcut bellek için uzun " +"süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir ve diğer " +"programların kaynakları kullanmasında sorun çıkarabilir.

                        Seçimi eğmek " +"istediğize emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Seçimi Bükülsün mü?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Seçimi Bük" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to skew the image?

                        " +msgstr "" +"

                        Resim %1x%2 çözünürlüğüne göre eğiliyor, bu mevcut bellek için uzun " +"süre alabilir. Bu sistemin yanıt vermesini yavaşlatabilir ve diğer " +"programların kaynakları kullanmasında sorun çıkarabilir.

                        Resmi eğmek " +"istediğinize emin misiniz?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Resim Bükülsün mü?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Resmi &Bük" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Renk Benzerliği" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "RGB Renk K&üpü Uzaklığı" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Birebir Eşleştirme" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "Renk Benzerliği Nedir?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Önizlemeyi Kaydet" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 bayt (en fazla %%2)" +msgstr[1] "%1 bayt (en fazla %%2)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "\"%1\" açılamadı." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" açılamadı - desteklenmeyen resim biçimi.\n" +"Dosya bozulmuş olabilir." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Resim kaydedilemedi - yetersiz bilgi." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"Adres: %1\n" +"Mime türü: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "İç Hata" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                        The %1 format may not be able to preserve all of the image's " +"color information.

                        Are you sure you want to save in this format?

                        " +msgstr "" +"

                        %1 biçimi resmin tüm renk bilgisini içermeyebilir.

                        Bu " +"biçimde kaydetmek istediğinize emin misiniz?

                        " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Kayıplı Dosya Biçimi" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                        Are " +"you sure you want to save at this color depth?

                        " +msgstr "" +"

                        Resmi %1-bit düşük renk derinliğinde kaydetmek renk bilgisinin " +"kaybıyla sonuçlanabilir. Saydamlık kaldırılabilir.

                        Bu renk " +"derinliğinde kaydetmek istediğinizden emin misiniz?

                        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Düşük Renk Derinliği" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Resim kaydedilemedi - geçici dosya oluşturulamadı." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "\"%1\" olarak kaydedilemedi: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Resim kaydedilirken hata" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Resim kaydedilemedi - gönderim başarısız." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "İç &Sınırı Kaldır" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "İç Sınırı Kaldır" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "&Otomatik Kırp" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Otomatik Kırp" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "KolourPaint bulunamadığı için seçimin iç sınırını kaldıramadı." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "İç Kenarlık Kaldırılamadı" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "KolourPaint sınırı bulunamadığı için otomatik olarak resmi kırpamadı." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Otomatik olarak Kırpılamadı" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Resim Olarak Kaydet" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Seçim: Oluştur" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "KDE için boyama programı" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Proje Kurucusu" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Şef Denetleyici" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Tarama Desteği, Alpha Desteği, Projeyi Yürüten" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Simgeler" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "InputMethod Desteği" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Resim Efektleri" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE4 geçişi" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF 5 Geçişi" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" +"Bu uygulamanın oluşturulmasında emeği geçen diğer kişilere teşekkürler." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Açılacak resim dosyaları, isteğe bağlı" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Tüm okunabilir resim MIME türlerini listele" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "Gö&ster" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "R&esim" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Renkler" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Ana Araç Çubuğu" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Metin Araç Çubuğu" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Seçim Aracı Fare Sağ Düğme Menüsü" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "Dü&zen" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Küçük Resim" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Resmin boyutunu değiştirmek için sol tıklayıp sürükleyin." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Resmi yeniden boyutla: Tüm fare düğmelerini serbest bırakın." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Resmi yeniden boyutlandır: İptal etmek için sağ tıklayın." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Metin" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "\"%1\" renk paleti açılamadı." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"\"%1\" renk paleti açılamadı - desteklenmeyen biçim.\n" +"Dosya bozulmuş olabilir." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "KDE renk paleti \"%1\" açılamadı." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Renk paleti \"%1\" olarak kaydedilemedi." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Başlıksız" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "KolourPaint Öntanımlı Değerlerini Kullan" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "KDE'ninkileri Kullan" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Aç..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Y&eniden Yükle" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Kaydet" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "&Farklı Kaydet..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Satır Ekle" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Son Satırı Sil" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Renk Kutusu" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"\"%1\" renk paleti değiştirildi.\n" +"Kaydetmek istiyor musunuz?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"\"%1\" KDE renk paleti değiştirildi.\n" +"Kaydetmek istiyor musunuz?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Öntanımlı renk paleti değiştirildi.\n" +"Bu paleti bir dosyaya kaydetmek ister misiniz?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Renk Paletini Aç" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Renk paleti \"%1\" değiştirildi.\n" +"Yeniden yüklemek önceki kaydetmenizden bu yana yaptığınız tüm değişiklikleri " +"kaybettirecek.\n" +"Emin misiniz?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "Y&eniden Yükle" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE renk paleti \"%1\" değiştirildi.\n" +"Yeniden yüklemek tüm değişiklikleri kaybettirecek.\n" +"Emin misiniz?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Öntanımlı renk paleti değiştirildi.\n" +"Yeniden yüklemek tüm değişiklikleri kaybetmenize neden olacaktır.\n" +"Emin misiniz?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Renk Paletini Farklı Kaydet" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Ye&ni Pencere Yapıştır" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "S&eçimi Sil" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "D&osyaya Kopyala..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "D&osyadan Yapıştır..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Metin Oluşturma Kutusu" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Metin: Yapıştır" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint pano içeriğini, bilinmeyen bir biçime sahip olduğu için " +"yapıştıramadı." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Yapıştırılamıyor" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Metin: Kutuyu Sil" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Seçim: Sil" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Metin: Bitir" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Seçim: Seçim İptal" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Dosyaya Kopyala" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Dosyadan Yapıştır" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "Ç&evir..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Tara..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Ekran Görüntüsü Kaydet" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Özellikler" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Y&eniden yükle" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Tüm Desteklenen Dosyalar (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Resim Aç" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Tarama penceresi açma başarısız oldu." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Tarama Başarısız Oldu" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Ekran Görüntüsü Gecikmesi" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " saniye" +msgstr[1] " saniye" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Gecikme yok" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Ana Pencereyi Gizle" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Belge Özellikleri" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Resmi Farklı Kaydet" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Dışa Aktar" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"\"%1\" belgesi değiştirildi.\n" +"Yeniden yüklemek eski kayıdınızdan bu yana yaptığınız tüm değişiklikleri " +"kaybettirecek.\n" +"Devam etmek istiyor musunuz?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"\"%1\" belgesi değiştirildi.\n" +"Yeniden yüklemek tüm değişiklikleri kaybettirecek.\n" +"Devam etmek istiyor musunuz?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Resmi Yazdır" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Resmi göndermeden önce kaydetmelisiniz.\n" +"Kaydetmek ister misiniz?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"\"%1\" belgesi değiştirildi.\n" +"Kaydedilmesini ister misiniz?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "Boyutlan&dır/Büyüt..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "Re&sim Olarak Ayarla (Kırp)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Ters çevir (alt üst)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Yansıla (yatay)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "Ç&evir..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "S&ola Döndür" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "S&ağa Döndür" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "E&ğ..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Tek Ren&ge Düşür (Dithered)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "&Gri Tona Dönüştür" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "Renkler&i Çevir" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "Temiz&le" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Gizli Yap" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "Daha Faz&la Efekt..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "R&esim" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "&Seçim" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "&Yolu Göster" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Kenar Yumuşatmalı Çiz" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%​%1" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Yazı Tipi Ailesi" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Yazı Tipi Boyutu" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Kalın" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Yatık" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Altı Çizili" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Üzeri Çizili" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Önceki Araç Seçeneği (Grup #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Sonraki Araç Seçeneği (Grup #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Önceki Araç Seçeneği (Grup #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Sonraki Araç Seçeneği (Grup #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Mat Çiz" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Renk Benzerliği ile Çiz..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Araç Kutusu" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Kılav&uzu Göster" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "&Küçük Resim Göster" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "&Yakınlaştırılmış Küçük Resim Kipi" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Küçük Resim Dörtgenini Etkin Kıl" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Büyüt" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Resmi Al" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Seçili tarayıcıyı açma başarısız oldu." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Fırça" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Değişik şekillerde ve boyutlarda fırçalar ile çizim yapar" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "Nokta çizmek için tıklayın veya serbest çizgi çizmek için sürükleyin." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Renk Silici" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Ön plan renklerini arka plan renkleri ile değiştirir" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Ön plan renklerini silmek için tıkla veya sürükle." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Silgi" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Hataları silmenizi sağlar" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Silmek için tıkla veya sürükle." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Tüm fare düğmeleri ile gitmasine için ver." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Kalem" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Noktalar ve serbest çizimler çizer" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Sprey Kutusu" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Grafiti spreyi" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Grafiti sıkmak için tıklayın veya sürükleyin." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "İptal etmek için sağ fare düğmesine tıklayın." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "İptal etmek için sol fare düğmesine tıklayın." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Resimden bir renk seçmeyi sağlar" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Renk seçmek için tıklayın." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Resimdeki bölgeleri doldurur" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Bir bölgeyi doldurmak için tıklayın." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Büyüt" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Resmi büyüt ve küçült" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Yakınlaştırmak/uzaklaştırmak için tıklayın veya belirli bir alanı " +"yakınlaştırmak için sol düğme ile basılı tutarak sürükleyin." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Eğri" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Eğriler çizer" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Başlangıç ve bitiş noktaları arasında sürükle." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Birinci denetim noktasını atamak için sol sürükle, bitirmek için sağ tıkla." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Birinci denetim noktasını atamak için sağ sürükle, bitirmek için sol tıkla." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Sonuncu denetim noktasını atamak için sol sürükle, bitirmek için sağ tıkla." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Sonuncu denetim noktasını atamak için sağ sürükle, bitirmek için sol tıkla." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Çizgi" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Çizgi çizer" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Çizmek için sürükle." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Çokgen" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Çokgenler çizer" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "İlk çizgiyi çizmek için sürükle." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "Başka çizgi için sol sürükleyin ya da bitirmek için sağ tıklayın." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "Başka çizgi için sağ sürükleyin ya da bitirmek için sol tıklayın." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "Bağlı Çizgiler" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Bağlı çizgiler çizer" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Çember" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Çemberler ve daireler çizer" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Dikdörtgen" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Dikdörtgenler ve kareler çizer" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Dairesel Dikdörtgen" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Yuvarlatılmış köşeli dikdörtgenler ve kareler çizer" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Seçimi oluşturmak için sol düğmeyle sürükle." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Seçimi taşımak için sol düğmeyle sürükle." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Seçimi ölçekleme için sol sürükle." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Seçim: Donuk" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Seçim: Saydam" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Seçim: Saydam Rengi" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Seçim: Saydamlık Rengi Benzerliği" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Seçim (Dairesel)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Eliptik ya da dairesel seçim yapar" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Seçim (Serbest Form)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Serbest seçim yapmanızı sağlar" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Seçim (Dikdörtgen)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Dörtgenel seçim yapar" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Seçim: Taşı" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: Leke" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Metin yazar" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Metin: Geri Sil" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Metin: Sil" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Metin: Yeni Satır" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Metin: Yaz" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Metin kutusu oluşturmak için sol düğmeyle sürükle." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Metin kutusun taşımak için sol düğmeyle sürükle." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Metin: Kutuyu Taşı" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "Metin kutusunu yeniden boyutlandırmak için sol düğmeyle sürükle." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "İmleç yerini değiştirmek için sol tıkla." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Metin: Donuk Arka Plan" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Metin: Saydam Arka Plan" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Metin: Renkleri Değiştir" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Metin: Ön Plan Rengi" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Metin: Arka Plan Rengi" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Metin: Yazı Tipi" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Metin: Yazı Tipi Boyutu" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Metin: Kalın" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Metin: Eğik" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Metin: Altıçizili" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Metin: Üzeri Çizik" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Küçültülmüş Kip - Küçük Resim" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%​%1 - Küçük Resim" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        To configure it, click on the cube.

                        " +msgstr "" +"

                        Renk Benzerliği, farklı piksel renklerini aynı olarak ele alan " +"işlemler için bu piksel renklerinin ne kadar benzer olması " +"gerektiğini ifade eder.

                        Eğer Birebir Eşleştirmeden farklı bir " +"değer belirlerseniz diğer boyama programlarının \"Sihirli Değnek\" özelliği " +"ile kıyaslanabilir bir tarzda titrek resim ve fotoğraflarla çok daha etkin " +"bir şekilde çalışabilirsiniz.

                        Bu özelliklik şunlara uygulanır:

                        • Seçimler: Saydam kipte, seçim içerisinde arka plan " +"rengine benzer herhangi renk saydam yapılacaktır.
                        • Akıcı " +"Doldur: Benzer - ancak özdeş olmayan - renkli piksellere sahip bölgeler " +"için, yüksek bir değerin daha çok pikseli doldurması olasıdır.
                        • Renk Silici: Rengi ön plan rengine benzer olan " +"pikseller arka plan rengiyle yer değiştirilecektir.
                        • Otomatik " +"Kırp ve İç Sınırı Kaldır: Benzer - ancak özdeş olmayan - " +"renkli piksellere sahip sınırlar için, yüksek değerin tüm sınırı kırpması " +"daha olasıdır.

                        Yüksek değerler, işlemlerin artırılmış renk " +"aralığının aynı olması amacıyla yeterince benzer olduğunu hesaba " +"kattığı anlamına gelir. Bu nedenle, eğer yukarıdaki işlemlerin yeteri kadar " +"benzer renklere sahip olduğunu düşündüğünüz pikselleri etkilemiyorsa " +"yapılandırma değerlerini artırmalısınız.

                        Ancak, eğer çok fazla etkiye " +"sahiplerse ve benzer renklere sahip olmadığını düşündüğünüz piksellerin " +"renklerini değiştiriyorsa (örn. Akıcı Doldur işlemi çok fazla pikseli " +"değiştiriyorsa) bu değeri düşürmelisiniz.

                        Değeri yapılandırmak için, " +"küp üzerine tıklayın.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        " +msgstr "" +"

                        Renk Benzerliği, farklı piksel renklerini aynı olarak ele alan " +"işlemler için bu piksel renklerinin ne kadar benzer olması " +"gerektiğini ifade eder.

                        Eğer Birebir Eşleştirmeden farklı bir " +"değer belirlerseniz diğer boyama programlarının \"Sihirli Değnek\" özelliği " +"ile kıyaslanabilir bir tarzda titrek resim ve fotoğraflarla çok daha etkin " +"bir şekilde çalışabilirsiniz.

                        Bu özelliklik şunlara uygulanır:

                        • Seçimler: Saydam kipte, seçim içerisinde arka plan " +"rengine benzer herhangi renk şeffaf yapılacaktır.
                        • Akıcı " +"Doldur: Benzer - ancak özdeş olmayan - renkli piksellere sahip bölgeler " +"için, yüksek bir değerin daha çok pikseli doldurması olasıdır.
                        • Renk Silici: Rengi ön plan rengine benzer olan " +"pikseller arka plan rengiyle yer değiştirilecektir.
                        • Otomatik " +"Kırp ve İç Sınırı Kaldır: Benzer - ancak özdeş olmayan - " +"renkli piksellere sahip sınırlar için, yüksek değerin tüm sınırı kırpması " +"daha olasıdır.

                        Yüksek değerler, işlemlerin artırılmış renk " +"aralığının aynı olması amacıyla yeterince benzer olduğunu hesaba " +"kattığı anlamına gelir. Bu nedenle, eğer yukarıdaki işlemlerin yeteri kadar " +"benzer renklere sahip olduğunu düşündüğünüz pikselleri etkilemiyorsa " +"yapılandırma değerlerini artırmalısınız.

                        Ancak, eğer çok fazla etkiye " +"sahiplerse ve benzer renklere sahip olmadığını düşündüğünüz piksellerin " +"renklerini değiştiriyorsa (örn, Akıcı Doldur işlemi çok fazla pikseli " +"değiştiriyorsa) bu değeri düşürmelisiniz.

                        " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                        Color Similarity: %1%

                        Click to configure.

                        " +msgstr "" +"

                        Renk Benzerliği: %%1

                        Yapılandırmak için tıklayın." + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                        Color Similarity: Exact Match

                        Click to configure." +msgstr "" +"

                        Renk Benzerliği: Birebir Eşleştirme

                        Yapılandırmak " +"için tıklayın.

                        " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Parlaklık:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "S&ıfırla" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Karşıt&lık:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Gama:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "S&ıfırla" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Kanalla&r:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Tümü" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Kırmızı" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Yeşil" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Mavi" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "T&üm Değerleri Sıfırla" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Ayarlar" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "Mikta&r:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "E&tkinleştir" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Renkler" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "T&on:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "Doy&gunluk:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Değer:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Kırmızı" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "Ye&şil" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "Ma&vi" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Tümü" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Kanallar" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "Te&k Renk" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "T&ek renk (titrek)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 &renk" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 r&enk (titrek)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&bit renk" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Dönüştür" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Taneciklilik:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                        To change the color of a color cell itself, double-click on it.

                        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                        " +msgstr "" +"

                        Araçların çizim için kullandıkları ön plan rengini seçmek için, " +"doldurulmuş bir renk hücresine farenin sol düğmesi ile tıklayın. Arka plan " +"rengini seçmek için ise sağ düğme ile tıklayın.

                        Bir renk hücresinin " +"kendi rengini değiştirmek için, üzerine çift tıklayın.

                        Sürüle ve bırak " +"yaparak başka bir hücrenin rengini bir diğeriyle değiştirebilirsiniz. " +"Ayırca, eğer Ctrl düğmesine basılı tutarsanız hedef hücrenin rengi " +"kaynak hücrenin rengi ile yer değiştirmek yerine hücre renginin üzerine " +"yazılacaktır.

                        " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Dönüş&tür:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "K&alite:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "Ö&nizleme" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Tek renk" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Tek renk (Titrek)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 Renk" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 Renk (Titrek)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24 Bit Renk" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Resim K&onumu" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "Say&fanın ortasına" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Sayfanın sol-&üstüne" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Saydam" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint Öntanımlı Değerleri" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Renkler: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Renkler: %1 [değiştirilmiş]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Çember" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Kare" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Bölü" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Tersbölü" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Dolgu Yok" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Arka Plan Rengi ile Doldur" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Ön Plan Rengi ile Doldur" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Mat" diff --git a/po/ug/kolourpaint.po b/po/ug/kolourpaint.po new file mode 100644 index 0000000..ca8fa4e --- /dev/null +++ b/po/ug/kolourpaint.po @@ -0,0 +1,2558 @@ +# Uyghur translation for kolourpaint. +# Copyright (C) YEAR This_file_is_part_of_KDE +# This file is distributed under the same license as the PACKAGE package. +# Sahran , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2013-09-08 07:05+0900\n" +"Last-Translator: Gheyret Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "sahran.ug@gmail.com, gheyret@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "تەڭپۇڭ" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "يۇمشات" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "ئېنىقلىق" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "تازىلا" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "تاللىغاننى ئۆچۈر" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "ئەكس رەڭ" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "ئەكسى رەڭگە ئالماشتۇر" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Flip" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "گورىزونتال ئۆرۈش" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "تىك ئايلاندۇر" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "چوڭلۇقىنى ئۆزگەرت" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "نىسبىتى" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "چۆرگىلەت" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "يېنىۋال(&U): %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "يېنىۋال(&U)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "قايتىلا(&R): %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "قايتىلا(&R)" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "يېنىۋال: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "يېنىۋال" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "قايتىلا: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "قايتىلا" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "رەڭ ئالغۇچ" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "بوياش" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "ئۇنۇم(&E):" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "پۈتۈك خاسلىقى" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "بەلگىلەنمىگەن" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "توغرىسىغا:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "بويىغا:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                        The Offset is the relative position where this image should be " +"placed, compared to other images.

                        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "قۇرنى ئۆچۈر(&D)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "ئەسلىگە قايتۇر(&R)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                        " +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "ئاچقۇچ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "قىممەت" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "ئۆلچەم" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "ئەسلى:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "ئالدىن كۆزەت" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "يېڭىلا(&U)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "پۈتۈن سۈرەت" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "تاللاش" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "تېكىست رامكىسى" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "مەشغۇلات" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "چوڭلۇقىنى ئۆزگەرت(&R)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "ئۆلچەك(&S)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "كەڭلىك:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "ئېگىزلىك:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "يېڭى(&N):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "پىرسەنت(&P):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to resize the text box?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to resize the image?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to scale the image?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to scale the selection?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the selection?" +"

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "سۈرەت چۆرگىلىتىش" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "يۆنىلىش" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "سائەت يۆنىلىشى(&C)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "بۇلۇڭ" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 گرادۇس(&D)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 گرادۇس(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 گرادۇس(&G)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "گرادۇس" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to rotate the selection?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to rotate the image?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "توغرىسىغا(&H):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "بويىغا(&V):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to skew the selection?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to skew the image?

                        " +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "دەلمۇدەل ماسلىق" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "ئالدىن كۆزىتىشنى ساقلاش" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "«%1» نى ئاچالمىدى." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<قۇرۇق>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "ئىچكى خاتالىق" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                        The %1 format may not be able to preserve all of the image's " +"color information.

                        Are you sure you want to save in this format?

                        " +msgstr "" + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                        Are " +"you sure you want to save at this color depth?

                        " +msgstr "" + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "" + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not open \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "«%1» نى ئاچالمىدى." + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Set as Image" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "سىنبەلگىلەر" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "كۆرۈنۈش(&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "سۈرەت(&I)" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "رەڭلەر(&C)" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "ئاساسىي قورال بالداق" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "تېكىست قورال بالداق" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "تەھرىر(&E)" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "كىچىك سۈرەت" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "تېكىست" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "ماۋزۇسىز" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "ئاچ(&O)…" + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "قايت يۈكلە(&D)" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "ساقلا(&S)" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "باشقا ئاتتا ساقلا(&A)…" + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "قايتا يۈكلە(&R)" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "چىقار(&X)…" + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "تارا…" + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "خاسلىق" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "قايت يۈكلە(&D)" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "سۈرەت ئاچ" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " سېكۇنت" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "كېچىكتۈرۈلمەيدۇ" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "ئاساسىي كۆزنەكنى يوشۇرۇش" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "پۈتۈك خاسلىقى" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "سۈرەتنى باشقا ئاتتا ساقلاش" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "ئېكسپورت قىل" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "سۈرەتنى بېسىپ چىقار" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "سولغا چۆرگىلەت(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "تازىلا(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "" + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "سۈرەت(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "خەت نۇسخا تۈركۈمى" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "خەت چوڭلۇقى" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "توم" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "يانتۇ" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "ئاستى سىزىق" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "قورال ساندۇقى" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "سېتكا كۆرسەت(&G)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "كېڭەيت تارايت(&Z)" + +#: scan/sanedialog.cpp:41 +#, fuzzy, kde-format +#| msgid "Entire Image" +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "پۈتۈن سۈرەت" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "چوتكا" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "ئۆچۈرگۈچ" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "كېڭەيت-تارايت" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "ئەگرى سىزىق" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "قۇر" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "كۆپ تەرەپلىك" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "ئېللىپس" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "تىك تۆت بۇلۇڭ" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        To configure it, click on the cube.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                        Color Similarity: %1%

                        Click to configure.

                        " +msgstr "" + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                        Color Similarity: Exact Match

                        Click to configure." +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "يورۇقلۇق دەرىجىسى(&B):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "ئەسلىگە قايتۇر(&S)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "ھەممىسى" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "قىزىل" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "يېشىل" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "كۆك" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "تەڭشەكلەر" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "مىقدارى(&A):" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "قوزغات(&N)" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "رەڭلەر" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "رەڭگى(&H):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "تويۇنۇش دەرىجىسى(&S):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "قىممىتى(&V):" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "قىزىل(&R)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "يېشىل(&G)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "كۆك(&B)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "ھەممىسى(&A)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "قانال" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                        To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                        To change the color of a color cell itself, double-click on it.

                        You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                        " +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "ئالدىن كۆزەت(&P)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "رەڭسىز" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "سۈزۈك" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "چەمبەر" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "تۆت چاسا" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "يانتۇ سىزىق" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "تەتۈر يانتۇ سىزىق(Backslash)" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "تولدۇرۇلمىغان" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "تەگلىك رەڭگى بىلەن بوياش" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "ئالدى رەڭگى بىلەن بوياش" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "گۇڭگا" + +#~ msgid "None" +#~ msgstr "يوق" + +#~ msgid "Overwrite" +#~ msgstr "قاپلا" + +#~ msgid "Save Preview" +#~ msgstr "ئالدىن كۆزىتىشنى ساقلاش" diff --git a/po/uk/docs/kolourpaint/KolourPaint.png b/po/uk/docs/kolourpaint/KolourPaint.png new file mode 100644 index 0000000..63fc112 Binary files /dev/null and b/po/uk/docs/kolourpaint/KolourPaint.png differ diff --git a/po/uk/docs/kolourpaint/image_balance.png b/po/uk/docs/kolourpaint/image_balance.png new file mode 100644 index 0000000..de03e7e Binary files /dev/null and b/po/uk/docs/kolourpaint/image_balance.png differ diff --git a/po/uk/docs/kolourpaint/image_emboss.png b/po/uk/docs/kolourpaint/image_emboss.png new file mode 100644 index 0000000..d0a2cd2 Binary files /dev/null and b/po/uk/docs/kolourpaint/image_emboss.png differ diff --git a/po/uk/docs/kolourpaint/image_flatten.png b/po/uk/docs/kolourpaint/image_flatten.png new file mode 100644 index 0000000..a3a528d Binary files /dev/null and b/po/uk/docs/kolourpaint/image_flatten.png differ diff --git a/po/uk/docs/kolourpaint/image_invert.png b/po/uk/docs/kolourpaint/image_invert.png new file mode 100644 index 0000000..c59712f Binary files /dev/null and b/po/uk/docs/kolourpaint/image_invert.png differ diff --git a/po/uk/docs/kolourpaint/image_reduce_colors.png b/po/uk/docs/kolourpaint/image_reduce_colors.png new file mode 100644 index 0000000..57085ff Binary files /dev/null and b/po/uk/docs/kolourpaint/image_reduce_colors.png differ diff --git a/po/uk/docs/kolourpaint/image_resize_scale.png b/po/uk/docs/kolourpaint/image_resize_scale.png new file mode 100644 index 0000000..0e8aa6c Binary files /dev/null and b/po/uk/docs/kolourpaint/image_resize_scale.png differ diff --git a/po/uk/docs/kolourpaint/image_rotate.png b/po/uk/docs/kolourpaint/image_rotate.png new file mode 100644 index 0000000..0b7981d Binary files /dev/null and b/po/uk/docs/kolourpaint/image_rotate.png differ diff --git a/po/uk/docs/kolourpaint/image_skew.png b/po/uk/docs/kolourpaint/image_skew.png new file mode 100644 index 0000000..ff29689 Binary files /dev/null and b/po/uk/docs/kolourpaint/image_skew.png differ diff --git a/po/uk/docs/kolourpaint/image_soften_sharpen.png b/po/uk/docs/kolourpaint/image_soften_sharpen.png new file mode 100644 index 0000000..589e5e4 Binary files /dev/null and b/po/uk/docs/kolourpaint/image_soften_sharpen.png differ diff --git a/po/uk/docs/kolourpaint/index.docbook b/po/uk/docs/kolourpaint/index.docbook new file mode 100644 index 0000000..f48d6c7 --- /dev/null +++ b/po/uk/docs/kolourpaint/index.docbook @@ -0,0 +1,1781 @@ + +ClarenceDang"> + dang@kde.org"> + ThurstonDang"> + thurston_dang@users.sourceforge.net"> + + +]> + + + + +Підручник з &kolourpaint; + + + Thurston Dang &Thurston.Dang.mail; + + +Clarence Dang + + +&Lauri.Watts; +ЮрійЧорноіван
                        yurchor@ukr.net
                        Переклад українською
                        +
                        + + +2004 +2005 +&Thurston.Dang; + + + +&FDLNotice; + +23 березня 2018 року +Програми 18.04 + + +&kolourpaint; — це вільна, проста у користуванні програма для малювання від &kde;. + + + +kolourpaint +kdegraphics + + +
                        + + +Вступ +&kolourpaint; — це вільна, проста у користуванні програма для малювання від &kde;. Вона чудово пасує до таких частих завдань як: + + + +Малювання — креслення діаграм і малювання пальцем + + +Обробки знімків вікон — отримання та редагування знімків вікон + + +Роботи з зображеннями — редагування фотографій, сканованих зображень та знімків екрана з застосуванням ефектів + + +Редагування піктограм — малювання ілюстрацій та логотипів з прозорістю + + + + + + + + + + + + + +Користування &kolourpaint; + +Пройдіть за наступними посиланням, щоб вивчити можливості &kolourpaint;: + + + +Інструменти + + +Робота з кольором + + +Параметри перегляду + + +Ефекти зображення + + + + + +Інструменти + +За допомогою додаткового пункту у меню Параметри ви можете визначити, буде програма малювати зі згладжуванням (типова поведінка) чи ні. + + +Робота зі знімками вікон + +«Знімок вікна» — це зображення того, що ви бачите на вашому екрані. Знімком можна скористатися для пояснення дій, які треба виконати для досягнення певного результату, або демонстрації знайденої вами вади. +Щоб створити знімок екрана, готовий до редагування у &kolourpaint;, ви можете скористатися пунктом Файл Отримати знімок вікна головного меню &kolourpaint;. + + + + + + + +За допомогою відкритого діалогового вікна ви можете змінити Затримку знімка (у секундах) та вказати, чи слід Сховати головне вікно під час створення знімка. Після належного налаштування натисніть кнопку Гаразд. Створений знімок вікна буде надіслано безпосередньо до області редагування &kolourpaint;. + + + +Довідник з інструментів + +Найшвидшим способом вибору інструментів у &kolourpaint; є натискання клавіші пов’язаної з цим інструментом, визначити цю клавішу можна за списком, поданим нижче, або за підказками Панелі інструментів. Крім того, вам слід буде утримувати комбінацію клавіш &Alt;&Shift; під час натискання відповідної клавіші, якщо ви вводите на малюнку текст (оскільки одноклавішні прив’язки у цьому випадку не працюватимуть). Наприклад, щоб вибрати пензель, натисніть комбінацію клавіш &Alt;&Shift;B або просто у латинській розкладці B (якщо ви не вводите тест). + + + Пензель (B) + + Кольорова гумка (O) + + Піпетка (C) + + З’єднані лінії (N) + + Крива (V) + + Еліпс (E) + + Гумка (A) + + Заповнення повінню (F) + + Лінія (L) + + Перо (P) + + Багатокутник (G) + + Прямокутник (R) + + Округлений прямокутник (U) + + Вибір (еліптичний) (I) + + Вибір (довільна форма) (M) + + Вибір (прямокутний) (S) + + Пульверизатор (Y) + + Текст (T) + + + + + +Пензель <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_brush.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + +Клацніть кнопкою миші або натисніть її і перетягніть вказівник, щоб малювати пензлем. + + + + + + + + + + + + + + +Наведіть вказівник миші на одну з форм пензля і клацніть лівою кнопкою, щоб обрати форму пензля. Ви можете скористатися круглою, квадратною, похилою або зворотною похилою формами пензля. + + + + + + +Натискання лівої кнопки миші призводить до малювання кольором переднього плану. Натискання правої — кольором тла. + + + +Піпетка <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_picker.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Щоб встановити колір переднього плану, наведіть вказівник миші на піксель і клацніть лівою кнопкою миші. Щоб встановити колір тла, наведіть вказівник миші на піксель і клацніть правою кнопкою миші. Після цього &kolourpaint; повернеться до попереднього обраного інструмента. + + + + +З’єднані лінії і багатокутник <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_polystar.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Для того, щоб накреслити з’єднані лінії, клацайте кнопкою миші і перетягуйте вказівник. Інструмент «Багатокутник» використовується у подібний спосіб, але за його використання початкову і кінцеву точки отриманої ламаної буде з’єднано лінією. + +Використання лівої кнопки миші призводить до малювання кольором переднього плану. За допомогою правої кнопки миші можна малювати кольором тла, а також обертати колір заливання багатокутників. + +Ви можете самі встановити товщину ліній. Крім того, для багатокутників ви можете встановити стиль заливання. + + + + +Крива <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_curve.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Щоб намалювати лінію, клацайте кнопкою миші і перетягуйте вказівник, — таким чином ви визначите початкову і кінцеву точки. Перетягуванням ви встановлюєте дві контрольні точки. Щоб завершити малювання кривої без обох або якоїсь з контрольних точок, натисніть кнопку миші, що відрізняється від тої, яку ви використовували для малювання. Інструмент «Крива» будує кубічні криві Без’є. + +Натискання лівої кнопки миші призводить до малювання кольором переднього плану. Натискання правої — кольором тла. + +Крім того, ви можете встановити товщину лінії. + + + + +Еліпс <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_ellipse.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Щоб намалювати еліпс, клацніть кнопкою миші і перетягніть вказівник. + +Використання лівої кнопки миші призводить до малювання кольором переднього плану. За допомогою правої кнопки миші можна малювати кольором тла, а також обертати колір заливання. + +Крім того, ви можете встановити товщину лінії і стиль заливання. + +Щоб отримати доступ до додаткових можливостей, скористайтесь клавішами-модифікаторами: + + + +Утримуйте натиснутою клавішу &Shift; і перетягуйте вказівник, щоб намалювати коло. + + +Щоб намалювати еліпс з обраним вами центром, утримуйте натиснутою клавішу &Ctrl;, наведіть вказівник на точку центра і клацніть кнопкою, а потім перетягуйте вказівник, доки еліпс не набуде потрібного розміру і форми. + + +Щоб намалювати коло з вибраним вами центром, натисніть і утримуйте клавіші &Ctrl; і &Shift;, наведіть вказівник миші на точку центра, клацніть кнопкою миші, а потім перетягніть вказівник миші, аж доки коло не набуде потрібного розміру. + + + + + + +Гумки + + +Гумка <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_eraser.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Натисніть кнопку миші і перетягніть вказівник, щоб витерти гумкою зроблені вами помилки. + + +На відміну від інших інструментів, гумки малюють кольором тла. Щоб малювати кольором переднього плану, скористайтеся для операцій правою кнопкою миші. + + +Гумка може бути лише квадратної форми. Щоб малювати іншими формами, наприклад кругами, скористайтеся інструментом Пензель і правою кнопкою миші. + + +Наведіть вказівник на піктограму інструмента «Гумка» і двічі клацніть кнопкою миші, щоб очистити все зображення. Ця дія є еквівалентною до використання пункту Очистити з меню «Зображення». + + + + + +Гумка для кольору <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_color_washer.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Натисніть кнопку миші і перетягніть вказівник, щоб замінити пікселі з кольором переднього плану на пікселі з кольором тла. Щоб замінити всі подібні пікселі (але не обов’язково точно того самого кольору) на колір переднього плану, як це робиться на розмитих зображеннях і фотографіях, скористайтеся значенням Подібності кольорів відмінним від «Точний збіг». + + +На відміну від інших інструментів, гумки малюють кольором тла. Щоб малювати кольором переднього плану, скористайтеся для операцій правою кнопкою миші. + + +Ви можете налаштувати розмір гумки. + + +Наведіть вказівник миші на піктограму інструмента «Гумка для кольору» і двічі клацніть кнопкою миші, щоб застосувати цей інструмент до всього зображення. + + + + + + +Заповнення повінню <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_flood_fill.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Щоб залити область, наведіть на неї вказівник і клацніть кнопкою миші. Щоб залити розмиту область, скористайтеся значенням Подібності кольорів відмінним від «Точний збіг». + +За використання лівої кнопки миші для заливання буде використано колір переднього плану. За допомогою правої кнопки миші можна залити область кольором тла. + + + +Лінія <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_line.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Щоб намалювати лінію, натисніть кнопку миші і перетягніть вказівник. + +Натискання лівої кнопки миші призводить до малювання кольором переднього плану. Натискання правої — кольором тла. + +Крім того, ви можете встановити товщину лінії. + + + + + + + + + + + + + + + + + + + + + +Щоб малювати лінії розташовані за множниками кута 30 градусів, утримуйте натиснутою клавішу &Ctrl;, — це лінії на червоній діаграмі. + + +Щоб малювати лінії розташовані за множниками кута 45 градусів, утримуйте натиснутою клавішу &Shift;, — це лінії на синій діаграмі. + + +Щоб малювати лінії розташовані за множниками кутів 30 або 45 градусів, утримуйте натиснутими клавіші &Ctrl; і &Shift;, — це лінії на зеленій діаграмі. + + + + + + +Перо <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_pen.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Клацніть кнопкою миші, щоб намалювати точку, або натисніть кнопку миші і перетягніть вказівник, щоб намалювати довільну криву. + +Натискання лівої кнопки миші призводить до малювання кольором переднього плану. Натискання правої — кольором тла. + + + + +Прямокутники <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_rectangles.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Щоб намалювати прямокутник, натисніть кнопку миші і перетягніть вказівник. Округлений прямокутник — це прямокутних з заокругленими кутами. + +Використання лівої кнопки миші призводить до малювання кольором переднього плану. За допомогою правої кнопки миші можна малювати кольором тла, а також обертати колір заливання. + +Крім того, ви можете встановити товщину лінії і стиль заливання. + +Щоб отримати доступ до додаткових можливостей, скористайтесь клавішами-модифікаторами: + + + +Щоб намалювати квадрат, натисніть і утримуйте клавішу &Shift; під час перетягування вказівника миші. + + +Щоб намалювати прямокутних з вибраним вами центром, натисніть і утримуйте клавішу &Ctrl;, наведіть вказівник миші на точку центра, натисніть кнопку миші і перетягуйте вказівник, аж доки прямокутник не набуде потрібного розміру і форми. + + +Щоб намалювати квадрат з обраним вами центром, натисніть і утримуйте клавіші &Ctrl; і &Shift;, наведіть вказівник на бажану точку центра, натисніть кнопку миші і перетягуйте вказівник миші, аж доки квадрат не набуде потрібного розміру. + + + + + + +Області вибору <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_selections.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Інструменти вибору слід використовувати для визначення границь області вибору. + +Щоб пересунути область вибору, наведіть вказівник на цю область, натисніть кнопку миші і перетягніть область вказівником миші у потрібне місце. За потреби область перегляду пересуватиметься слідом за вашим рухом так, щоб ви могли пересунути вибране у місце зображення, яке на даний момент часу залишається невидимим. + +Ви можете довільним чином Змінити розмір всього зображення або плавно змінити масштаб вибраної області за допомогою відповідних засобів керування. Утримуйте клавішу &Shift; під час довільної зміни масштабу, щоб програма зберігала співвідношення сторін області. Клацання правою кнопкою миші викличе контекстне меню зі звичайними командами Правки і Ефектів зображення. + + +Для креслення границь області вибору або для пересування області ви можете скористатися клавішами зі стрілками на клавіатурі. + + +Якщо ви натиснете і триматимете клавішу &Ctrl; перед пересуванням вибраної області, ви пересуватимете копію цієї області. Якщо утримуватиметься клавіша &Shift;, під час пересування вибрану область буде розмито. + + + + + + + + + + + + + +Існує два режими вибору: непрозорий (типовий) і прозорий. Якщо ви користуєтеся прозорим режимом вибору, всі пікселі кольору тла будуть прозорими (віднімання тла). Це надасть вам змогу вставляти вибране без тла. Щоб виконати віднімання тла на розмитому зображенні, скористайтеся значенням Подібності кольорів відмінним від «Точного збігу». + + + + + + +Ви можете застосувати ефекти зображення до вибраної області — щоб дізнатися про це більше, прочитайте розділ, присвячений ефектам зображення. + +Передбачено можливість зберігати позначений фрагмент до файла за допомогою пункту Скопіювати у файл... контекстного меню позначеного фрагмента або пункту ЗміниСкопіювати у файл... головного меню програми. + + + +Пульверизатор <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_spraycan.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Щоб намалювати пульверизатором графіті, клацніть кнопкою миші і перетягніть вказівник. Натисніть і утримуйте кнопку миші, щоб отримати концентрованіший слід. + + + + + + + + + + + + + +Щоб обрати розмір області розбризкування з пульверизатора, наведіть вказівник миші на зображення одної з форм. Ви можете обрати розмір області розбризкування серед таких розмірів: 9x9, 17x17 і 29x29. + + + + + + +Натискання лівої кнопки миші призводить до малювання кольором переднього плану. Натискання правої — кольором тла. + + + + +Текст <inlinemediaobject +> <imageobject> +<imagedata fileref="tool_text.png" format="PNG"/> +</imageobject> +</inlinemediaobject> + + +Натисніть кнопку миші і перетягніть вказівник, щоб визначити область, у яку будете записувати текст. Щойно рамку буде показано ви зможете почати введення тексту. Щоб пересунути цю область, наведіть на неї вказівник миші натисніть кнопку миші і перетягніть вказівник. Ви можете змінювати розмір текстової області перетягуванням відповідних елементів керування або за допомогою діалогового вікна Змінити розмір. + + +Якщо ви випадково зняли виділення з текстової області, ви можете скористатися інструментом Вернути, щоб повернутися до редагування тексту. + + + +Використання прозорого кольору + + + + + + + + +На зображенні ліворуч показано зразок зображення. На зображення, розташованому праворуч, показано додавання тексту з непрозорими кольорами переднього плану і тла. + + + + + + + + + +На зображенні ліворуч показано додавання тексту з непрозорим кольором переднього плану і прозорим кольором тла. На зображенні, розташованому праворуч, показано додавання тексту з прозорим кольором переднього плану і непрозорим кольором тла. + + + + +Загальні параметри інструментів + + + + + + + + + + + + + +Щоб обрати розмір гумки, наведіть вказівник миші на один з квадратиків і клацніть кнопкою миші. Ви можете обрати один з квадратиків з довжиною сторони у 2, 3, 5, 9, 17 і 29 пікселів. + +Параметри розміру гумок стосується Гумок. + + + + + + + + + + + +Щоб обрати товщину лінії, наведіть вказівник на одну з ліній і клацніть кнопкою миші. Ви можете обрати одну з товщин: 1, 2, 3, 5 або 8 пікселів. + +Параметри товщини ліній стосується інструментів З’єднані лінії, Крива, Еліпс, Лінія, Багатокутник, Прямокутник і Округлений прямокутник. + + + + + + + + + + + +Щоб обрати стиль заливання, наведіть вказівник миші на один з прямокутників і клацніть кнопкою миші. Ви можете обрати один зі стилів: без заливання, заливання кольором тла і заливання кольором переднього плану. Стиль заливання стосується інструментів Еліпс, Багатокутник, Прямокутник і Округлений прямокутник. + + + + + + + + + + +Робота з кольором + + +Пенал кольорів + + + + + + + +Пенал кольорів + + + + +На пеналі кольорів є 3 головних розділи: планшет кольорів, палітра кольорів і засіб для вибору подібності кольорів. + +На планшеті кольорів показано поточний колір переднього плану у вигляді квадратика над іншим квадратиком, який показує поточний колір тла. Під час малювання за допомогою лівої кнопки миші буде використано колір переднього плану, а під час малювання за допомогою правої кнопки миші — колір тла (винятком є Гумки). Якщо ви натиснете лінію з двома стрілками на кінцях, кольори тла і переднього плану поміняються місцями. + +На палітрі кольорів показано кольори, з яких ви можете вибирати. Прозора пірамідка відповідає прозорому кольору. Наведення вказівника миші на позначку кольору з наступним клацанням лівою кнопкою миші робить цей колір кольором переднього плану, а клацання правою кнопкою миші, коли вказівник знаходиться на позначці кольору, робить його кольором тла. Крім того, ви можете перетягнути і скинути будь-який з непрозорих кольорів на квадратики планшета кольорів. Щоб змінити колір на планшеті кольорів або у палітрі, наведіть вказівник миші на відповідну позначку і двічі клацніть лівою кнопкою миші. Інструмент Піпетка надає вам змогу взяти колір безпосередньо з зображення. + +Визначенні подібності кольорів надає вам змогу ефективніше працювати з розмитими зображеннями і фотографіями, у спосіб, який можна порівняти з дією інструмента Чарівна паличка інших програм для малювання. Подібність стосується вибору прозорих областей, а також інструментів Заливання повінню, Гумка для кольорів і Автообрізання / Вилучення зовнішньої рамки. Щоб обрати ступінь подібності кольорів, які програма вважатиме однаковими, наведіть вказівник миші на засіб вибору подібності кольорів і двічі клацніть лівою кнопкою миші. Якщо ви використовуєте вибір у режимі прозорості, будь-який колір, подібний до кольору тла, буде також вважатися прозорим. + + + + + + + + + +На картинці ліворуч показано приклад зображення. На зображеннях, розташованих праворуч, показано результат використання заливання повінню з налаштуваннями подібності кольорів 5%, 15% і 30%. У цьому прикладі з встановленим значенням подібності кольорів Точний збіг заливання повінню з точки (80, 100) вплинуло б лише на один піксель, оскільки пікселі, які його оточують мають схожі, але не тотожні з ним кольори. Якщо підвищувати рівень подібності кольорів, все більше пікселів, які мають подібний колір, вважатимуться ідентичними за кольором, отже, область заливання зростатиме. + + + + + +Параметри перегляду + + +Список параметрів перегляду + +Зміна розміру з врахуванням ґратки +Мініатюра + + + + +Зміна розміру з врахуванням ґратки +Збільшуйте масштаб зображення для точнішого редагування зображення, або зменшуйте його, щоб побачити більше деталей зображення. + + +За масштабу, який не є кратним 100%, частини зображення можуть візуально зміщуватися під час роботи з ними користувача. За таких масштабів також можливі деякі інші невеликі похибки перемальовування. + + +За масштабу 400% або більших масштабів, які також є кратними 100%, ви можете скористатися пунктом меню Показувати ґратку для точнішої роботи з окремими пікселями. + + + + + + + + + + + + + + + +На першій картинці показано піктограму інструмента Текст у масштабі 600% з увімкненою ґраткою. + + +Ще одним способом зміни масштабу зображення є прокручування коліщатка миші з одночасним утримуванням натиснутою клавіші &Ctrl;. + + + + + +Мініатюра + + + + + + + +Якщо обрано пункт меню Режим збільшеної мініатюри, буде показано все зображення у такому масштабі, який потрібен, щоб воно вмістилося у вікні мініатюри (картинка згори праворуч). +У іншому випадку у мініатюрі буде показано якомога більшу частину зображення, починаючи з верхнього лівого кута вікна основного перегляду (картинка внизу праворуч). + + + + + +Ефекти зображення + + +Список ефектів зображення +Автообрізання / Вилучити внутрішню границю +Баланс +Очистити +Барельєф +Вирівняти +Перевернути (догори низом) +Інвертувати +Зменшити кількість кольорів +Перетворити до відтінків сірого +Перетворити на чорно-біле (зі змішуванням) +Віддзеркалити горизонтально +Змінити розмір / масштаб +Обертати +Зробити зображенням (Обрізати) +Перекосити +Пом’якшити або збільшити різкість +Додаткові ефекти +Нотатки + + + +Автообрізання / Вилучити внутрішню границю + +За допомогою цього пункту можна вилучити рамку навколо зображення або його вибраної часини у автоматичному режимі. Скористайтеся Автообрізанням, якщо змістовна картинка займає лише частину площі зображення або його виділеної області, і ви бажаєте вилучити зайві поля. Щоб скористатися цим інструментом для розмитих рамок зображення, вам слід змінити значення Подібності кольорів. + + + + +Баланс + +Доступ до цього ефекту можна отримати за допомогою діалогового вікна Додаткові ефекти. + + + + + + + + +За допомогою цього ефекту ви можете встановити яскравість, контрастність і гаму зображення або вибраної його частини. + + +Звичнішу величину виміру гами (десяткове число між 0.10 і 10.00) розташовано між лічильником Гама і кнопкою Скинути. + + + + +Очистити + +За допомогою цього пункту можна залити все зображення або його частину кольором тла. + + +Щоб очистити все зображення, наведіть вказівник миші на піктограму інструмента Гумка і двічі клацніть лівою кнопкою миші. + + + + + +Барельєф + +Доступ до цього ефекту можна отримати за допомогою діалогового вікна Додаткові ефекти. + + + + + + + + +Щоб застосувати ефект «Барельєф», позначте поле Увімкнути. Застосування цього ефекту підкреслить межі об’єктів і надасть зображенню або його вибраній області вигляду гравірування. + + + +Вирівняти + +Доступ до цього ефекту можна отримати за допомогою діалогового вікна Додаткові ефекти. + + + + + + + + +За допомогою цього ефекту можна перефарбувати зображення у різні відтінки двох вибраних кольорів. + + + +Перевернути (догори низом) + +Цей ефект перевертає все зображення або вибрану його частину вертикально. + + + + +Інвертувати + +Доступ до цього ефекту можна отримати за допомогою діалогового вікна Додаткові ефекти. + + + + + + + + +За допомогою цього ефекту ви зможете інвертувати один або декілька каналів RGB зображення або його вибраної області. Оберіть Все, щоб перетворити фотографію на негатив, і навпаки. Загалом, це виглядає досить цікаво. + + +Для інвертування всіх каналів нашвидкуруч вам не потрібні послуги цього вікна. Замість нього ви можете скористатися пунктом Інвертувати кольори у меню Зображення або Вибір. Пункт Вибір буде показано у меню, лише якщо ви використовуєте якийсь з інструментів вибору. Крім того, ви можете отримати доступ до інвертування з контекстного меню, яке відкривається клацанням правою кнопкою миші на панелі зображення. + + + + + +Віддзеркалити горизонтально + +Цей ефект віддзеркалює все зображення або вибрану його частину горизонтально. + + + + +Зменшити кількість кольорів + +Доступ до цього ефекту можна отримати за допомогою діалогового вікна Додаткові ефекти. + + + + + + + + +Цей ефект зменшує кількість кольорів, які буде використано для відтворення зображення або його частини з розмиттям або без розмиття. + +Розмивання, загалом кажучи, дає якісніші результати, але ви можете вимкнути його з художніх міркувань, наприклад, використати Чорно-біле замість Чорно-біле (із змішуванням) надасть зображенню ефекту силуетів. + +Інша важлива відмінність полягає у тому, що дія Чорно-біле (із змішуванням) завжди призводить до перетворення всього зображення або його вибраної області у чорно-біле, а Чорно-біле виконує цю операцію, лише якщо у зображенні або його вибраній частині більше за 2 кольори. + + +Щоб отримати розмите монохромне зображення або його вибрану частину швидше, ви можете скористатися пунктом Перетворити на чорно-біле (із змішуванням) меню Зображення або Вибір. Пункт Вибір буде показано у меню, лише якщо ви використовуєте якийсь з інструментів вибору. Крім того, ви можете отримати доступ до інвертування з контекстного меню, яке відкривається клацанням правою кнопкою миші на панелі зображення. + + + +Зміна кількості кольорів за допомогою цих ефектів не вплине на глибину кольорів формату файла. Якщо ви бажаєте змінити глибину кольорів, вам слід скористатися відповідними параметрами у діалогових вікнах збереження файлів. Пам’ятайте, що, на жаль, зміна глибини кольорів неодмінно призводить до зміни кількості кольорів. + + + + +Перетворити до відтінків сірого + +Ця дія перетворює кольори зображення або його частини на відтінки сірого. + + + + +Перетворити на чорно-біле (із змішуванням) + +Ця дія перетворює все зображення або його частину на чорно-біле. + + +Якщо ви не бажаєте, щоб зображення або його вибрана частина розмивалися, скористайтеся діалоговим вікном Зменшити кількість кольорів. + + + + +Змінити розмір / масштаб + + + + + + + + + +Зміна розмірів зображення змінює лише розміри полотна зображення без зміни розмірів існуючого вмісту зображення. Зміна ж масштабу зображення змінює і розмір вмісту зображення відповідно до нових розмірів полотна. Плавна зміна масштабу, загалом кажучи, дає якісніші результати, ніж звичайна зміна масштабу за рахунок змішування сусідніх кольорів. + +Ви можете вказати нові розміри у пікселях або у відсотках до попереднього розміру. Якщо ви позначите поле Зберігати співвідношення розмірів, співвідношення ширини до висоти зміненого зображення залишиться тим самим, яким воно було у початкового зображення. + + +Ви можете довільним чином Змінити розмір всього зображення або Плавно змінити масштаб вибраної області за допомогою відповідних засобів керування. + + + +Для вибраних областей підтримується лише зміна масштабу, для текстових полів — лише зміна розмірів. Щоб отримати додаткову інформацію щодо застосування цих ефектів, перегляньте Нотатки. + + + + +Обертати + + + + + + + + + +За допомогою цього пункту можна обертати зображення. Ви можете вказати кут і напрямок обертання. + + +Ви можете повернути зображення у іншу сторону, якщо задасте від’ємне значення кута. + + + +Щоб дізнатися про подробиці застосування цього ефекту до вибраної області, перегляньте Нотатки. + + + + +Зробити зображенням (Обрізати) + +За допомогою цього пункту можна зробити вибрану область окремим зображенням. + + +Цю дію можна виконувати, лише якщо на зображенні є активна вибрана область. + + + + +Перекосити + + + + + + + + + +За допомогою цього пункту можна перекосити все зображення або його вибрану частину у горизонтальному або вертикальному напрямку. + + +Щоб дізнатися про подробиці застосування цього ефекту до вибраної області, перегляньте Нотатки. + + + + +Пом’якшити або збільшити різкість + +Доступ до цього ефекту можна отримати за допомогою діалогового вікна Додаткові ефекти. + + + + + + + + +Цей ефект використовується для пом’якшення або збільшення різкості зображення. + + + + +Додаткові ефекти + +У цьому діалоговому вікні ви можете обрати один з таких ефектів: Баланс, Барельєф, Вирівняти, Інвертувати, Зменшити кількість кольорів та Пом’якшити або збільшити різкість. + + + +Нотатки + +Дії Змінити розміри / масштаб, Обертати і Перекосити можуть змінити розміри зображення. Нові розміри зображення ви зможете побачити у відповідному діалоговому вікні. + +Якщо ви застосуєте ці ефекти до зображення, його розміри буде, за потреби, змінено. Але, якщо ви застосовуєте їх до вибраної області, зміни розмірів зображення не відбудеться, навіть якщо перетворена вибрана область не зможе вміститися у зображення. + + + + + + + + + +Для того, щоб отримати зображення, розташоване праворуч, зображення, розташоване ліворуч, було повернуто на 30° за годинниковою стрілкою. &kolourpaint; автоматично збільшив розміри зображення, щоб у ньому можна було розташувати змінений вміст. + + + + + + + + + +Вибрану область на зображенні ліворуч було повернуто на 30° за годинниковою стрілкою, щоб отримати вибрану область на зображенні праворуч. Розмір самого зображення не змінився, а отже, частина вибраної області буде невидимою, якщо ви не зміните розміри зображення. + + + + + +Подяки і ліцензія + +Carl Tucker +Ця документація може бути не зовсім точною, вона може бути не зовсім повною, але це чесна документація. + + +&kolourpaint; +Авторські права на програму © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +Авторські права на специфічні для &kolourpaint; піктограми © 2004, 2005 Kristof Borrey borrey@kde.org, Nuno Pinheiro nf.pinheiro@gmail.com, &Danny.Allen; dannya40uk@yahoo.co.uk + +Авторські права на документацію і художні роботи у документації © 2004, 2005 &Thurston.Dang; &Thurston.Dang.mail; + +Відтворення частин можливе лише за дозволу отриманого за цією адресою. + +Переклад українською: Юрій Чорноіван yurchor@ukr.net +&underFDL; Ліцензування цієї програми таке: + +Авторські права © 2003, 2004, 2005 &Clarence.Dang; &Clarence.Dang.mail; + +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +&documentation.index; +
                        + + diff --git a/po/uk/docs/kolourpaint/screenshot_acquiring.png b/po/uk/docs/kolourpaint/screenshot_acquiring.png new file mode 100644 index 0000000..5b6de71 Binary files /dev/null and b/po/uk/docs/kolourpaint/screenshot_acquiring.png differ diff --git a/po/uk/kolourpaint.po b/po/uk/kolourpaint.po new file mode 100644 index 0000000..98905bc --- /dev/null +++ b/po/uk/kolourpaint.po @@ -0,0 +1,3031 @@ +# Translation of kolourpaint.po to Ukrainian +# Copyright (C) 2002-2020 This_file_is_part_of_KDE +# This file is distributed under the license LGPL version 2.1 or +# version 3 or later versions approved by the membership of KDE e.V. +# +# Andriy Rysin , 2002, 2003, 2006. +# Eugene Onischenko , 2004, 2005. +# Ivan Petrouchtchak , 2004, 2005, 2007, 2008. +# Yuri Chornoivan , 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016, 2017, 2018, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2021-07-03 08:47+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 20.12.0\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Іван Петрущак" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ivanpetrouchtchak@yahoo.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "Баланс" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "Пом'якшити" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "Збільшити різкість" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "Очистити" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "Вибрано: %1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "Барельєф" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "Вирівняти" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "Перетворити до відтінків сірого" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "Відтінок, Насиченість, Значення" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "Інвертувати кольори" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "Інвертувати" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "Перетворити на чорно-біле (із змішуванням)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "Перетворити в чорно-біле" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "Перетворити у 256 кольорів (із змішуванням)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "Перетворити у 256 кольорів" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "Вирівнювання гістограми" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "Перевернути" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "Перевертати горизонтально і вертикально" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "Перевернути горизонтально" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "Перевернути вертикально" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "Текст: змінити розмір" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "Вибір: масштаб" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "Вибір: плавна зміна масштабу" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "Змінити розмір" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "Змінити масштаб" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "Плавна зміна масштабу" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "Обернути" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "Перекосити" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "&Вернути %1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "&Вернути" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "&Повторити %1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "&Повторити" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "Вернути: %1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "Вернути" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "Повторити: %1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "Повторити" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1: %2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "ще %1 елемент" +msgstr[1] "ще %1 елементи" +msgstr[2] "ще %1 елементів" +msgstr[3] "ще %1 елемент" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "Піпетка" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "Заповнення повінню" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "Додаткові ефекти зображення (позначене)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "Додаткові ефекти зображення" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "&Ефект:" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "Зменшити кількість кольорів" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "Пом'якшити або збільшити різкість" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "Властивості документа" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "Крапок &на дюйм (DPI)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "Не вказано" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "Горизонтальна:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "Вертикальна:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                        Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                        The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                        If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                        If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                        Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                        " +msgstr "" +"

                        Точок на дюйм (Dots Per Inch) (DPI) визначає кількість точок " +"зображення, які слід вмістити вздовж одного дюйма (2,54 см).

                        Чим " +"більшим є значення DPI для зображення, ти меншим буде надруковане " +"зображення. Зауважте, що навряд чи надруковані вами знімки будуть кращої " +"якості, якщо ви збільшите це значення до величини, що перевищує 300 або 600 " +"DPI, все залежить від друкарки.

                        Якщо ви бажаєте надрукувати зображення " +"у тому вигляді, як ви його бачите на екрані, встановіть величини DPI " +"зображення у ті ж значення, що і для екрана.

                        Якщо якусь з величин DPI " +"Не визначено, зображення буде надруковано з розміром, що відповідає " +"зображенню на екрані.

                        Не всі формати зображень підтримують величини " +"DPI. Якщо формат, у якому ви зберігаєте зображення не підтримує ці величини, " +"їх не буде збережено.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "Відс&туп" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                        The Offset is the relative position where this image should be " +"placed, compared to other images.

                        Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                        " +msgstr "" +"

                        Відступ визначає розташування цього зображення відносно інших " +"зображень.

                        Не всі формати зображень підтримують параметр Відступ. Якщо формат, у якому ви зберігаєте зображення не підтримує його, " +"величини, які ви тут зазначили, не буде збережено.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "&Текстові поля" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "&Додати ряд" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "&Вилучити рядок" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "&Скинути" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                        Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                        However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                        Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                        " +msgstr "" +"

                        Текстові поля надають додаткову інформацію про зображення. Це " +"може бути поле коментарів, у якому ви можете написати будь-який текст.

                        Але, залежно від формату, ці поля можуть бути використані для машинної " +"інформації, яку не слід змінювати, втім, це малоймовірно.

                        Не всі " +"формати зображень підтримують Текстові поля. Якщо формат, у якому ви " +"зберігаєте зображення не підтримує їх, ці поля не буде збережено.

                        " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "Ключ" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "Значення" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "Текстове значення «%1» в рядку %2 потребує ключа." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "" +"Всі текстові ключі мусять бути унікальними. Текстовий ключ «%1» в рядках %2 " +"і %3 — однакові." + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "Некоректні текстові поля" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "Розміри" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "Оригінал:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "Перегляд" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "&Оновити" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "Змінити розмір / масштаб" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "&Обробити:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "Ціле зображення" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "Вибір" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "Текстовий блок" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "Дія" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                        • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                        • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                        • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                        " +msgstr "" +"
                        • Зміна розміру: Розмір малюнка буде збільшено через " +"створення нових ділянок праворуч і/або знизу (заповнених кольором тла) або " +"зменшено через урізання його з правого боку і/або знизу.
                        • Зміна " +"масштабу: Малюнок буде розширено способом дублювання пікселів або " +"стиснуто опусканням пікселів.
                        • Плавна зміна масштабу: Це те " +"саме, що й Зміна масштабу, однак виходить гладкіший малюнок, бо " +"застосовується змішування кольорів сусідніх пікселів.
                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "&Змінити розмір" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "&Змінити масштаб" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "П&лавна зміна масштабу" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "Ширина:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "Висота:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "&Результат:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "&Відсотки:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "Зберігати &співвідношення розмірів" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                        Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to resize the text box?

                        " +msgstr "" +"

                        Зміна розміру текстової рамки до %1x%2 може зайняти значно багато " +"пам'яті. Це може спричинити погіршення швидкодії системи і проблеми з " +"програмними ресурсами.

                        Ви впевнені, що хочете змінити розмір текстової " +"рамки?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "Змінити розміри текстової рамки?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "З&мінити розміри текстової рамки" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                        Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to resize the image?

                        " +msgstr "" +"

                        Зміна розміру зображення до %1x%2 може зайняти значно багато пам'яті. " +"Це може спричинити погіршення швидкодії системи і проблеми з програмними " +"ресурсами.

                        Ви впевнені, що хочете змінити розмір зображення?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "Змінити розмір зображення?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "З&мінити розмір зображення" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                        Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to scale the image?

                        " +msgstr "" +"

                        Зміна масштабу зображення до %1x%2 може зайняти значно багато " +"пам'яті. Це може спричинити погіршення швидкодії системи і проблеми з " +"програмними ресурсами.

                        Ви впевнені, що хочете змінити масштаб " +"зображення?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "Змінити масштаб зображення?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "Змінити мас&штаб зображення" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                        Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to scale the selection?

                        " +msgstr "" +"

                        Зміна масштабу вибраного до %1x%2 може зайняти значно багато пам'яті. " +"Це може спричинити погіршення швидкодії системи і проблеми з програмними " +"ресурсами.

                        Ви впевнені, що хочете змінити масштаб вибраного?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "Вибір масштабу" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "Вибір мас&штабу" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                        Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the image?" +msgstr "" +"

                        Плавна зміна масштабу зображення до %1x%2 може зайняти дуже багато " +"пам'яті. Це може спричинити погіршення швидкодії системи і проблеми з " +"програмними ресурсами.

                        Ви впевнені, що хочете плавно змінювати масштаб " +"зображення?

                        " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "Плавна зміна масштабу" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "Плавна зміна мас&штабу зображення" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                        Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to smooth scale the selection?" +"

                        " +msgstr "" +"

                        Плавна зміна масштабу вибраного до %1x%2 може зайняти багато пам'яті. " +"Це може спричинити погіршення швидкодії системи і проблеми з програмними " +"ресурсами.

                        Ви впевнені, що хочете плавно змінювати масштаб вибраного?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "Плавна зміна масштабу позначеного" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "Плавна зміна масштаб&у вибраного" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "Обертання позначеного" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "Обертання зображення" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "Після обертання:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "Напрямок" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "&Проти годинникової стрілки" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "&За годинниковою стрілкою" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "Кут" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 &градусів" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 г&радусів" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 гр&адусів" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "Н&етиповий:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "градусів" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                        Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to rotate the selection?

                        " +msgstr "" +"

                        Обертання вибраного до %1x%2 може зайняти значно багато пам'яті. Це " +"може спричинити погіршення швидкодії системи і проблеми з програмними " +"ресурсами.

                        Ви впевнені, що хочете зробити обертання вибраного?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "Обертання позначеного" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "Оберта&ти вибране" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                        Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to rotate the image?

                        " +msgstr "" +"

                        Обертання зображення до %1x%2 може зайняти значно багато пам'яті. Це " +"може спричинити погіршення швидкодії системи і проблеми з програмними " +"ресурсами.

                        Ви впевнені, що хочете зробити обертання зображення?

                        " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "Обертання зображення" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "О&бертати зображення" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "Перекошування позначеного" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "Перекошування зображення" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "Після перекошення:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "&Горизонтальний:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "&Вертикальний:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                        Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                        Are you sure you want to skew the selection?

                        " +msgstr "" +"

                        Перекошення вибраного до %1x%2 може зайняти дуже багато пам'яті. Це " +"може спричинити погіршення швидкодії системи і проблеми з програмними " +"ресурсами.

                        Ви впевнені, що хочете перекосити вибране?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "Перекошування позначеного" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "Пе&рекосити вибране" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                        Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                        Are you sure you want to skew the image?

                        " +msgstr "" +"

                        Перекошення зображення до %1x%2 може зайняти дуже багато пам'яті. Це " +"може спричинити погіршення швидкодії системи і проблеми з програмними " +"ресурсами.

                        Ви впевнені, що хочете перекосити зображення?

                        " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "Перекосити зображення?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "Пере&косити зображення" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "Подібність кольорів" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "Відстань в кубі кольорів &RGB" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "Точний збіг" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "" +"Що таке подібність кольорів?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "Збереження перегляду" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 байт (прибл. %2%)" +msgstr[1] "%1 байти (прибл. %2%)" +msgstr[2] "%1 байтів (прибл. %2%)" +msgstr[3] "1 байт (прибл. %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "Не вдалося відкрити «%1»." + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"Не вдалося відкрити «%1» - формат зображення не підтримується.\n" +"Можливо, пошкоджений файл." + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "Не вдалося зберегти зображення - недостатньо інформації." + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL: %1\n" +"Тип MIME: %2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "Внутрішня помилка" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                        The %1 format may not be able to preserve all of the image's " +"color information.

                        Are you sure you want to save in this format?

                        " +msgstr "" +"

                        Формат %1 може не зберегти всю інформацію про кольори " +"зображення.

                        Ви впевнені, що хочете зберегти в цьому форматі?

                        " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "Формат з втратою якості" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                        Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                        Are " +"you sure you want to save at this color depth?

                        " +msgstr "" +"

                        Збереження зображення з низькою глибиною кольору %1 біт(ів) може " +"спричинити втрату інформації кольору. Також буде вилучено прозорість.

                        Ви впевнені, що хочете зберегти з цією глибиною кольору?

                        " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "Низька глибина кольору" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "Не вдалося зберегти зображення - неможливо створити тимчасовий файл." + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "Не вдалося зберегти як «%1»: %2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "Помилка під час збереження зображення" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "Не вдалося зберегти зображення - помилка вивантаження." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "Вилучити внутрішню г&раницю" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "Вилучити внутрішню границю" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "Авто&обрізання" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "Автообрізання" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "" +"KolourPaint не може вилучити внутрішню границю позначення, бо її не вдалось " +"знайти." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "Неможливо вилучити внутрішню границю" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "" +"KolourPaint не може автоматично обрізати зображення, тому що не вдалось " +"знайти його границю." + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "Неможливо обрізати автоматично" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "Зробити зображенням" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "Вибране: створити" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "Програма малювання від KDE" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "Засновник проєкту" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "Головний дослідник" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "Підтримка сканування, підтримка каналу прозорості, поточний супровід" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "Піктограми" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "Підтримка InputMethod" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "Ефекти зображень" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "Портування до KDE 4" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "Портування на KF 5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "Подяка багатьом іншим, які допомогли зробити цю програму." + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "Файли зображень, які слід відкрити, вказувати не обов’язково" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "Вивести список усіх типів MIME зображень, які може читати програма" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "П&ерегляд" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "&Зображення" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "&Кольори" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "Головний пенал" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "Пенал тексту" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "Контекстне меню інструмента вибору" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "З&міни" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "Мініатюра" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "Потягніть за держак для зміни розміру." + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "Зміна розміру: відпустіть всі кнопки мишки." + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "Зміна розміру: щоб скасувати, натисніть праву кнопку мишки." + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "Текст" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "Не вдалося відкрити палітру кольорів «%1»." + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"Не вдалося відкрити палітру «%1» — формат не підтримується.\n" +"Можливо, пошкоджений файл." + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "Не вдалося відкрити палітру кольорів KDE «%1»." + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "Не вдалося зберегти палітру кольорів як «%1»." + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "Без назви" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "Використовувати типові параметри KolourPaint" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "Використовувати кольори KDE" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "&Відкрити..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "Перезаванта&жити" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "&Зберегти" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "Зберегти &як..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "Додати ряд" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "Вилучити останній ряд" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "Пенал кольорів" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Палітру кольорів «%1» було змінено.\n" +"Хочете її зберегти?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Палітру кольорів KDE «%1» було змінено.\n" +"Хочете її зберегти?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"Типову палітру кольорів було змінено.\n" +"Хочете її зберегти?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "Відкрити палітру кольорів" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Палітру кольорів «%1» було змінено.\n" +"Перезавантаження призведе до втрати всіх змін від часу останнього " +"збереження.\n" +"Ви впевнені?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "&Перезавантажити" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Палітру кольорів KDE «%1» було змінено.\n" +"Перезавантаження призведе до втрати всіх змін.\n" +"Ви впевнені?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Типову палітру кольорів було змінено.\n" +"Перезавантаження призведе до втрати всіх змін.\n" +"Ви впевнені?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "Зберегти палітру кольорів як" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "Вставити в &новому вікні" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "&Вилучити вибране" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "С&копіювати у файл..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "Вставити &із файла..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "Текст: створити рамку" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "Текст: вставити" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "" +"KolourPaint не вдалося вставити дані з буфера обміну даними, оскільки ці " +"дані подано у невідомому форматі." + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "Не вдається вставити" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "Текст: вилучити рамку" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "Позначене: вилучити" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "Текст: завершити" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "Позначене: скасувати позначення" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "Копіювання до файла" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "Вставлення з файла" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "Е&кспортувати..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "Сканувати..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "Отримати знімок вікна" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "Властивості" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "Перезаванта&жити" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "Усі підтримувані файли (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "Відкриття зображення" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "Не вдалося відкрити діалогове вікно сканування." + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "Помилка під час сканування" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "Затримка знімка" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " секунда" +msgstr[1] " секунди" +msgstr[2] " секунд" +msgstr[3] " секунда" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "Без затримки" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "Сховати головне вікно" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "Властивості документа" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "Збереження зображення з новою назвою" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "Експорт" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"Документ «%1» був змінений.\n" +"Перезавантаження призведе до втрати всіх змін від часу останнього " +"збереження.\n" +"Ви впевнені?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"Документ «%1» був змінений.\n" +"Перезавантаження призведе до втрати всіх змін.\n" +"Ви впевнені?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "Друк зображення" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"Перед відсиланням ви мусите зберегти зображення.\n" +"Хочете його зберегти?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"Документ «%1» було змінено.\n" +"Хочете його зберегти?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "З&мінити розмір / масштаб..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "З&робити зображенням (обрізати)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "Пе&ревернути (догори низом)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "Віддзеркалити (горизонтально)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "&Обернути..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "Обернути &ліворуч" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "Обернути &праворуч" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "Пере&косити..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "Перетворити в &чорно-біле (із змішуванням)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "Перетворити до відтінків &сірого" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "&Інвертувати кольори" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "&Очистити" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "Зробити конфіденційним" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "&Додаткові ефекти..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "&Зображення" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "Ви&бір" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "Показати &шлях" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "Малювати зі згладжуванням" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 б/п" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "Гарнітура шрифту" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "Розмір шрифту" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "Жирний" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "Курсив" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "Підкреслений" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "Перекреслений" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "Попередній параметр інструмента (група 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "Наступний параметр інструмента (група 1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "Попередній параметр інструмента (група 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "Наступний параметр інструмента (група 2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "&Малювати непрозоре" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "Малювати з подібністю кольорів..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "Пенал інструментів" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "Показувати &ґратку" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "Показувати м&ініатюру" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "Режим з&меншеної мініатюри" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "Увімкнути &рамку мініатюри" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "&Масштабування" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "Отримати зображення" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "Спроба відкрити вказаний сканер зазнала невдачі." + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "Пензель" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "Малювання за допомогою пензлів різної форми та розміру" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "" +"Клацніть, щоб малювати крапки або потягніть, щоб малювати довільні штрихи." + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "Гумка для кольору" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "Замальовує пікселі вибраного кольору кольором тла" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "Клацніть або потягніть, щоб витерти пікселі переднього плану." + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "Гумка" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "Надає можливість витерти помилки" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "Клацніть або потягніть, щоб витерти." + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "Відпустіть всі кнопки мишки." + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "Перо" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "Малює крапки та довільні штрихи" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "Пульверизатор" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "Розпилює графіті" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "Щоб розпилювати графіті, клацніть або потягніть." + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "Щоб скасувати, натисніть праву кнопку мишки." + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "Щоб скасувати, натисніть ліву кнопку мишки." + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1: " + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "Надає можливість вибрати колір із зображення" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "Клацніть, щоб вибрати колір." + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "Заповнює ділянки в зображенні" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "Клацніть, щоб заповнити ділянку." + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "Масштабування" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "Збільшення і зменшення зображення" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "" +"Клацніть, щоб збільшити / зменшити або потягніть лівою кнопкою мишки, щоб " +"збільшити певну ділянку." + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "Крива" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "Малює криві" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "Розтягніть, точки початку і кінця." + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "" +"Потягніть при натиснутій лівій кнопці мишки, щоб встановити першу контрольну " +"точку або натисніть праву кнопку, щоб закінчити." + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "" +"Потягніть при натиснутій правій кнопці мишки, щоб встановити першу " +"контрольну точку або натисніть ліву кнопку, щоб закінчити." + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "" +"Потягніть при натиснутій лівій кнопці мишки, щоб встановити останню " +"контрольну точку або натисніть праву кнопку, щоб закінчити." + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "" +"Потягніть при натиснутій правій кнопці мишки, щоб встановити останню " +"контрольну точку або натисніть ліву кнопку, щоб закінчити." + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "Пряма" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "Малює лінії" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "Потягніть, щоб малювати." + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "Багатокутник" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "Малює багатокутники" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "Потягніть, щоб намалювати першу лінію." + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "" +"Потягніть при натиснутій лівій кнопці мишки, щоб намалювати ще одну лінію " +"або натисніть праву кнопку, щоб закінчити." + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "" +"Потягніть при натиснутій правій кнопці мишки, щоб намалювати ще одну лінію " +"або натисніть ліву кнопку, щоб закінчити." + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "З'єднані лінії" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "Малює з'єднані лінії" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "Еліпс" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "Малює овали та кола" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "Прямокутник" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "Малює прямокутники та квадрати" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "Округлений прямокутник" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "Малює прямокутники та квадрати з закругленими кутами" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "Щоб вибрати, потягніть при натиснутій лівій кнопці." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "Щоб пересунути вибране, потягніть при натиснутій лівій кнопці." + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "Щоб змінити масштаб вибраного, потягніть при натиснутій лівій кнопці." + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "Вибране: непрозорість" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "Вибір: прозорий" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "Вибір: колір прозорості" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "Вибір: Подібність кольору прозорості" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "Вибір (еліптичний)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "Робить еліптичний або круговий вибір" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "Вибір (довільна форма)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "Робить вибір довільної форми" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "Вибір (прямокутний)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "Робить прямокутний вибір" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "Вибір: пересунути" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1: розмастити" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "Пише текст" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "Текст: вилучити символ зліва" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "Текст: вилучити" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "Текст: новий рядок" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "Текст: написати" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "Щоб створити текстову рамку, потягніть при натиснутій лівій кнопці." + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "Щоб пересунути текстову рамку, потягніть при натиснутій лівій кнопці." + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "Текст: пересунути рамку" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "" +"Щоб змінити розмір текстової рамки, потягніть при натиснутій лівій кнопці." + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "Щоб змінити позицію курсора, натисніть ліву кнопку." + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "Текст: непрозоре тло" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "Текст: прозоре тло" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "Текст: поміняти кольори" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "Текст: колір" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "Текст: колір тла" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "Текст: шрифт" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "Текст: розмір шрифту" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "Текст: жирний" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "Текст: курсив" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "Текст: підкреслений" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "Текст: перекреслений" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "Режим без масштабування — мініатюри" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% — Мініатюра" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                        Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                        If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                        This feature applies " +"to:

                        • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                        • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                        • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                        • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                        Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                        However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                        To configure it, click on the cube.

                        " +msgstr "" +"

                        Схожість кольорів визначає те, наскільки схожими мають " +"бути кольори різних пікселів, щоб функції програми вважали їх однаковими.

                        Якщо ви встановите цей параметр у значення відмінне від Повна " +"відповідність, вам легше буде обробляти не різкі зображення і " +"фотографії, все буде схоже на режим «Чарівної палички» програм для малювання." +"

                        Цей параметр може бути застосований до:

                        • Вибраного: " +"У режимі прозорості, будь-який колір у вибраному, що схожий на " +"колір тла, стане прозорим.
                        • Заповнення: для областей зі " +"схожими - але не тотожними - кольорами пікселів, вище значення " +"призведе до заповнення більшої кількості пікселів.
                        • Гумка для " +"кольору: будь-який колір, що схожий на колір переднього плану " +"буде замінено на колір тла.
                        • Автообрізання і Вилучення " +"внутрішньої границі: для границь зі схожими - але не тотожними - " +"кольоровими пікселями, вище значення параметра краще обріже границю.
                        • Вищі значення означають, що інструменти програми розглядатимуть ширший " +"діапазон значень кольорів як так, що достатньо схожі, щоб бути " +"однаковими. Отже, вам слід збільшити цей параметр, якщо ви вважаєте, що " +"інструменти програми не діють на пікселі з однаковим кольором достатньою " +"мірою.

                          Але, якщо інструменти зачіпають пікселі, чиї кольори не є на " +"ваш погляд тотожними (наприклад, якщо Заповнення змінює забагато " +"пікселів), вам слід зменшити це значення.

                          Щоб налаштувати його, " +"клацніть на піктограмі куба.

                          " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                          Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                          If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                          This feature applies " +"to:

                          • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                          • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                          • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                          • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                          Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                          However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                          " +msgstr "" +"

                          Схожість кольорів визначає те, наскільки схожими мають " +"бути кольори різних пікселів, щоб функції програми вважали їх однаковими.

                          Якщо ви встановите цей параметр у значення відмінне від Повна " +"відповідність, вам легше буде обробляти не різкі зображення і " +"фотографії, все буде схоже на режим «Чарівної палички» програм для малювання." +"

                          Цей параметр може бути застосований до:

                          • Вибраного: " +"У режимі прозорості, будь-який колір у вибраному, що схожий на " +"колір тла, стане прозорим.
                          • Заповнення: для областей зі " +"схожими - але не тотожними - кольорами пікселів, вище значення " +"призведе до заповнення більшої кількості пікселів.
                          • Гумка для " +"кольору: будь-який колір, що схожий на колір переднього плану " +"буде замінено на колір тла.
                          • Автообрізання і Вилучення " +"внутрішньої границі: для границь зі схожими - але не тотожними - " +"кольоровими пікселями, вище значення параметра краще обріже границю.
                          • Вищі значення означають, що інструменти програми розглядатимуть ширший " +"діапазон значень кольорів як так, що достатньо схожі, щоб бути " +"однаковими. Отже, вам слід збільшити цей параметр, якщо ви вважаєте, що " +"інструменти програми не діють на пікселі з однаковим кольором достатньою " +"мірою.

                            Але, якщо інструменти зачіпають пікселі, чиї кольори не є на " +"ваш погляд тотожними (наприклад, якщо Заповнення змінює забагато " +"пікселів), вам слід зменшити це значення.

                            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                            Color Similarity: %1%

                            Click to configure.

                            " +msgstr "" +"

                            Подібність кольорів: %1%

                            Натисніть, щоб " +"налаштувати.

                            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                            Color Similarity: Exact Match

                            Click to configure." +msgstr "" +"

                            Подібність кольорів: точний збіг

                            Натисніть, щоб " +"налаштувати.

                            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "&Яскравість:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "Скин&ути" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "Ко&нтрастність:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "&Гама:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "Скину&ти" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "Кана&ли:" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "Всі" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "Червоний" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "Зелений" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "Блакитний" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "Скинути &всі значення" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "Параметри" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "&Величина:" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "&Ввімкнути" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "Кольори" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "&Відтінок:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "&Насиченість:" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "&Значення:" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "&Червоний" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "&Зелений" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "&Блакитний" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "&Всі" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "Канали" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "&Чорно-біле" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "Ч&орно-біле (із змішуванням)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 ко&льорів" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 кольо&рів (зі змішуванням)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24-&бітовий колір" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "Зменшити до" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "&Зернистість:" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                            To change the color of a color cell itself, double-click on it.

                            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                            " +msgstr "" +"

                            Щоб обрати колір переднього плану, яким малюватиме цей інструмент, " +"клацніть лівою кнопкою миші на заповненій кольором клітинці. Щоб обрати " +"колір тла, клацніть замість цього правою кнопкою.

                            Щоб змінити колір у " +"самій клітинці, двічі клацніть на ній.

                            Ви також можете поміняти " +"кольори заповненої кольором клітинки і будь-якої іншої клітинки " +"перетягуванням. А якщо ви при цьому утримуватимете клавішу Ctrl, " +"колір клітинки призначення буде перезаписано, замість простого обміну " +"кольорами з клітинкою джерелом.

                            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "Перетворити &у:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "Якіс&ть:" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "&Перегляд" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "Чорно-біле" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "Чорно-біле (із змішуванням)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 кольорів" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 кольорів (із змішуванням)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24-біт колір" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "Позиція зо&браження" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "&Центр сторінки" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "Вгорі &ліворуч сторінки" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "Прозорий" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "Типові параметри KolourPaint" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "Кольори: %1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "Кольори: %1 [змінено]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "Коло" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "Квадрат" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "Похила риска" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "Зворотна риска" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "Не заповнювати" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "Заповнити кольором тла" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "Заповнити кольором переднього плану" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "Непрозорість" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Документ з назвою «%1» вже існує.\n" +#~ "Хочете перезаписати?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "Палітра кольорів з назвою «%1» вже існує\n" +#~ "Хочете перезаписати?" + +#~ msgid "" +#~ "Setting the zoom level to a value that is not a multiple of 100% results " +#~ "in imprecise editing and redraw glitches.\n" +#~ "Do you really want to set to zoom level to %1%?" +#~ msgstr "" +#~ "Зміна масштабу у значення, яке не кратне 100% може спричинити до " +#~ "неточного редагування і проблемах при відображенні.\n" +#~ "Ви справді хочете змінити масштаб до %1%?" + +#~ msgid "Set Zoom Level to %1%" +#~ msgstr "Змінити масштаб до %1%" + +#~ msgid "None" +#~ msgstr "Відсутній" + +#~ msgid "" +#~ "

                            Resizing the image to %1x%2 may take a substantial amount of " +#~ "memory. This can reduce system responsiveness and cause other application " +#~ "resource problems.

                            Are you sure want to resize the image?

                            " +#~ msgstr "" +#~ "

                            Зміна розміру зображення до %1x%2 може зайняти значно багато " +#~ "пам'яті. Це може спричинити погіршення швидкодії системи і проблеми з " +#~ "програмними ресурсами.

                            Ви впевнені, що хочете змінити розмір " +#~ "зображення?

                            " + +#~ msgid "Overwrite" +#~ msgstr "Перезаписати" + +#~ msgid "Could not open \"%1\" - unknown mimetype." +#~ msgstr "Не вдалося відкрити «%1» - невідомий тип MIME." + +#~ msgid "Save Preview" +#~ msgstr "Зберегти перегляд" + +#~ msgid "To obtain support, please visit the website." +#~ msgstr "Щоб отримати підтримку, відвідайте наш вебсайт." + +#~ msgid "" +#~ "No plugin was found which provides the scanner dialog.\n" +#~ "This usually means that the package providing the ksaneplugin is not " +#~ "installed." +#~ msgstr "" +#~ "Не знайдено додатка, відповідального за відкриття діалогового вікна " +#~ "сканування.\n" +#~ "Зазвичай, це означає, що не встановлено пакунка з ksaneplugin." + +#~ msgid "No Scanning Support" +#~ msgstr "Немає підтримки сканування" + +#~ msgid "Scanning support is not installed." +#~ msgstr "Підтримку сканування не встановлено." + +#~ msgid "" +#~ "

                            KolourPaint cannot paste the contents of the clipboard as the data " +#~ "unexpectedly disappeared.

                            This usually occurs if the application " +#~ "which was responsible for the clipboard contents has been closed.

                            " +#~ msgstr "" +#~ "

                            KolourPaint не може вставити вміст кишені, бо дані несподівано " +#~ "зникли.

                            Зазвичай це може статись, коли закрито програму, яка була " +#~ "відповідальна за вміст кишені.

                            " + +#~ msgid "Acquiring &Screenshots" +#~ msgstr "Отримання &знімків екрана" + +#~ msgid "" +#~ "

                            To acquire a screenshot, press %1. The screenshot will be " +#~ "placed into the clipboard and you will be able to paste it in KolourPaint." +#~ "

                            You may configure the Desktop Screenshot shortcut in the " +#~ "KDE System Settings module Keyboard " +#~ "Shortcuts.

                            Alternatively, you may try the application KSnapshot.

                            " +#~ msgstr "" +#~ "

                            Щоб отримати знімок екрана, натисніть %1. Дані знімка буде " +#~ "додано до буфера обміну даними, ви зможете вставити їх до вікна " +#~ "KolourPaint.

                            Ви можете налаштувати скорочення знімка екрана " +#~ "стільниці в модулі Системних параметрів KDE Клавіатурні скорочення.

                            Крім того, ви можете " +#~ "скористатись програмою KSnapshot.

                            " + +#~ msgid "" +#~ "

                            You do not appear to be running KDE.

                            Once you have loaded KDE:" +#~ "

                            To acquire a screenshot, press %1. The screenshot " +#~ "will be placed into the clipboard and you will be able to paste it in " +#~ "KolourPaint.

                            Alternatively, you may try the " +#~ "application KSnapshot.

                            " +#~ msgstr "" +#~ "

                            Схоже, у вас не запущено KDE.

                            Після завантаження KDE:" +#~ "

                            Щоб отримати знімок екрана, натисніть %1. Знімок " +#~ "екрана буде поміщено у кишеню і ви зможете вставити його в KolourPaint.

                            Альтернативно, ви можете скористатись програмою KSnapshot.

                            " + +#~ msgid "Set as Wa&llpaper (Centered)" +#~ msgstr "Зробити &тлом стільниці (по центру)" + +#~ msgid "Set as Wallpaper (&Tiled)" +#~ msgstr "Зробити тлом стільниці (&Плиткою)" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it as a " +#~ "local file.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Перед тим як скористатись цим зображенням для шпалер потрібно зберегти " +#~ "його як місцевий файл.\n" +#~ "Хочете його зберегти?" + +#~ msgid "" +#~ "Before this image can be set as the wallpaper, you must save it.\n" +#~ "Do you want to save it?" +#~ msgstr "" +#~ "Перед тим як скористатись цим зображенням для шпалер потрібно зберегти " +#~ "його.\n" +#~ "Хочете його зберегти?" + +#~ msgid "Could not change wallpaper." +#~ msgstr "Не вдалося змінити тло." + +#~ msgid "..." +#~ msgstr "..." + +#~ msgid "Flip Selection" +#~ msgstr "Перекинути вибір" + +#~ msgid "Flip Image" +#~ msgstr "Перевернути зображення" + +#~ msgid "&Vertical (upside-down)" +#~ msgstr "&Вертикальний (догори низом)" + +#~ msgid "&Horizontal" +#~ msgstr "&Горизонтальний" + +#~ msgid "Loss of Color and Translucency Information" +#~ msgstr "Втрата інформації про колір і прозорість" + +#~ msgid "Loss of Color Information" +#~ msgstr "Втрата інформації про колір" + +#~ msgid "Loss of Translucency Information" +#~ msgstr "Втрата інформації про прозорість" + +#~ msgid "" +#~ "

                            KolourPaint does not support the current screen depth of %1bpp. " +#~ "KolourPaint will attempt to start but may act unreliably.

                            To avoid " +#~ "this issue, please change your screen depth to 24bpp and then restart " +#~ "KolourPaint.

                            " +#~ msgstr "" +#~ "

                            KolourPaint не підтримує поточну глибину кольору - %1bpp. " +#~ "KolourPaint буде запущено, але може працювати нестабільно.

                            Щоб " +#~ "уникнути це, будь ласка, змініть вашу глибину кольору до 24bpp і повторно " +#~ "запустіть KolourPaint.

                            " + +#~ msgid "Unsupported Screen Mode" +#~ msgstr "Режим екрана, що не підтримується" + +#~ msgid "" +#~ "

                            This effect does not support the current screen depth of %1bpp.

                            To avoid this issue, please change your screen depth to 24bpp and " +#~ "then restart KolourPaint.

                            " +#~ msgstr "" +#~ "

                            Цей ефект не підтримує поточну глибину кольору екрана - %1bpp.

                            Щоб уникнути це, будь ласка, змініть вашу глибину кольору до 24bpp і " +#~ "повторно запустіть KolourPaint.

                            " + +#~ msgid "Cannot scan - out of graphics memory." +#~ msgstr "Неможливо сканувати - недостатньо пам'яті для графіки." + +#~ msgid "Cannot Scan" +#~ msgstr "Неможливо сканувати" + +#~ msgid "&Flip..." +#~ msgstr "&Перевернути..." + +#~ msgid "" +#~ "

                            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                            If you save this image, any color loss will " +#~ "become permanent.

                            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.


                            It also " +#~ "contains translucency which is not fully supported. The translucency data " +#~ "will be approximated with a 1-bit transparency mask.

                            If you save " +#~ "this image, this loss of translucency will become permanent.

                            " +#~ msgstr "" +#~ "

                            Зображення, яке ви хочете вставити, можливо має більше кольорів " +#~ "ніж поточний екранний режим. Щоб відобразити його, деяку інформацію про " +#~ "кольори буде вилучено.

                            Якщо ви збережете зображення, ця втрата " +#~ "кольорів стане незворотною.

                            Щоб запобігти цьому, спробуйте " +#~ "збільшити глибину екранного кольору принаймні до %1bpp, а потім знову " +#~ "запустіть KolourPaint.


                            Зображення також містить " +#~ "напівпрозорість, яка не цілком підтримується. Дані напівпрозорості буде " +#~ "заокруглено 1-бітовою маскою прозорості.

                            Якщо ви збережете " +#~ "зображення, ця втрата прозорості стане незворотною.

                            " + +#~ msgid "" +#~ "

                            The image to be pasted may have more colors than the current " +#~ "screen mode can support. In order to display it, some color information " +#~ "may be removed.

                            If you save this image, any color loss will " +#~ "become permanent.

                            To avoid this issue, increase your screen " +#~ "depth to at least %1bpp and then restart KolourPaint.

                            " +#~ msgstr "" +#~ "

                            Зображення, яке ви хочете вставити, можливо має більше кольорів " +#~ "ніж підтримує поточний екранний режим. Щоб відобразити його, деяку " +#~ "інформацію про кольори буде вилучено.

                            Якщо ви збережете " +#~ "зображення, ця втрата кольорів стане незворотною.

                            Щоб запобігти " +#~ "цьому, спробуйте збільшити глибину екранного кольору принаймні до %1bpp, " +#~ "а потім знову запустіть KolourPaint.

                            " + +#~ msgid "" +#~ "

                            The image to be pasted contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                            If you save this image, this loss of " +#~ "translucency will become permanent.

                            " +#~ msgstr "" +#~ "

                            Зображення, що вставляється, містить напівпрозорість, яка не " +#~ "цілком підтримується. Дані напівпрозорості буде заокруглено 1-бітовою " +#~ "маскою прозорості.

                            Якщо ви збережете зображення, ця втрата " +#~ "прозорості стане незворотною.

                            " + +#~ msgid "

                            There is nothing in the clipboard to paste.

                            " +#~ msgstr "

                            У буфері відсутня інформація для вставлення.

                            " + +#~ msgid "" +#~ "

                            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                            If you save this image, any color loss will become " +#~ "permanent.

                            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.


                            It also contains " +#~ "translucency which is not fully supported. The translucency data will be " +#~ "approximated with a 1-bit transparency mask.

                            If you save this " +#~ "image, this loss of translucency will become permanent.

                            " +#~ msgstr "" +#~ "

                            Зображення «%1» можливо має більше кольорів ніж поточний екранний " +#~ "режим. Щоб відобразити його, деяку інформацію про кольори буде вилучено.

                            Якщо ви збережете зображення, ця втрата кольорів стане " +#~ "незворотною.

                            Щоб запобігти цьому, спробуйте збільшити глибину " +#~ "екранного кольору принаймні до %2bpp, а потім знову запустіть KolourPaint." +#~ "


                            Зображення також містить напівпрозорість, яка не цілком " +#~ "підтримується. Дані напівпрозорості буде заокруглено 1-бітовою маскою " +#~ "прозорості.

                            Якщо ви збережете зображення, ця втрата прозорості " +#~ "стане незворотною.

                            " + +#~ msgid "" +#~ "

                            The image \"%1\" may have more colors than the current screen mode " +#~ "can support. In order to display it, some color information may be " +#~ "removed.

                            If you save this image, any color loss will become " +#~ "permanent.

                            To avoid this issue, increase your screen depth to " +#~ "at least %2bpp and then restart KolourPaint.

                            " +#~ msgstr "" +#~ "

                            Зображення «%1» можливо має більше кольорів ніж поточний екранний " +#~ "режим. Щоб відобразити його, деяку інформацію про кольори буде вилучено.

                            Якщо ви збережете зображення, ця втрата кольорів стане " +#~ "незворотною.

                            Щоб запобігти цьому, спробуйте збільшити глибину " +#~ "екранного кольору принаймні до %2bpp, а потім знову запустіть KolourPaint." +#~ "

                            " + +#~ msgid "" +#~ "

                            The image \"%1\" contains translucency which is not fully " +#~ "supported. The translucency data will be approximated with a 1-bit " +#~ "transparency mask.

                            If you save this image, this loss of " +#~ "translucency will become permanent.

                            " +#~ msgstr "" +#~ "

                            Зображення «%1» містить напівпрозорість, яка не цілком " +#~ "підтримується. Дані напівпрозорості буде заокруглено 1-бітовою маскою " +#~ "прозорості.

                            Якщо ви збережете зображення, ця втрата прозорості " +#~ "стане незворотною.

                            " + +#~ msgid "Could not open \"%1\" - out of graphics memory." +#~ msgstr "Не вдалося відкрити «%1» - недостатньо пам'яті для графіки." + +#~ msgid "Scanning Support" +#~ msgstr "Підтримка сканування" diff --git a/po/zh_CN/kolourpaint.po b/po/zh_CN/kolourpaint.po new file mode 100644 index 0000000..f969d25 --- /dev/null +++ b/po/zh_CN/kolourpaint.po @@ -0,0 +1,2658 @@ +msgid "" +msgstr "" +"Project-Id-Version: kdeorg\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2022-10-30 07:51\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: kdeorg\n" +"X-Crowdin-Project-ID: 269464\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /kf5-stable/messages/kolourpaint/kolourpaint.pot\n" +"X-Crowdin-File-ID: 3829\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "KDE 中国, Guo Yunhe, Tyson Tan" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "kde-china@kde.org, i@guoyunhe.me, tysontan@tysontan.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "亮度平衡调整" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "柔化" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "锐化" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "清除" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "选区:%1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "浮雕" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "颜色扁平化" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "降为灰色" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "色相、饱和度、明度调整" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "颜色反相" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "颜色反相" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "减少为单色(抖动)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "减少为单色" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "减少为 256 色(抖动)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "减少为 256 色" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "直方图均衡器" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "翻转" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "水平和垂直翻转" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "水平翻转" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "垂直翻转" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "文本:缩放框" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "选择范围:缩放" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "选择范围:平滑缩放 " + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "改变大小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "缩放" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "平滑缩放" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "旋转" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "斜切变形" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "撤销(&U):%1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "撤销(&U)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "重做(&R):%1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "重做(&R)" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "撤销:%1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "撤销" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "重做:%1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "重做" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1:%2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "还有 %1 项" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "拾色器" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "填充" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "更多图像特效 (选区)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "更多图像效果" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "效果(&E):" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "降低色彩位深" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "柔化和锐化" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "图像属性" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "每英寸点数 (DPI) (&P)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "未指定" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "水平:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "垂直:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                            " +msgstr "" +"

                            每英寸点(DPI)定义了图像每英寸(2.54厘米)间包含的可打印像素数量。" +"

                            图像的 DPI 越高,可打印的图像就越小。注意根据您的打印机不同,大于 300 " +"或 600 DPI 的图像可能会让打印机处理高质量输出时不适应。

                            如果您想打印和" +"屏幕显示大小一样的图像,请将图像 DPI 设为和您屏幕所设的一样。

                            如果两者" +"中任一 DPI 未指定,图像会以和您屏幕一致的 DPI 值来打印。

                            不是所" +"有图像格式都支持 DPI 值。如果您保存的格式不支持这些,此值不会被保存。

                            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "图像偏移(&F):" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                            The Offset is the relative position where this image should be " +"placed, compared to other images.

                            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                            " +msgstr "" +"

                            偏移量是此图像与其他图像间的相对位置。

                            不是所有图像格式都" +"支持偏移量特性,如果您保存的格式不支持它,指定的值不会被保存。

                            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "文字段(&T)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "添加行(&A)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "删除行(&D)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "重置(&R)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                            " +msgstr "" +"

                            文字段可提供关于此图像的附加信息。这大致是个可让您自由写入任何" +"文字的注释区域。

                            然而它有自己的格式规范,以使该字段成为原则上能被计算机" +"解析的数据 - 不过很遗憾您不能修改这特定格式。

                            不是全部图像格式都支持" +"文字段。如果您保存的格式不支持它,这些数据不会被保存。

                            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "键" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "值" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "第 %2 行上的文字值 %1 需要一个键。" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "所有文字键必须是唯一的。但第 %2 和第 %3 行上的文字键“%1”相同。" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "无效的文字段" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "尺寸" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "原始:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "预览" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "更新(&U)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "改变大小/缩放" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "作用于(&T):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "整个图像" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "选择范围" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "文本框" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "操作" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                            " +msgstr "" +"
                            • 改变大小:程序会以往图片各个方向创建新区域(用背景色填充)的" +"方式增加其尺寸,或以从各个方向剪切一定区域的方式减小尺寸。
                            • 缩放:图片会以复制像素的方式扩大,或以丢弃像素的方式缩小。
                            • 平滑缩放" +":和缩放类似,区别在于它会混合邻近像素以产生看上去更平滑的图片。
                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "改变大小(&R)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "缩放(&S)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "平滑缩放(&M)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "宽度:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "高度:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "新建(&N):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "百分比(&P):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "保持宽高比(&A)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to resize the text box?

                            " +msgstr "" +"

                            缩放文本框为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响应" +"能力,并导致其他程序出现资源分配问题。

                            您确认要缩放文本框吗?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "缩放文本框?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "缩放文本框(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                            Are you sure you want to resize the image?

                            " +msgstr "" +"

                            更改图像大小为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响" +"应能力,并导致其他程序出现资源分配问题。

                            您确认要更改图像大小吗?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "更改图像大小?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "更改图像大小(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                            Are you sure you want to scale the image?

                            " +msgstr "" +"

                            缩放图像为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响应能" +"力,并导致其他程序出现资源分配问题。

                            您确认要缩放此图像吗?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "缩放图像?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "缩放图像(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to scale the selection?

                            " +msgstr "" +"

                            缩放选区为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响应能" +"力,并导致其他程序出现资源分配问题。

                            您确认要缩放此选区吗?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "缩放选区?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "缩放选区(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to smooth scale the image?" +msgstr "" +"

                            平滑缩放图像为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响" +"应能力,并导致其他程序出现资源分配问题。

                            您确认要平滑缩放此图像吗?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "平滑缩放图像?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "平滑缩放图像(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to smooth scale the selection?" +"

                            " +msgstr "" +"

                            平滑缩放选区为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响" +"应能力,并导致其他程序出现资源分配问题。

                            您确认要平滑缩放此选区吗?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "平滑缩放选区?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "平滑缩放选区(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "旋转选中范围" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "旋转图像" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "旋转后:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "方向" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "逆时针(&N)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "顺时针(&L)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "角度" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 度(&D)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 度(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 度(&G)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "自定义(&U):" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr "度" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to rotate the selection?

                            " +msgstr "" +"

                            旋转选中范围为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响" +"应能力,并导致其他程序出现资源分配问题。

                            您确认要旋转选中范围吗?

                            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "旋转选中范围?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "旋转选区(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                            Are you sure you want to rotate the image?

                            " +msgstr "" +"

                            旋转图像为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响应能" +"力,并导致其他程序出现资源分配问题。

                            您确认要旋转图像吗?

                            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "旋转图像?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "旋转图像(&E)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "斜切变形选区" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "斜切变形图像" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "斜切变形后:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "水平(&H):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "垂直(&V):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to skew the selection?

                            " +msgstr "" +"

                            斜切变形选区为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响" +"应速度,并导致其他程序出现资源分配问题。

                            您确定要对选区进行斜切变形吗?" +"

                            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "斜切变形选区?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "斜切变形选中范围(&E)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                            Are you sure you want to skew the image?

                            " +msgstr "" +"

                            斜切变形图像为 %1x%2 的操作会耗费大量物理内存,期间可能会降低系统的响" +"应速度,并导致其他程序出现资源分配问题。

                            您确定要对图像进行斜切变形吗?" +"

                            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "斜切变形图像?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "斜切变形图像(&E)" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "色彩相似性" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "&RGB 颜色立方体距离" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "精确匹配" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "什么是色彩相似性?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "保存预览" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 字节(大约 %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "不能打开“%1”。" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"不能打开“%1” - 未被支持的图像格式。\n" +"文件也许损坏了。" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "不能保存图像 - 没有足够的信息。" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"URL:%1\n" +"MIME 类型:%2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<空>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "内部错误" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                            The %1 format may not be able to preserve all of the image's " +"color information.

                            Are you sure you want to save in this format?

                            " +msgstr "" +"

                            %1 格式无法保留此图像的所有颜色信息。

                            您确认要以这种格式" +"保存图像吗?

                            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "有损文件格式" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                            Are " +"you sure you want to save at this color depth?

                            " +msgstr "" +"

                            以 %1 位低色深保存图像会导致色彩信息的丢失,所有透明数据都会被去除。

                            您确认要以此色深保存图像吗?

                            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "低色深" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "不能保存图像 - 无法创建临时文件。" + +#: document/kpDocument_Save.cpp:283 +#, kde-format +msgid "Could not save as \"%1\": %2" +msgstr "无法保存为“%1”:%2" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "保存图像时发生错误" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "不能保存图像 - 上传失败。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "删除内部边框(&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "删除内部边框" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "自动裁剪(&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "自动裁剪" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "KolourPaint 无法删除选中范围的内部边框,因为找不到这样的边框。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "无法删除内部边框" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "KolourPaint 无法裁减图像,因为无法定位其边框。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "无法自动裁剪" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "设为图像" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "选中范围:创建" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "KDE 的绘画程序" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "项目创立者" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "首席检阅者" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "扫描支持,透明度通道支持,当前维护者" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "图标" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "输入法支持" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "贡献了图像效果" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 移植" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "KF5 移植" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "感谢许许多多帮助这个程序进步的人。" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "要打开的图像文件,可选" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "列出所有支持读取的图像 MIME 类型" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "视图(&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "图像(&I)" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "色板(&C)" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "主工具栏" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "文字工具栏" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "选区工具右键菜单" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "编辑(&E)" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "缩略图" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "用左键拖曳句柄可缩放图像。" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "更改图像大小:松开所有鼠标键。" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "缩放图像:右击可取消。" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "文字" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "不能打开调色板“%1”。" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"不能打开调色板“%1” - 不支持的格式。\n" +"文件也许损坏了。" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "不能打开 KDE 调色板“%1”。" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "不能另存调色板为“%1”。" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "无标题" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "加载默认色板" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "加载预设色板" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "打开色板(&O)..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "重新加载色板(&D)" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "保存色板(&S)" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "另存色板为(&A)..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "色板:添加一行颜色" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "色板:删除底部一行颜色" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "色块" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"色板“%1”已被修改。\n" +"您想要保存修改吗?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"预设色板“%1”已被修改。\n" +"您想要将它保存为文件吗?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"默认色板已被修改。\n" +"您想要将它保存为文件吗?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "打开色板" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"色板“%1”已被修改。\n" +"重新加载将丢失所有修改过的颜色。\n" +"您确定要重新加载色板吗?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "重新加载(&R)" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"预设色板“%1”已被修改。\n" +"重新加载将丢失所有修改过的颜色。\n" +"您确定要重新加载色板吗?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"默认色板已被修改。\n" +"重新加载将丢失所有修改过的颜色。\n" +"您确定要重新加载色板吗?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "另存色板为" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "在新窗口中粘贴(&N)" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "删除选区(&D)" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "复制到文件(&O)..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "从文件粘贴(&F)..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "文字:创建框" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "文字:粘贴" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "KolourPaint 无法粘贴剪贴板内容,未知格式。" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "无法粘贴" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "文字:删除框" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "选区:删除" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "文字:完成" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "选中范围:取消选中" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "复制到文件" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "从文件粘贴" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "导出(&X)..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "扫描图像..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "捕获屏幕截图" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "图像属性" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "重新加载(&D)" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "所有支持的文件 (%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "打开图像" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "无法打开扫描对话框。" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "扫描失败" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "截图延迟时间" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " 秒" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "无延时" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "隐藏主窗口" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "图像属性" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "图像另存为" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "导出" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"文档“%1”已经修改。\n" +"重新加载将使从上次保存开始的修改丢失。\n" +"您确定吗?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"文档“%1”已经修改。\n" +"重新加载将使从上次保存开始的修改丢失。\n" +"您确定吗?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "打印图像" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"您必须在发送之前保存它。\n" +"您想保存它吗?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "" +"文档“%1”已经修改。\n" +"您想保存它吗?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "改变大小/缩放(&E)..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "设定为图像(裁剪)(&T)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "翻转(上下)(&F)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "镜像(水平)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "旋转(&R)..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "向左旋转(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "向右旋转(&T)" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "斜切变形(&K)..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "降为单色(抖动)(&N)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "降为灰色(&G)" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "颜色反相(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "清除(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "标记为机密" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "更多效果(&M)..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "图像(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "选区(&I)" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "显示路径(&P)" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "绘制时使用抗锯齿平滑" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1x%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 位/像素" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "字体族" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "字体大小" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "粗体" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "斜体" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "下划线" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "删除线" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "上个工具选项(组 #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "下个工具选项(组 #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "上个工具选项(组 #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "下个工具选项(组 #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "绘制实色(&D)" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "绘制相似颜色" + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "工具框" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "显示网格(&G)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "显示缩略图(&H)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "缩放的缩略图模式(&M)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "启用缩略图矩形(&R)" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "缩放(&Z)" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "获取图像" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "无法打开所选扫描仪。" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "画笔" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "使用不同形状和大小的笔刷画图" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "单击可画点,拖曳可画线。" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "彩色橡皮擦" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "将图像的前景色替换为背景色" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "单击或拖曳可擦除前景色的像素。" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "橡皮擦" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "让您擦除错处" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "单击或拖曳即可擦除。" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "松开所有鼠标键。" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "钢笔" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "绘制点和徒手笔划" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "喷枪" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "喷雾涂鸦" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "单击或拖曳可进行喷雾涂鸦。" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1 (%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "右键单击可取消。" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "左键单击可取消。" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1:" + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "从图像中拾取一种颜色" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "单击可拾取颜色。" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "填充图像里的区域" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "单击可填充区域。" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "缩放" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "放大或缩小显示图像" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "左键单击放大,右键单击缩小,左键拖曳缩放到特定区域。" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "曲线" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "绘制曲线" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "拖曳可画出起点和终点。" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "用左键拖曳设定第一个控制点,或单击右键完成操作。" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "用右键拖曳设定第一个控制点,或单击左键完成操作。" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "用左键拖曳设定最后一个控制点,或单击右键完成操作。" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "用右键拖曳设定最后一个控制点,或单击左键完成操作。" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "直线" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "绘制直线" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "拖曳即可进行绘画。" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "多边形" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "绘制多边形" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "拖曳可画出第一条线。" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "用左键拖曳另一条线,或单击右键完成操作。" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "用右键拖曳另一条线,或单击左键完成操作。" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "折线" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "绘制折线" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "椭圆" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "绘制椭圆和圆形" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "矩形" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "绘制矩形和正方形" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "圆角矩形" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "绘制带有圆角的矩形和正方形" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "用左键拖曳可创建选中范围。" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "用左键拖曳可移动选中范围。" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "用左键拖曳可缩放选中范围。" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "选中范围:实色" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "选中范围:透明" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "选中范围:透明色" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "选中范围:透明相似色" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "选区 (椭圆轮廓)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "建立椭圆或圆形轮廓的选区" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "选区 (自由绘制轮廓)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "建立自由轮廓的选区" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "选区 (矩形轮廓)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "建立矩形轮廓的选区" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "选中范围:移动" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1:涂抹" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "插入文字" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "文字:退格" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "文字:删除" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "文字:新行" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "文字:写入" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "用左键拖曳可创建文本框。" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "左键拖曳以移动文本框。" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "文字:移动框" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "左键拖曳以改变文本框大小" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "左键单击以更改光标位置。" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "文字:实色背景" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "文字:透明背景" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "文字:交换颜色" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "文字:前景色" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "文字:背景色" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "文字:字体" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "文字:字体大小" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "文字:粗体" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "文字:斜体" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "文字:下划线" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "文字:删除线" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "无缩放的缩略图模式" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1% - 缩略图" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                            This feature applies " +"to:

                            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                            To configure it, click on the cube.

                            " +msgstr "" +"

                            色彩相似度是不同像素的色彩所应达到的相似程度,以使得操作" +"能够认为是相同的。

                            如果您不是将其设定为精确匹配,通过一种用其他" +"绘图程序的“魔棒”特性的可比较方法,您能够对颤动的图形和照片工作得更有效率。

                            本特性将应用于:

                            • 选中范围:在透明模式中,选中范" +"围中任何与背景颜色相似的颜色将会变成透明。
                            • 填充:对于带" +"有相似 - 但不完全相同的 - 颜色像素的区域,增强设置很可能会填充更多的像" +"素。
                            • 颜色橡皮擦:任何与前景颜色相似的颜色将会以背景颜色" +"替换。
                            • 自动裁剪删除内部边框:对于带有相似 - 但" +"不完全相同的 - 颜色像素的边框,增强设置很可能会裁剪整个边框。

                            增" +"强设置指的是操作使用一种增大过的颜色范围以足够相似来得到相同程度。因" +"此,如果上述操作没有影响到那些您认为足够相似像素,您应该增加设置。

                            然" +"而,如果它们造成了过多的效果并更改了那些您认为颜色不相似的像素(例如,如果" +"填充更改了过多的像素),您应该减少此设置。

                            要进行配置,可在立方体上" +"点击。

                            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                            This feature applies " +"to:

                            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                            " +msgstr "" +"

                            色彩相似度是不同像素的色彩所应达到的相似程度,以使得操作" +"能够认为是相同的。

                            如果您不是将其设定为精确匹配,通过一种用其他" +"绘图程序的“魔棒”特性的可比较方法,您能够对颤动的图形和照片工作得更有效率。

                            本特性将应用于:

                            • 选中范围:在透明模式中,选中范" +"围中任何与背景颜色相似的颜色将会变成透明。
                            • 填充:对于带" +"有相似 - 但不完全相同的 - 颜色像素的区域,增强设置很可能会填充更多的像" +"素。
                            • 颜色橡皮擦:任何与前景颜色相似的颜色将会以背景颜色" +"替换。
                            • 自动裁剪删除内部边框:对于带有相似 - 但" +"不完全相同的 - 颜色像素的边框,增强设置很可能会裁剪整个边框。

                            增" +"强设置指的是操作使用一种增大过的颜色范围以足够相似来得到相同程度。因" +"此,如果上述操作没有影响到那些您认为足够相似像素,您应该增加设置。

                            然" +"而,如果它们造成了过多的效果并更改了那些您认为颜色不相似的像素(例如,如果" +"填充更改了过多的像素),您应该减少此设置。

                            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                            Color Similarity: %1%

                            Click to configure.

                            " +msgstr "

                            色彩相似度:%1%

                            点此配置。

                            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                            Color Similarity: Exact Match

                            Click to configure." +msgstr "

                            色彩相似度:精确匹配

                            点此配置。

                            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "亮度(&B):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "重置(&S)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "对比度(&N):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "伽玛值(&G):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "重置(&T)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "通道(&H):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "全部" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "红" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "绿" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "蓝" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "重置全部值(&A)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "设置" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "总量(&A):" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "启用(&N)" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "颜色" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "色相(&H):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "饱和度(&S):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "明度(&V):" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "红(&R)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "绿(&G)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "蓝(&B)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "全部(&A)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "通道" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "单色(&M)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "单色(抖动)(&N)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 色(&L)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 色(抖动)(&R)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24 位色(&B)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "色彩位深降为" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "粒度(&G)" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                            To change the color of a color cell itself, double-click on it.

                            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                            " +msgstr "" +"

                            要选择绘图工具所用的前景色,请用左键点击一个填充过的颜色格。要选择背景" +"色,则请改用右键点击。

                            要更改颜色格本身,双击它即可。

                            您可以通过" +"拖放操作用任何其他颜色替换格子内的颜色。同时,您若按住 Ctrl 键,目标格" +"内的颜色会被覆盖,而非原本的替换。

                            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "转换到(&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "质量(&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "预览(&P)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "单色" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "单色(抖动)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 色" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 色(抖动)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24 位色" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "图像位置(&M)" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "页面中间(&C)" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "页面左顶端(&L)" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "透明" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "默认颜色" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "色板:%1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "色板:%1 [已修改]" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "圆形" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "方形" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "斜杠" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "反斜杠" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "没有填充" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "以背景色填充" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "以前景色填充" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "实色" diff --git a/po/zh_TW/kolourpaint.po b/po/zh_TW/kolourpaint.po new file mode 100644 index 0000000..b9698a4 --- /dev/null +++ b/po/zh_TW/kolourpaint.po @@ -0,0 +1,2665 @@ +# translation of kolourpaint.po to Chinese Traditional +# translation of kolourpaint4.po to +# +# Frank Weng (a.k.a. Franklin) , 2006, 2007, 2008, 2009. +# Franklin Weng , 2007, 2008. +# Franklin Weng , 2007, 2011, 2012. +# Jeff Huang , 2016, 2017. +msgid "" +msgstr "" +"Project-Id-Version: kolourpaint\n" +"Report-Msgid-Bugs-To: https://bugs.kde.org\n" +"POT-Creation-Date: 2022-07-08 00:44+0000\n" +"PO-Revision-Date: 2017-03-12 20:41+0800\n" +"Last-Translator: Jeff Huang \n" +"Language-Team: Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#, kde-format +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Frank Weng (a.k.a. Franklin), Jeff Huang" + +#, kde-format +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "franklin@goodhorse.idv.tw, s8321414@gmail.com" + +#: commands/imagelib/effects/kpEffectBalanceCommand.cpp:40 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:112 +#, kde-format +msgid "Balance" +msgstr "平衡" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:52 +#, kde-format +msgid "Soften" +msgstr "柔和" + +#: commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp:53 +#, kde-format +msgid "Sharpen" +msgstr "尖銳" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:58 +#, kde-format +msgid "Clear" +msgstr "清除" + +#: commands/imagelib/effects/kpEffectClearCommand.cpp:60 +#: commands/imagelib/effects/kpEffectCommandBase.cpp:66 +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:83 +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:74 +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:77 +#, kde-format +msgid "Selection: %1" +msgstr "選擇:%1" + +#: commands/imagelib/effects/kpEffectEmbossCommand.cpp:42 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:113 +#, kde-format +msgid "Emboss" +msgstr "裝飾" + +#: commands/imagelib/effects/kpEffectFlattenCommand.cpp:43 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:114 +#, kde-format +msgid "Flatten" +msgstr "平面化" + +#: commands/imagelib/effects/kpEffectGrayscaleCommand.cpp:41 +#, kde-format +msgid "Reduce to Grayscale" +msgstr "降為灰階" + +#: commands/imagelib/effects/kpEffectHSVCommand.cpp:37 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:116 +#, kde-format +msgid "Hue, Saturation, Value" +msgstr "色調,飽和度,值" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#, kde-format +msgid "Invert Colors" +msgstr "反轉顏色" + +#: commands/imagelib/effects/kpEffectInvertCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:117 +#, kde-format +msgid "Invert" +msgstr "反轉" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:54 +#, kde-format +msgid "Reduce to Monochrome (Dithered)" +msgstr "降為單色(抖色後)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:56 +#, kde-format +msgid "Reduce to Monochrome" +msgstr "降為單色" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:60 +#, kde-format +msgid "Reduce to 256 Color (Dithered)" +msgstr "降到 256 色(抖色後)" + +#: commands/imagelib/effects/kpEffectReduceColorsCommand.cpp:62 +#, kde-format +msgid "Reduce to 256 Color" +msgstr "降為 256 色" + +#: commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp:41 +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:115 +#, kde-format +msgid "Histogram Equalizer" +msgstr "直方等化器" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:66 +#, kde-format +msgid "Flip" +msgstr "反轉" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:69 +#, kde-format +msgid "Flip horizontally and vertically" +msgstr "水平與垂直反轉" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:71 +#, kde-format +msgid "Flip horizontally" +msgstr "水平反轉" + +#: commands/imagelib/transforms/kpTransformFlipCommand.cpp:73 +#, kde-format +msgid "Flip vertically" +msgstr "垂直反轉" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:101 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:54 +#, kde-format +msgid "Text: Resize Box" +msgstr "文字:改變文字盒大小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:107 +#, kde-format +msgid "Selection: Scale" +msgstr "選擇區域:調整大小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:111 +#: commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp:55 +#, kde-format +msgid "Selection: Smooth Scale" +msgstr "選擇區域:平滑調整大小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:120 +#, kde-format +msgid "Resize" +msgstr "改變大小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:122 +#, kde-format +msgid "Scale" +msgstr "調整大小" + +#: commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp:124 +#, kde-format +msgid "Smooth Scale" +msgstr "平滑調整大小" + +#: commands/imagelib/transforms/kpTransformRotateCommand.cpp:72 +#, kde-format +msgid "Rotate" +msgstr "旋轉" + +#: commands/imagelib/transforms/kpTransformSkewCommand.cpp:75 +#, kde-format +msgid "Skew" +msgstr "扭曲" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo: %1" +msgstr "復原(&U):%1" + +#: commands/kpCommandHistoryBase.cpp:437 +#, kde-format +msgid "&Undo" +msgstr "復原(&U)" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo: %1" +msgstr "重做(&R):%1" + +#: commands/kpCommandHistoryBase.cpp:445 +#, kde-format +msgid "&Redo" +msgstr "重做(&R)" + +#: commands/kpCommandHistoryBase.cpp:454 +#, kde-format +msgid "Undo: %1" +msgstr "復原:%1" + +#: commands/kpCommandHistoryBase.cpp:454 commands/kpCommandHistoryBase.cpp:635 +#, kde-format +msgid "Undo" +msgstr "復原" + +#: commands/kpCommandHistoryBase.cpp:462 +#, kde-format +msgid "Redo: %1" +msgstr "重做:%1" + +#: commands/kpCommandHistoryBase.cpp:462 commands/kpCommandHistoryBase.cpp:656 +#, kde-format +msgid "Redo" +msgstr "重做" + +#: commands/kpCommandHistoryBase.cpp:597 +#, kde-format +msgid "%1: %2" +msgstr "%1:%2" + +#: commands/kpCommandHistoryBase.cpp:608 +#, kde-format +msgid "%1 more item" +msgid_plural "%1 more items" +msgstr[0] "還有 %1 個項目" + +#: commands/tools/kpToolColorPickerCommand.cpp:59 +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Color Picker" +msgstr "顏色挑選器" + +#: commands/tools/kpToolFloodFillCommand.cpp:77 tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Flood Fill" +msgstr "填滿顏色" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects (Selection)" +msgstr "更多影像效果(選擇區域)" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "More Image Effects" +msgstr "更多影像效果" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:106 +#, kde-format +msgid "&Effect:" +msgstr "效果(&E):" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:118 +#, kde-format +msgid "Reduce Colors" +msgstr "降低顏色" + +#: dialogs/imagelib/effects/kpEffectsDialog.cpp:119 +#, kde-format +msgid "Soften & Sharpen" +msgstr "柔和與尖銳" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:121 +#, kde-format +msgctxt "@title:window" +msgid "Document Properties" +msgstr "文件屬性" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:141 +#, kde-format +msgid "Dots &Per Inch (DPI)" +msgstr "每英吋點數(DPI)(&P)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:148 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:159 +#, kde-format +msgid "Unspecified" +msgstr "未指定" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:151 +#, kde-format +msgctxt "Horizontal DPI 'x' Vertical DPI" +msgid " x " +msgstr " x " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:164 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:215 +#, kde-format +msgid "Horizontal:" +msgstr "水平:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:167 +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:217 +#, kde-format +msgid "Vertical:" +msgstr "垂直:" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:175 +#, kde-format +msgid "" +"

                            Dots Per Inch (DPI) specifies the number of pixels of the " +"image that should be printed inside one inch (2.54cm).

                            The higher the " +"image's DPI, the smaller the printed image. Note that your printer is " +"unlikely to produce high quality prints if you increase this to more than " +"300 or 600 DPI, depending on the printer.

                            If you would like to print " +"the image so that it is the same size as it is displayed on the screen, set " +"the image's DPI values to be the same as the screen's.

                            If either DPI " +"value is Unspecified, the image will also be printed to be the same " +"size as on the screen.

                            Not all image formats support DPI values. If " +"the format you save in does not support them, they will not be saved.

                            " +msgstr "" +"

                            每英吋點數(DPI)指定在一英吋(2.54 公分)內要有多少個像素點。" +"

                            點數越高,印出來的影像就越小。注意若是您將 DPI 設為超過 300 或 600 " +"DPI,您的印表機可能無法產生高品質的輸出,視印表機而定。

                            若是您想印出跟" +"螢幕上大小一樣的影像,將此 DPI 值設成跟螢幕一樣即可。

                            若是未指定 DPI," +"預設會使用跟螢幕一樣的值。

                            並非所有的影像格式都支援 DPI,若是不支援,則" +"此值不會被儲存。

                            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:205 +#, kde-format +msgid "O&ffset" +msgstr "偏移(&F)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:225 +#, kde-format +msgid "" +"

                            The Offset is the relative position where this image should be " +"placed, compared to other images.

                            Not all image formats support the " +"Offset feature. If the format you save in does not support it, the " +"values specified here will not be saved.

                            " +msgstr "" +"

                            偏移是指影像要擺放的位置,相對於其他影像而言。

                            並非所有的" +"影像都支援「偏移」設定,若是不支援,則此值不會被儲存。

                            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:241 +#, kde-format +msgid "&Text Fields" +msgstr "文字欄位(&T)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:253 +#, kde-format +msgid "&Add Row" +msgstr "新增列(&A)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:258 +#, kde-format +msgid "&Delete Row" +msgstr "刪除列(&D)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:263 +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:69 +#, kde-format +msgid "&Reset" +msgstr "重置(&R)" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:282 +#, kde-format +msgid "" +"

                            Text Fields provide extra information about the image. This is " +"probably a comment area that you can freely write any text in.

                            However, this is format-specific so the fields could theoretically be " +"computer-interpreted data - that you should not modify - but this is " +"unlikely.

                            Not all image formats support Text Fields. If the " +"format you save in does not support them, they will not be saved.

                            " +msgstr "" +"

                            文字欄位提供關於影像的額外資訊。您可以自由寫入您對此影像的註" +"解。

                            不過,依據格式設計,此欄位理論上應該是電腦解譯的資料,不應該去更" +"動。只是現在很少這樣用。

                            並非所有的格式都支援「文字欄位」設定。若是不支" +"援,則此值不會被儲存。

                            " + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Key" +msgstr "鍵" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:372 +#, kde-format +msgid "Value" +msgstr "值" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:466 +#, kde-format +msgid "The text value \"%1\" on line %2 requires a key." +msgstr "第 %2 行的文字 %1 需要鍵值。" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:493 +#, kde-format +msgid "" +"All text keys must be unique. The text key \"%1\" on lines %2 and %3 are " +"identical." +msgstr "所有的文字鍵值都要唯一。第 %2 行與第 %3 行的文字鍵值 %1 重覆了。" + +#: dialogs/imagelib/kpDocumentMetaInfoDialog.cpp:746 +#, kde-format +msgctxt "@title:window" +msgid "Invalid Text Fields" +msgstr "不合法的文字欄位" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:139 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:283 +#, kde-format +msgid "Dimensions" +msgstr "尺寸" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:141 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:290 +#, kde-format +msgid "Original:" +msgstr "原始:" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:145 +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:253 +#: mainWindow/kpMainWindow_StatusBar.cpp:92 +#: mainWindow/kpMainWindow_StatusBar.cpp:236 +#, kde-format +msgid "%1 x %2" +msgstr "%1 x %2" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:172 +#: dialogs/kpColorSimilarityDialog.cpp:59 +#, kde-format +msgid "Preview" +msgstr "預覽" + +#: dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp:179 +#: dialogs/kpColorSimilarityDialog.cpp:64 +#, kde-format +msgid "&Update" +msgstr "更新(&U)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:92 +#, kde-format +msgctxt "@title:window" +msgid "Resize / Scale" +msgstr "改變/調整大小" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:161 +#, kde-format +msgid "Ac&t on:" +msgstr "作用於(&T):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:167 +#, kde-format +msgid "Entire Image" +msgstr "整個影像" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:170 +#: layers/selections/image/kpAbstractImageSelection.cpp:204 +#, kde-format +msgid "Selection" +msgstr "選擇" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:173 +#, kde-format +msgid "Text Box" +msgstr "文字盒" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:222 +#, kde-format +msgid "Operation" +msgstr "運作" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:224 +#, kde-format +msgid "" +"
                            • Resize: The size of the picture will be increased by " +"creating new areas to the right and/or bottom (filled in with the background " +"color) or decreased by cutting it at the right and/or bottom.
                            • Scale: The picture will be expanded by duplicating pixels or " +"squashed by dropping pixels.
                            • Smooth Scale: This is the same " +"as Scale except that it blends neighboring pixels to produce a " +"smoother looking picture.
                            " +msgstr "" +"
                            • 改變大小:圖片變大的話,會在右方與下方產生新的區域,並填" +"滿背景顏色。若圖片變小,則會將右方與下方的區域切掉。
                            • 調整大小:圖片會以複製像素的方式變大,或是以丟棄像素的方式變小。
                            • 平滑調" +"整大小:跟「調整大小」一樣,不過會將鄰近的像素混合,以產生較順眼的圖片。" +"
                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:245 +#, kde-format +msgid "&Resize" +msgstr "改變大小(&R)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:250 +#, kde-format +msgid "&Scale" +msgstr "調整大小(&S)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:255 +#, kde-format +msgid "S&mooth Scale" +msgstr "平滑調整大小(&M)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:285 +#, kde-format +msgid "Width:" +msgstr "寬度:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:287 +#, kde-format +msgid "Height:" +msgstr "高度:" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:294 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:302 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:314 +#, kde-format +msgid "x" +msgstr "x" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:299 +#, kde-format +msgid "&New:" +msgstr "新增(&N):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:306 +#, kde-format +msgid "&Percent:" +msgstr "百分比(&P):" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:312 +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:321 +#: dialogs/kpColorSimilarityDialog.cpp:82 +#, kde-format +msgid "%" +msgstr "%" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:323 +#, kde-format +msgid "Keep &aspect ratio" +msgstr "保持長寬比例(&A)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:726 +#, kde-format +msgid "" +"

                            Resizing the text box to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to resize the text box?

                            " +msgstr "" +"

                            改變文字盒大小到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統效能" +"降低,並造成其他應用程式資源的問題。

                            您確定要調整文字盒大小嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:734 +#, kde-format +msgctxt "@title:window" +msgid "Resize Text Box?" +msgstr "改變文字盒大小?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:735 +#, kde-format +msgid "R&esize Text Box" +msgstr "改變文字盒大小(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:740 +#: mainWindow/kpMainWindow_Tools.cpp:654 +#, kde-format +msgid "" +"

                            Resizing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                            Are you sure you want to resize the image?

                            " +msgstr "" +"

                            改變影像大小到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統效能降" +"低,並造成其他應用程式資源的問題。

                            您確定要改變影像大小嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:748 +#: mainWindow/kpMainWindow_Tools.cpp:664 +#, kde-format +msgctxt "@title:window" +msgid "Resize Image?" +msgstr "改變影像大小?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:749 +#: mainWindow/kpMainWindow_Tools.cpp:665 +#, kde-format +msgid "R&esize Image" +msgstr "改變影像大小(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:758 +#, kde-format +msgid "" +"

                            Scaling the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                            Are you sure you want to scale the image?

                            " +msgstr "" +"

                            調整影像大小到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統效能降" +"低,並造成其他應用程式資源的問題。

                            您確定要調整影像大小嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:766 +#, kde-format +msgctxt "@title:window" +msgid "Scale Image?" +msgstr "調整影像大小?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:767 +#, kde-format +msgid "Scal&e Image" +msgstr "調整影像大小(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:772 +#, kde-format +msgid "" +"

                            Scaling the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to scale the selection?

                            " +msgstr "" +"

                            調整選擇區域的大小到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統" +"效能降低,並造成其他應用程式資源的問題。

                            您確定要調整選擇區域的大小" +"嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:780 +#, kde-format +msgctxt "@title:window" +msgid "Scale Selection?" +msgstr "調整選擇區域的大小?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:781 +#, kde-format +msgid "Scal&e Selection" +msgstr "調整選擇區域的大小(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:790 +#, kde-format +msgid "" +"

                            Smooth Scaling the image to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to smooth scale the image?" +msgstr "" +"

                            平滑調整影像大小到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統效" +"能降低,並造成其他應用程式資源的問題。

                            您確定要平滑調整影像大小嗎?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:798 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Image?" +msgstr "平滑調整影像大小?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:799 +#, kde-format +msgid "Smooth Scal&e Image" +msgstr "平滑調整影像大小(&E)" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:804 +#, kde-format +msgid "" +"

                            Smooth Scaling the selection to %1x%2 may take a substantial amount " +"of memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to smooth scale the selection?" +"

                            " +msgstr "" +"

                            平滑調整選擇區域的大小到 %1 x %2 會用到相當可觀的記憶體。這可能會造成" +"系統效能降低,並造成其他應用程式資源的問題。

                            您確定要平滑調整選擇區域" +"的大小嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:812 +#, kde-format +msgctxt "@title:window" +msgid "Smooth Scale Selection?" +msgstr "平滑調整選擇區域大小?" + +#: dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp:813 +#, kde-format +msgid "Smooth Scal&e Selection" +msgstr "平滑調整選擇區域大小(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection" +msgstr "旋轉選擇的區域" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image" +msgstr "旋轉影像" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:68 +#, kde-format +msgid "After rotate:" +msgstr "旋轉後:" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:98 +#, kde-format +msgid "Direction" +msgstr "方向" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:124 +#, kde-format +msgid "Cou&nterclockwise" +msgstr "逆時針(&N)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:125 +#, kde-format +msgid "C&lockwise" +msgstr "順時針(&L)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:149 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:100 +#, kde-format +msgid "Angle" +msgstr "角度" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:153 +#, kde-format +msgid "90 °rees" +msgstr "90 度(&D)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:154 +#, kde-format +msgid "180 d&egrees" +msgstr "180 度(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:155 +#, kde-format +msgid "270 de&grees" +msgstr "270 度(&G)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:157 +#, kde-format +msgid "C&ustom:" +msgstr "自訂(&U):" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:162 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:113 +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:125 +#, kde-format +msgid "degrees" +msgstr " 度" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:293 +#, kde-format +msgid "" +"

                            Rotating the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to rotate the selection?

                            " +msgstr "" +"

                            旋轉選擇的區域到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統效能" +"降低,並造成其他應用程式資源的問題。

                            您確定要旋轉選擇的區域嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:301 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Selection?" +msgstr "旋轉選擇的區域?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:302 +#, kde-format +msgid "Rotat&e Selection" +msgstr "旋轉選擇的區域(&E)" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:308 +#, kde-format +msgid "" +"

                            Rotating the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                            Are you sure you want to rotate the image?

                            " +msgstr "" +"

                            旋轉影像到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統效能降低," +"並造成其他應用程式資源的問題。

                            您確定要旋轉影像嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:316 +#, kde-format +msgctxt "@title:window" +msgid "Rotate Image?" +msgstr "旋轉影像?" + +#: dialogs/imagelib/transforms/kpTransformRotateDialog.cpp:317 +#, kde-format +msgid "Rotat&e Image" +msgstr "旋轉影像(&E)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection" +msgstr "扭曲選擇的區域" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:67 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image" +msgstr "扭曲影像" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:68 +#, kde-format +msgid "After skew:" +msgstr "扭曲後:" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:107 +#, kde-format +msgid "&Horizontal:" +msgstr "水平(&H):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:119 +#, kde-format +msgid "&Vertical:" +msgstr "垂直(&V):" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:254 +#, kde-format +msgid "" +"

                            Skewing the selection to %1x%2 may take a substantial amount of " +"memory. This can reduce system responsiveness and cause other application " +"resource problems.

                            Are you sure you want to skew the selection?

                            " +msgstr "" +"

                            扭曲選擇的區域到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統效能" +"降低,並造成其他應用程式資源的問題。

                            您確定要扭曲選擇的區域嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:262 +#, kde-format +msgctxt "@title:window" +msgid "Skew Selection?" +msgstr "扭曲選擇的區域?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:263 +#, kde-format +msgid "Sk&ew Selection" +msgstr "扭曲選擇的區域(&E)" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:269 +#, kde-format +msgid "" +"

                            Skewing the image to %1x%2 may take a substantial amount of memory. " +"This can reduce system responsiveness and cause other application resource " +"problems.

                            Are you sure you want to skew the image?

                            " +msgstr "" +"

                            扭曲影像到 %1 x %2 會用到相當可觀的記憶體。這可能會造成系統效能降低," +"並造成其他應用程式資源的問題。

                            您確定要扭曲影像嗎?

                            " + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:277 +#, kde-format +msgctxt "@title:window" +msgid "Skew Image?" +msgstr "扭曲影像?" + +#: dialogs/imagelib/transforms/kpTransformSkewDialog.cpp:278 +#, kde-format +msgid "Sk&ew Image" +msgstr "扭曲影像(&E)" + +#: dialogs/kpColorSimilarityDialog.cpp:47 +#, kde-format +msgctxt "@title:window" +msgid "Color Similarity" +msgstr "顏色相似度" + +#: dialogs/kpColorSimilarityDialog.cpp:76 +#, kde-format +msgid "&RGB Color Cube Distance" +msgstr "RGB 顏色立方體距離(&R)" + +#: dialogs/kpColorSimilarityDialog.cpp:83 +#, kde-format +msgid "Exact Match" +msgstr "完全符合" + +#: dialogs/kpColorSimilarityDialog.cpp:88 +#, kde-format +msgid "What is Color Similarity?" +msgstr "什麼是顏色相似度?" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:61 +#, kde-format +msgctxt "@title:window" +msgid "Save Preview" +msgstr "儲存預覽" + +#: dialogs/kpDocumentSaveOptionsPreviewDialog.cpp:129 +#, kde-format +msgid "1 byte (approx. %2%)" +msgid_plural "%1 bytes (approx. %2%)" +msgstr[0] "%1 位元組(約 %2%)" + +#: document/kpDocument_Open.cpp:114 +#, kde-format +msgid "Could not open \"%1\"." +msgstr "無法開啟 %1。" + +#: document/kpDocument_Open.cpp:150 +#, kde-format +msgid "" +"Could not open \"%1\" - unsupported image format.\n" +"The file may be corrupt." +msgstr "" +"無法開啟 %1 - 不支援的影像格式。\n" +"此檔案可能已損毀。" + +#: document/kpDocument_Save.cpp:82 +#, kde-format +msgid "Could not save image - insufficient information." +msgstr "無法儲存影像 - 資訊不足。" + +#: document/kpDocument_Save.cpp:83 +#, kde-format +msgid "" +"URL: %1\n" +"Mimetype: %2" +msgstr "" +"網址:%1\n" +"MIME 型態:%2" + +#: document/kpDocument_Save.cpp:87 +#, kde-format +msgid "" +msgstr "<空>" + +#: document/kpDocument_Save.cpp:89 +#, kde-format +msgctxt "@title:window" +msgid "Internal Error" +msgstr "內部錯誤" + +#: document/kpDocument_Save.cpp:124 +#, kde-format +msgid "" +"

                            The %1 format may not be able to preserve all of the image's " +"color information.

                            Are you sure you want to save in this format?

                            " +msgstr "" +"

                            格式 %1 可能無法保留影像中所有的顏色資訊。

                            您確定要用這" +"個格式儲存嗎?

                            " + +#: document/kpDocument_Save.cpp:131 +#, kde-format +msgctxt "@title:window" +msgid "Lossy File Format" +msgstr "檔案格式會造成資料流失" + +#: document/kpDocument_Save.cpp:140 +#, kde-format +msgid "" +"

                            Saving the image at the low color depth of %1-bit may result in the " +"loss of color information. Any transparency might also be removed.

                            Are " +"you sure you want to save at this color depth?

                            " +msgstr "" +"

                            將影像儲存在較低位元深度(%1 位元)會導至顏色資訊流失。透明度資料也會" +"被移除。

                            您確定要以此位元深度儲存嗎?

                            " + +#: document/kpDocument_Save.cpp:150 +#, kde-format +msgctxt "@title:window" +msgid "Low Color Depth" +msgstr "位元深度過低" + +#: document/kpDocument_Save.cpp:275 +#, kde-format +msgid "Could not save image - unable to create temporary file." +msgstr "無法儲存影像 - 無法建立暫存檔。" + +#: document/kpDocument_Save.cpp:283 +#, fuzzy, kde-format +#| msgid "Could not save as \"%1\"." +msgid "Could not save as \"%1\": %2" +msgstr "無法儲存為 %1。" + +#: document/kpDocument_Save.cpp:355 document/kpDocument_Save.cpp:398 +#, kde-format +msgid "Error saving image" +msgstr "" + +#: document/kpDocument_Save.cpp:433 +#, kde-format +msgid "Could not save image - failed to upload." +msgstr "無法儲存影像 - 上傳失敗。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:384 +#, kde-format +msgid "Remove Internal B&order" +msgstr "移除內部邊界(&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:387 +#, kde-format +msgid "Remove Internal Border" +msgstr "移除內部邊界" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:391 +#, kde-format +msgid "Autocr&op" +msgstr "自動切割(&O)" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:393 +#, kde-format +msgid "Autocrop" +msgstr "自動切割" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:623 +#, kde-format +msgid "" +"KolourPaint cannot remove the selection's internal border as it could not be " +"located." +msgstr "KolourPaint 無法移除所選擇區域的內部邊框,因為無法定位。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:625 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Remove Internal Border" +msgstr "無法移除內部邊框" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:631 +#, kde-format +msgid "" +"KolourPaint cannot automatically crop the image as its border could not be " +"located." +msgstr "KolourPaint 無法自動切割影像,因為邊框無法定位。" + +#: imagelib/transforms/kpTransformAutoCrop.cpp:633 +#, kde-format +msgctxt "@title:window" +msgid "Cannot Autocrop" +msgstr "無法自動切割" + +#: imagelib/transforms/kpTransformCrop.cpp:69 +#: imagelib/transforms/kpTransformCrop.cpp:72 +#, kde-format +msgid "Set as Image" +msgstr "設定為影像" + +#: imagelib/transforms/kpTransformCrop_ImageSelection.cpp:251 +#: mainWindow/kpMainWindow_Edit.cpp:365 mainWindow/kpMainWindow_Image.cpp:320 +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:74 +#, kde-format +msgid "Selection: Create" +msgstr "選擇區域:建立" + +#: kolourpaint.cpp:51 +#, kde-format +msgid "KolourPaint" +msgstr "KolourPaint" + +#: kolourpaint.cpp:53 +#, kde-format +msgid "Paint Program by KDE" +msgstr "KDE 的繪圖程式" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Clarence Dang" +msgstr "Clarence Dang" + +#: kolourpaint.cpp:67 +#, kde-format +msgid "Project Founder" +msgstr "專案發起者" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Thurston Dang" +msgstr "Thurston Dang" + +#: kolourpaint.cpp:69 +#, kde-format +msgid "Chief Investigator" +msgstr "主要審查者" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Martin Koller" +msgstr "Martin Koller" + +#: kolourpaint.cpp:72 +#, kde-format +msgid "Scanning Support, Alpha Support, Current Maintainer" +msgstr "掃描支援,Alpha 支援,目前維護者" + +#: kolourpaint.cpp:75 +#, kde-format +msgid "Kristof Borrey" +msgstr "Kristof Borrey" + +#: kolourpaint.cpp:75 kolourpaint.cpp:78 kolourpaint.cpp:79 +#, kde-format +msgid "Icons" +msgstr "圖示" + +#: kolourpaint.cpp:76 +#, kde-format +msgid "Tasuku Suzuki" +msgstr "Tasuku Suzuki" + +#: kolourpaint.cpp:76 kolourpaint.cpp:77 +#, kde-format +msgid "InputMethod Support" +msgstr "輸入法支援" + +#: kolourpaint.cpp:77 +#, kde-format +msgid "Kazuki Ohta" +msgstr "Kazuki Ohta" + +#: kolourpaint.cpp:78 +#, kde-format +msgid "Nuno Pinheiro" +msgstr "Nuno Pinheiro" + +#: kolourpaint.cpp:79 +#, kde-format +msgid "Danny Allen" +msgstr "Danny Allen" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Mike Gashler" +msgstr "Mike Gashler" + +#: kolourpaint.cpp:80 +#, kde-format +msgid "Image Effects" +msgstr "影像效果" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "Laurent Montel" +msgstr "Laurent Montel" + +#: kolourpaint.cpp:82 +#, kde-format +msgid "KDE 4 Porting" +msgstr "KDE 4 移植" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "Christoph Feck" +msgstr "Christoph Feck" + +#: kolourpaint.cpp:83 +#, kde-format +msgid "KF 5 Porting" +msgstr "移植到 KF5" + +#: kolourpaint.cpp:85 +#, kde-format +msgid "" +"Thanks to the many others who have helped to make this program possible." +msgstr "感謝許多人讓這個軟體成真。" + +#: kolourpaint.cpp:90 +#, kde-format +msgid "Image files to open, optionally" +msgstr "要開啟的影像檔,選擇性" + +#: kolourpaint.cpp:93 +#, kde-format +msgid "List all readable image MIME types" +msgstr "" + +#. i18n: ectx: Menu (view) +#: kolourpaintui.rc:36 +#, kde-format +msgid "&View" +msgstr "檢視(&V)" + +#. i18n: ectx: Menu (image) +#: kolourpaintui.rc:71 kolourpaintui.rc:207 +#, kde-format +msgid "&Image" +msgstr "影像(&I)" + +#. i18n: ectx: Menu (colors) +#: kolourpaintui.rc:99 +#, kde-format +msgid "&Colors" +msgstr "顏色(&C)" + +#. i18n: ectx: ToolBar (mainToolBar) +#: kolourpaintui.rc:147 +#, kde-format +msgid "Main Toolbar" +msgstr "主工具列" + +#. i18n: ectx: ToolBar (textToolBar) +#: kolourpaintui.rc:162 +#, kde-format +msgid "Text Toolbar" +msgstr "文字工具列" + +#. i18n: ectx: Menu (selectionToolRMBMenu) +#: kolourpaintui.rc:172 +#, kde-format +msgid "Selection Tool RMB Menu" +msgstr "選擇工具 RMB 選單" + +#. i18n: ectx: Menu (edit) +#: kolourpaintui.rc:174 +#, kde-format +msgid "&Edit" +msgstr "編輯(&E)" + +#: kpThumbnail.cpp:129 +#, kde-format +msgctxt "@title:window" +msgid "Thumbnail" +msgstr "縮圖" + +#: kpViewScrollableContainer.cpp:157 kpViewScrollableContainer.cpp:869 +#: kpViewScrollableContainer.cpp:873 kpViewScrollableContainer.cpp:877 +#, kde-format +msgid "Left drag the handle to resize the image." +msgstr "拖曳左邊框來改變影像大小。" + +#: kpViewScrollableContainer.cpp:196 +#, kde-format +msgid "Resize Image: Let go of all the mouse buttons." +msgstr "改變影像大小:放開所有滑鼠按鍵。" + +#: kpViewScrollableContainer.cpp:228 +#, kde-format +msgid "Resize Image: Right click to cancel." +msgstr "改變影像大小:點右鍵以取消。" + +#: layers/selections/text/kpTextSelection.cpp:136 +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Text" +msgstr "文字" + +#: lgpl/generic/kpColorCollection.cpp:121 +#, kde-format +msgid "Could not open color palette \"%1\"." +msgstr "無法開啟調色盤 %1。" + +#: lgpl/generic/kpColorCollection.cpp:154 +#, kde-format +msgid "" +"Could not open color palette \"%1\" - unsupported format.\n" +"The file may be corrupt." +msgstr "" +"無法開啟調色盤 %1 - 不支援的格式。\n" +"此檔案可能已損毀。" + +#: lgpl/generic/kpColorCollection.cpp:214 +#, kde-format +msgid "Could not open KDE color palette \"%1\"." +msgstr "無法開啟 KDE 調色盤 %1。" + +#: lgpl/generic/kpColorCollection.cpp:264 +#, kde-format +msgid "Could not save color palette as \"%1\"." +msgstr "無法儲存調色盤為 %1。" + +#: lgpl/generic/kpUrlFormatter.cpp:41 lgpl/generic/kpUrlFormatter.cpp:54 +#: widgets/toolbars/kpColorToolBar.cpp:283 +#, kde-format +msgid "Untitled" +msgstr "未命名" + +#: mainWindow/kpMainWindow_Colors.cpp:61 +#, kde-format +msgid "Use KolourPaint Defaults" +msgstr "使用 KolourPaint 預設值" + +#: mainWindow/kpMainWindow_Colors.cpp:66 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Use KDE's" +msgstr "使用 KDE 的值" + +#: mainWindow/kpMainWindow_Colors.cpp:78 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Open..." +msgstr "開啟(&O)..." + +#: mainWindow/kpMainWindow_Colors.cpp:82 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Reloa&d" +msgstr "重新載入(&D)" + +#: mainWindow/kpMainWindow_Colors.cpp:87 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "&Save" +msgstr "儲存(&S)" + +#: mainWindow/kpMainWindow_Colors.cpp:92 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Save &As..." +msgstr "另存新檔(&A)..." + +#: mainWindow/kpMainWindow_Colors.cpp:97 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Add Row" +msgstr "新增列" + +#: mainWindow/kpMainWindow_Colors.cpp:102 +#, kde-format +msgctxt "@item:inmenu colors" +msgid "Delete Last Row" +msgstr "刪除最後列" + +#: mainWindow/kpMainWindow_Colors.cpp:115 +#, kde-format +msgid "Color Box" +msgstr "顏色盒" + +#: mainWindow/kpMainWindow_Colors.cpp:200 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "調色盤 %1 已變更。您要儲存嗎?" + +#: mainWindow/kpMainWindow_Colors.cpp:212 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"KDE 調色盤 %1 已變更。\n" +"您要儲存到檔案嗎?" + +#: mainWindow/kpMainWindow_Colors.cpp:221 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Do you want to save it to a file?" +msgstr "" +"預設調色盤已變更。\n" +"您要儲存到檔案嗎?" + +#: mainWindow/kpMainWindow_Colors.cpp:340 +#, kde-format +msgctxt "@title:window" +msgid "Open Color Palette" +msgstr "開啟調色盤" + +#: mainWindow/kpMainWindow_Colors.cpp:369 +#, kde-format +msgid "" +"The color palette \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"調色盤 %1 已變更。\n" +"重新載入會遺失所有尚未儲存的變更。\n" +"您確定要重新載入嗎?" + +#: mainWindow/kpMainWindow_Colors.cpp:374 +#: mainWindow/kpMainWindow_Colors.cpp:387 +#: mainWindow/kpMainWindow_Colors.cpp:396 mainWindow/kpMainWindow_File.cpp:1077 +#: mainWindow/kpMainWindow_File.cpp:1087 +#, kde-format +msgid "&Reload" +msgstr "重新載入(&R)" + +#: mainWindow/kpMainWindow_Colors.cpp:382 +#, kde-format +msgid "" +"The KDE color palette \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"KDE 調色盤 %1 已變更。\n" +"重新載入會遺失所有變更。\n" +"您確定要重新載入嗎?" + +#: mainWindow/kpMainWindow_Colors.cpp:392 +#, kde-format +msgid "" +"The default color palette has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"預設調色盤已變更。\n" +"重新載入會遺失所有變更。\n" +"您確定要重新載入嗎?" + +#: mainWindow/kpMainWindow_Colors.cpp:453 +#, kde-format +msgid "Save Color Palette As" +msgstr "另存調色盤" + +#: mainWindow/kpMainWindow_Edit.cpp:96 +#, kde-format +msgid "Paste in &New Window" +msgstr "貼在新視窗(&N)" + +#: mainWindow/kpMainWindow_Edit.cpp:103 +#, kde-format +msgid "&Delete Selection" +msgstr "刪除選擇的區域(&D)" + +#: mainWindow/kpMainWindow_Edit.cpp:111 +#, kde-format +msgid "C&opy to File..." +msgstr "複製到檔案(&O)..." + +#: mainWindow/kpMainWindow_Edit.cpp:115 +#, kde-format +msgid "Paste &From File..." +msgstr "從檔案貼上(&F)..." + +#: mainWindow/kpMainWindow_Edit.cpp:364 mainWindow/kpMainWindow_Edit.cpp:438 +#: mainWindow/kpMainWindow_Image.cpp:323 tools/selection/text/kpToolText.cpp:89 +#, kde-format +msgid "Text: Create Box" +msgstr "文字:建立文字盒" + +#: mainWindow/kpMainWindow_Edit.cpp:444 +#, kde-format +msgid "Text: Paste" +msgstr "文字:貼上" + +#: mainWindow/kpMainWindow_Edit.cpp:610 +#, kde-format +msgid "" +"KolourPaint cannot paste the contents of the clipboard as it has an " +"unknown format." +msgstr "KolourPaint 無法貼上剪貼簿中的內容,因為內容為未知的格式。" + +#: mainWindow/kpMainWindow_Edit.cpp:612 +#, kde-format +msgid "Cannot Paste" +msgstr "無法貼上" + +#: mainWindow/kpMainWindow_Edit.cpp:691 +#, kde-format +msgid "Text: Delete Box" +msgstr "文字:刪除文字盒" + +#. i18n ("Text: Delete") +#: mainWindow/kpMainWindow_Edit.cpp:692 +#, kde-format +msgid "Selection: Delete" +msgstr "選擇區域:刪除" + +#: mainWindow/kpMainWindow_Edit.cpp:766 +#, kde-format +msgid "Text: Finish" +msgstr "文字:完成" + +#: mainWindow/kpMainWindow_Edit.cpp:767 +#, kde-format +msgid "Selection: Deselect" +msgstr "選擇區域:取消選擇" + +#: mainWindow/kpMainWindow_Edit.cpp:851 +#, kde-format +msgctxt "@title:window" +msgid "Copy to File" +msgstr "複製到檔案" + +#: mainWindow/kpMainWindow_Edit.cpp:898 +#, kde-format +msgctxt "@title:window" +msgid "Paste From File" +msgstr "由檔案貼上" + +#: mainWindow/kpMainWindow_File.cpp:105 +#, kde-format +msgid "E&xport..." +msgstr "匯出(&X)..." + +#: mainWindow/kpMainWindow_File.cpp:110 +#, kde-format +msgid "Scan..." +msgstr "掃描..." + +#: mainWindow/kpMainWindow_File.cpp:119 +#, kde-format +msgid "Acquire Screenshot" +msgstr "取得螢幕快照" + +#: mainWindow/kpMainWindow_File.cpp:123 +#, kde-format +msgid "Properties" +msgstr "屬性" + +#: mainWindow/kpMainWindow_File.cpp:129 +#, kde-format +msgid "Reloa&d" +msgstr "重新載入(&D)" + +#: mainWindow/kpMainWindow_File.cpp:459 +#, kde-format +msgid "All Supported Files (%1)" +msgstr "所有支援的檔案(%1)" + +#: mainWindow/kpMainWindow_File.cpp:484 +#, kde-format +msgctxt "@title:window" +msgid "Open Image" +msgstr "開啟影像" + +#: mainWindow/kpMainWindow_File.cpp:547 +#, kde-format +msgid "Failed to open scanning dialog." +msgstr "開啟掃描對話框失敗。" + +#: mainWindow/kpMainWindow_File.cpp:548 +#, kde-format +msgctxt "@title:window" +msgid "Scanning Failed" +msgstr "掃描失敗" + +#: mainWindow/kpMainWindow_File.cpp:665 +#, kde-format +msgid "Snapshot Delay" +msgstr "抓圖延遲" + +#: mainWindow/kpMainWindow_File.cpp:668 +#, kde-format +msgid " second" +msgid_plural " seconds" +msgstr[0] " 秒" + +#: mainWindow/kpMainWindow_File.cpp:669 +#, kde-format +msgid "No delay" +msgstr "不延遲" + +#: mainWindow/kpMainWindow_File.cpp:671 +#, kde-format +msgid "Hide Main Window" +msgstr "隱藏主視窗" + +#: mainWindow/kpMainWindow_File.cpp:725 +#, kde-format +msgid "Document Properties" +msgstr "文件屬性" + +#: mainWindow/kpMainWindow_File.cpp:960 +#, kde-format +msgctxt "@title:window" +msgid "Save Image As" +msgstr "另存影像為" + +#: mainWindow/kpMainWindow_File.cpp:1008 +#, kde-format +msgctxt "@title:window" +msgid "Export" +msgstr "匯出" + +#: mainWindow/kpMainWindow_File.cpp:1072 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes since you last saved it.\n" +"Are you sure?" +msgstr "" +"文件 %1 已變更。\n" +"重新載入會遺失所有尚未儲存的變更。\n" +"您確定要重新載入嗎?" + +#: mainWindow/kpMainWindow_File.cpp:1082 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Reloading will lose all changes.\n" +"Are you sure?" +msgstr "" +"文件 %1 已變更。\n" +"重新載入會遺失所有變更。\n" +"您確定要重新載入嗎?" + +#: mainWindow/kpMainWindow_File.cpp:1330 +#, kde-format +msgctxt "@title:window" +msgid "Print Image" +msgstr "列印影像" + +#: mainWindow/kpMainWindow_File.cpp:1410 +#, kde-format +msgid "" +"You must save this image before sending it.\n" +"Do you want to save it?" +msgstr "" +"您在送出此影像前必須先儲存。\n" +"您要儲存嗎?" + +#: mainWindow/kpMainWindow_File.cpp:1448 +#, kde-format +msgid "" +"The document \"%1\" has been modified.\n" +"Do you want to save it?" +msgstr "文件 %1 已變更。您要儲存嗎?" + +#: mainWindow/kpMainWindow_Image.cpp:117 +#, kde-format +msgid "R&esize / Scale..." +msgstr "改變/調整大小(&E)..." + +#: mainWindow/kpMainWindow_Image.cpp:123 +#, kde-format +msgid "Se&t as Image (Crop)" +msgstr "設定為影像(切割)(&T)" + +#: mainWindow/kpMainWindow_Image.cpp:133 +#, kde-format +msgid "&Flip (upside down)" +msgstr "垂直翻轉(上下顛倒)(&F)" + +#: mainWindow/kpMainWindow_Image.cpp:138 +#, kde-format +msgid "Mirror (horizontally)" +msgstr "鏡射(水平反轉)" + +#: mainWindow/kpMainWindow_Image.cpp:143 +#, kde-format +msgid "&Rotate..." +msgstr "旋轉(&R)..." + +#: mainWindow/kpMainWindow_Image.cpp:149 +#, kde-format +msgid "Rotate &Left" +msgstr "向左旋轉(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:155 +#, kde-format +msgid "Rotate Righ&t" +msgstr "向右旋轉(&T)" + +#: mainWindow/kpMainWindow_Image.cpp:161 +#, kde-format +msgid "S&kew..." +msgstr "扭曲(&K)..." + +#: mainWindow/kpMainWindow_Image.cpp:166 +#, kde-format +msgid "Reduce to Mo&nochrome (Dithered)" +msgstr "降為單色(抖色後)(&N)" + +#: mainWindow/kpMainWindow_Image.cpp:171 +#, kde-format +msgid "Reduce to &Grayscale" +msgstr "降為灰階(&G)" + +#: mainWindow/kpMainWindow_Image.cpp:175 +#, kde-format +msgid "&Invert Colors" +msgstr "反轉顏色(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:180 +#, kde-format +msgid "C&lear" +msgstr "清除(&L)" + +#: mainWindow/kpMainWindow_Image.cpp:185 +#, kde-format +msgid "Make Confidential" +msgstr "保密" + +#: mainWindow/kpMainWindow_Image.cpp:189 +#, kde-format +msgid "&More Effects..." +msgstr "更多效果(&M)..." + +#: mainWindow/kpMainWindow_Image.cpp:230 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure the translation has the same accel " +"as the Select&ion translation" +msgid "&Image" +msgstr "影像(&I)" + +#: mainWindow/kpMainWindow_Image.cpp:234 +#, kde-format +msgctxt "" +"Image/Selection Menu caption - make sure that translation has the same accel " +"as the &Image translation" +msgid "Select&ion" +msgstr "選擇(&I)" + +#: mainWindow/kpMainWindow_Settings.cpp:67 +#, kde-format +msgid "Show &Path" +msgstr "顯示路徑(&P)" + +#: mainWindow/kpMainWindow_Settings.cpp:72 +#, kde-format +msgid "Draw Anti-Aliased" +msgstr "繪製反鉅齒" + +#: mainWindow/kpMainWindow_StatusBar.cpp:156 +#, kde-format +msgid "%1,%2" +msgstr "%1,%2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:162 +#, kde-format +msgid "%1,%2 - %3,%4" +msgstr "%1,%2 - %3,%4" + +#: mainWindow/kpMainWindow_StatusBar.cpp:205 +#: widgets/toolbars/options/kpToolWidgetEraserSize.cpp:112 +#: widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp:92 +#, kde-format +msgid "%1x%2" +msgstr "%1 x %2" + +#: mainWindow/kpMainWindow_StatusBar.cpp:264 +#, kde-format +msgid "%1bpp" +msgstr "%1 bpp" + +#: mainWindow/kpMainWindow_StatusBar.cpp:290 +#: mainWindow/kpMainWindow_View_Zoom.cpp:88 +#, kde-format +msgid "%1%" +msgstr "%1%" + +#: mainWindow/kpMainWindow_Text.cpp:56 +#, kde-format +msgid "Font Family" +msgstr "字型家族" + +#: mainWindow/kpMainWindow_Text.cpp:62 +#, kde-format +msgid "Font Size" +msgstr "字型大小" + +#: mainWindow/kpMainWindow_Text.cpp:69 +#, kde-format +msgid "Bold" +msgstr "粗體" + +#: mainWindow/kpMainWindow_Text.cpp:75 +#, kde-format +msgid "Italic" +msgstr "斜體" + +#: mainWindow/kpMainWindow_Text.cpp:81 +#, kde-format +msgid "Underline" +msgstr "底線" + +#: mainWindow/kpMainWindow_Text.cpp:87 +#, kde-format +msgid "Strike Through" +msgstr "刪除線" + +#: mainWindow/kpMainWindow_Tools.cpp:135 +#, kde-format +msgid "Previous Tool Option (Group #1)" +msgstr "前一個工具選項(群組 #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:141 +#, kde-format +msgid "Next Tool Option (Group #1)" +msgstr "下一個工具選項(群組 #1)" + +#: mainWindow/kpMainWindow_Tools.cpp:147 +#, kde-format +msgid "Previous Tool Option (Group #2)" +msgstr "前一個工具選項(群組 #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:153 +#, kde-format +msgid "Next Tool Option (Group #2)" +msgstr "下一個工具選項(群組 #2)" + +#: mainWindow/kpMainWindow_Tools.cpp:165 +#, kde-format +msgid "&Draw Opaque" +msgstr "畫成不透明(&D)" + +#: mainWindow/kpMainWindow_Tools.cpp:170 +#, kde-format +msgid "Draw With Color Similarity..." +msgstr "以顏色相似度繪畫..." + +#: mainWindow/kpMainWindow_Tools.cpp:181 +#, kde-format +msgid "Tool Box" +msgstr "工具盒" + +#: mainWindow/kpMainWindow_View.cpp:65 +#, kde-format +msgid "Show &Grid" +msgstr "顯示格線(&G)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:63 +#, kde-format +msgid "Show T&humbnail" +msgstr "顯示縮圖(&H)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:74 +#, kde-format +msgid "Zoo&med Thumbnail Mode" +msgstr "放大縮圖模式(&M)" + +#: mainWindow/kpMainWindow_View_Thumbnail.cpp:84 +#, kde-format +msgid "Enable Thumbnail &Rectangle" +msgstr "開啟縮圖矩形(&R)" + +#: mainWindow/kpMainWindow_View_Zoom.cpp:110 +#, kde-format +msgid "&Zoom" +msgstr "縮放(&Z)" + +#: scan/sanedialog.cpp:41 +#, kde-format +msgctxt "@title:window" +msgid "Acquire Image" +msgstr "擷取影像" + +#: scan/sanedialog.cpp:73 +#, kde-format +msgid "Opening the selected scanner failed." +msgstr "開啟選取的掃描器失敗。" + +#: tools/flow/kpToolBrush.cpp:35 +#, kde-format +msgid "Brush" +msgstr "刷子" + +#: tools/flow/kpToolBrush.cpp:36 +#, kde-format +msgid "Draw using brushes of different shapes and sizes" +msgstr "使用不同形狀大小的刷子來畫" + +#: tools/flow/kpToolBrush.cpp:47 tools/flow/kpToolPen.cpp:57 +#, kde-format +msgid "Click to draw dots or drag to draw strokes." +msgstr "點擊可以畫點,拖曳則畫出手繪的形狀。" + +#: tools/flow/kpToolColorEraser.cpp:49 tools/flow/kpToolColorEraser.cpp:78 +#, kde-format +msgid "Color Eraser" +msgstr "顏色移除器" + +#: tools/flow/kpToolColorEraser.cpp:50 +#, kde-format +msgid "Replaces pixels of the foreground color with the background color" +msgstr "將前景的像素以背景的顏色取代" + +#: tools/flow/kpToolColorEraser.cpp:115 +#, kde-format +msgid "Click or drag to erase pixels of the foreground color." +msgstr "點選或拖曳來清除像素的前景顏色。" + +#: tools/flow/kpToolEraser.cpp:42 +#, kde-format +msgid "Eraser" +msgstr "擦除器" + +#: tools/flow/kpToolEraser.cpp:43 +#, kde-format +msgid "Lets you rub out mistakes" +msgstr "讓您擦掉錯誤的地方" + +#: tools/flow/kpToolEraser.cpp:70 +#, kde-format +msgid "Click or drag to erase." +msgstr "點選或拖曳來清除。" + +#: tools/flow/kpToolFlowBase.cpp:304 tools/kpToolColorPicker.cpp:108 +#: tools/kpToolFloodFill.cpp:144 tools/kpToolZoom.cpp:207 +#: tools/polygonal/kpToolPolygonalBase.cpp:435 +#: tools/rectangular/kpToolRectangularBase.cpp:351 +#: tools/selection/kpAbstractSelectionTool.cpp:261 +#: tools/selection/kpAbstractSelectionTool.cpp:528 +#, kde-format +msgid "Let go of all the mouse buttons." +msgstr "放開所有的滑鼠按鍵。" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Pen" +msgstr "筆" + +#: tools/flow/kpToolPen.cpp:46 +#, kde-format +msgid "Draws dots and freehand strokes" +msgstr "畫點及手繪形狀" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Spraycan" +msgstr "噴霧罐" + +#: tools/flow/kpToolSpraycan.cpp:56 +#, kde-format +msgid "Sprays graffiti" +msgstr "噴霧塗鴉" + +#: tools/flow/kpToolSpraycan.cpp:71 +#, kde-format +msgid "Click or drag to spray graffiti." +msgstr "點選或拖曳來噴漆。" + +#: tools/kpTool.cpp:140 +#, kde-format +msgctxt " ()" +msgid "%1 (%2)" +msgstr "%1(%2)" + +#: tools/kpTool_UserNotifications.cpp:42 +#, kde-format +msgid "Right click to cancel." +msgstr "點右鍵以取消。" + +#: tools/kpTool_UserNotifications.cpp:45 +#, kde-format +msgid "Left click to cancel." +msgstr "點左鍵以取消。" + +#: tools/kpTool_UserNotifications.cpp:75 +#, kde-format +msgid "%1: " +msgstr "%1:" + +#: tools/kpToolColorPicker.cpp:45 +#, kde-format +msgid "Lets you select a color from the image" +msgstr "讓您從影像中選擇顏色" + +#: tools/kpToolColorPicker.cpp:68 +#, kde-format +msgid "Click to select a color." +msgstr "點選以選擇顏色。" + +#: tools/kpToolFloodFill.cpp:55 +#, kde-format +msgid "Fills regions in the image" +msgstr "將影像中的區域填滿顏色" + +#: tools/kpToolFloodFill.cpp:75 +#, kde-format +msgid "Click to fill a region." +msgstr "點選以填滿區域。" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zoom" +msgstr "縮放" + +#: tools/kpToolZoom.cpp:74 +#, kde-format +msgid "Zooms in and out of the image" +msgstr "縮放此影像" + +#: tools/kpToolZoom.cpp:118 +#, kde-format +msgid "Click to zoom in/out or left drag to zoom into a specific area." +msgstr "點選縮放,或按下滑鼠左鍵拖曳可以縮放特定區域。" + +#: tools/polygonal/kpToolCurve.cpp:103 +#, kde-format +msgid "Curve" +msgstr "曲線" + +#: tools/polygonal/kpToolCurve.cpp:104 +#, kde-format +msgid "Draws curves" +msgstr "畫曲線" + +#: tools/polygonal/kpToolCurve.cpp:118 +#, kde-format +msgid "Drag out the start and end points." +msgstr "拖放開始點與結束點。" + +#: tools/polygonal/kpToolCurve.cpp:157 +#, kde-format +msgid "Left drag to set the first control point or right click to finish." +msgstr "左鍵拖曳以設定第一個控制點,或右鍵完成。" + +#: tools/polygonal/kpToolCurve.cpp:162 +#, kde-format +msgid "Right drag to set the first control point or left click to finish." +msgstr "右鍵拖曳以設定第一個控制點,或左鍵完成。" + +#: tools/polygonal/kpToolCurve.cpp:172 +#, kde-format +msgid "Left drag to set the last control point or right click to finish." +msgstr "左鍵拖曳以設定最後一個控制點,或右鍵完成。" + +#: tools/polygonal/kpToolCurve.cpp:177 +#, kde-format +msgid "Right drag to set the last control point or left click to finish." +msgstr "右鍵拖曳以設定最後一個控制點,或左鍵完成。" + +#: tools/polygonal/kpToolLine.cpp:41 +#, kde-format +msgid "Line" +msgstr "線條" + +#: tools/polygonal/kpToolLine.cpp:42 +#, kde-format +msgid "Draws lines" +msgstr "畫出線條" + +#: tools/polygonal/kpToolLine.cpp:55 +#: tools/rectangular/kpToolRectangularBase.cpp:119 +#, kde-format +msgid "Drag to draw." +msgstr "拖曳來畫。" + +#: tools/polygonal/kpToolPolygon.cpp:93 +#, kde-format +msgid "Polygon" +msgstr "多邊形" + +#: tools/polygonal/kpToolPolygon.cpp:94 +#, kde-format +msgid "Draws polygons" +msgstr "畫出多邊形" + +#: tools/polygonal/kpToolPolygon.cpp:112 tools/polygonal/kpToolPolyline.cpp:60 +#, kde-format +msgid "Drag to draw the first line." +msgstr "拖曳畫出第一條線。" + +#: tools/polygonal/kpToolPolygon.cpp:182 tools/polygonal/kpToolPolyline.cpp:117 +#, kde-format +msgid "Left drag another line or right click to finish." +msgstr "左鍵繼續拖曳,或是右鍵完成。" + +#: tools/polygonal/kpToolPolygon.cpp:186 tools/polygonal/kpToolPolyline.cpp:121 +#, kde-format +msgid "Right drag another line or left click to finish." +msgstr "右鍵繼續拖曳,或是左鍵完成。" + +#: tools/polygonal/kpToolPolyline.cpp:46 +#, kde-format +msgid "Connected Lines" +msgstr "連接線條" + +#: tools/polygonal/kpToolPolyline.cpp:47 +#, kde-format +msgid "Draws connected lines" +msgstr "畫出連接線條" + +#: tools/rectangular/kpToolEllipse.cpp:42 +#, kde-format +msgid "Ellipse" +msgstr "橢圓" + +#: tools/rectangular/kpToolEllipse.cpp:43 +#, kde-format +msgid "Draws ellipses and circles" +msgstr "畫圓形及橢圓形" + +#: tools/rectangular/kpToolRectangle.cpp:43 +#, kde-format +msgid "Rectangle" +msgstr "矩形" + +#: tools/rectangular/kpToolRectangle.cpp:44 +#, kde-format +msgid "Draws rectangles and squares" +msgstr "畫出矩形與方形" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:42 +#, kde-format +msgid "Rounded Rectangle" +msgstr "圓角矩形" + +#: tools/rectangular/kpToolRoundedRectangle.cpp:43 +#, kde-format +msgid "Draws rectangles and squares with rounded corners" +msgstr "畫出圓角的矩形或方形" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:83 +#, kde-format +msgid "Left drag to create selection." +msgstr "左鍵拖曳以建立選擇區域。" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:91 +#, kde-format +msgid "Left drag to move selection." +msgstr "左鍵拖曳以移動選擇的區域。" + +#: tools/selection/image/kpAbstractImageSelectionTool.cpp:99 +#, kde-format +msgid "Left drag to scale selection." +msgstr "左鍵拖曳以調整所選擇的區域。" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:162 +#, kde-format +msgid "Selection: Opaque" +msgstr "選擇區域:不透明度" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:163 +#, kde-format +msgid "Selection: Transparent" +msgstr "選擇區域:透明" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:184 +#, kde-format +msgid "Selection: Transparency Color" +msgstr "選擇區域:透明度顏色" + +#: tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp:205 +#, kde-format +msgid "Selection: Transparency Color Similarity" +msgstr "選擇區域:透明度相似顏色" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:42 +#, kde-format +msgid "Selection (Elliptical)" +msgstr "選擇(橢圓形)" + +#: tools/selection/image/kpToolEllipticalSelection.cpp:43 +#, kde-format +msgid "Makes an elliptical or circular selection" +msgstr "選取一個圓形或橢圓形區域" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:45 +#, kde-format +msgid "Selection (Free-Form)" +msgstr "選擇區域(自由選擇)" + +#: tools/selection/image/kpToolFreeFormSelection.cpp:46 +#, kde-format +msgid "Makes a free-form selection" +msgstr "自由選擇一個區域" + +#: tools/selection/image/kpToolRectSelection.cpp:40 +#, kde-format +msgid "Selection (Rectangular)" +msgstr "選擇區域(矩形)" + +#: tools/selection/image/kpToolRectSelection.cpp:41 +#, kde-format +msgid "Makes a rectangular selection" +msgstr "選擇一個矩形區域" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:324 +#, kde-format +msgid "Selection: Move" +msgstr "選擇區域:移動" + +#: tools/selection/kpAbstractSelectionTool_Move.cpp:347 +#, kde-format +msgid "%1: Smear" +msgstr "%1:塗上" + +#: tools/selection/text/kpToolText.cpp:55 +#, kde-format +msgid "Writes text" +msgstr "寫入文字" + +#: tools/selection/text/kpToolText_Commands.cpp:69 +#, kde-format +msgid "Text: Backspace" +msgstr "文字盒:後退" + +#: tools/selection/text/kpToolText_Commands.cpp:86 +#, kde-format +msgid "Text: Delete" +msgstr "文字盒:刪除" + +#: tools/selection/text/kpToolText_Commands.cpp:103 +#, kde-format +msgid "Text: New Line" +msgstr "文字盒:新線條" + +#: tools/selection/text/kpToolText_Commands.cpp:120 +#, kde-format +msgid "Text: Write" +msgstr "文字盒:寫入" + +#: tools/selection/text/kpToolText_Create.cpp:48 +#, kde-format +msgid "Left drag to create text box." +msgstr "左鍵拖曳以建立文字盒。" + +#: tools/selection/text/kpToolText_Move.cpp:42 +#, kde-format +msgid "Left drag to move text box." +msgstr "左鍵拖曳以移動文字盒。" + +#: tools/selection/text/kpToolText_Move.cpp:61 +#, kde-format +msgid "Text: Move Box" +msgstr "文字盒:移動文字盒文字 移動" + +#: tools/selection/text/kpToolText_ResizeScale.cpp:42 +#, kde-format +msgid "Left drag to resize text box." +msgstr "左鍵拖曳以改變文字盒大小。" + +#: tools/selection/text/kpToolText_SelectText.cpp:57 +#, kde-format +msgid "Left click to change cursor position." +msgstr "點擊左鍵以改變游標位置。" + +#: tools/selection/text/kpToolText_TextStyle.cpp:113 +#, kde-format +msgid "Text: Opaque Background" +msgstr "文字盒:背景不透明" + +#: tools/selection/text/kpToolText_TextStyle.cpp:114 +#, kde-format +msgid "Text: Transparent Background" +msgstr "文字盒:背景透明" + +#: tools/selection/text/kpToolText_TextStyle.cpp:137 +#, kde-format +msgid "Text: Swap Colors" +msgstr "文字盒:交換顏色" + +#: tools/selection/text/kpToolText_TextStyle.cpp:158 +#, kde-format +msgid "Text: Foreground Color" +msgstr "文字盒:前景顏色" + +#: tools/selection/text/kpToolText_TextStyle.cpp:179 +#, kde-format +msgid "Text: Background Color" +msgstr "文字盒:背景顏色" + +#: tools/selection/text/kpToolText_TextStyle.cpp:215 +#, kde-format +msgid "Text: Font" +msgstr "文字盒:字型" + +#: tools/selection/text/kpToolText_TextStyle.cpp:242 +#, kde-format +msgid "Text: Font Size" +msgstr "文字盒:字型大小" + +#: tools/selection/text/kpToolText_TextStyle.cpp:265 +#, kde-format +msgid "Text: Bold" +msgstr "文字盒:粗體" + +#: tools/selection/text/kpToolText_TextStyle.cpp:287 +#, kde-format +msgid "Text: Italic" +msgstr "文字盒:斜體" + +#: tools/selection/text/kpToolText_TextStyle.cpp:309 +#, kde-format +msgid "Text: Underline" +msgstr "文字盒:底線" + +#: tools/selection/text/kpToolText_TextStyle.cpp:331 +#, kde-format +msgid "Text: Strike Through" +msgstr "文字盒:刪除線" + +#: views/kpUnzoomedThumbnailView.cpp:86 +#, kde-format +msgid "Unzoomed Mode - Thumbnail" +msgstr "未縮放模式─縮圖" + +#: views/kpZoomedThumbnailView.cpp:65 +#, kde-format +msgid "%1% - Thumbnail" +msgstr "%1%─縮圖" + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:70 +#, kde-format +msgid "" +"

                            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                            This feature applies " +"to:

                            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                            To configure it, click on the cube.

                            " +msgstr "" +"

                            色彩相似度就是不同像素間的色彩,在有多相似的情況下會被認定是相" +"同的顏色。

                            如果您不是設定「完全一致」,您可以比較有效率地處理抖色後的" +"影像與相片。

                            這個功能套用到:

                            • 選取區域:在透明模" +"式,選取的區域中的顏色相似於背景顏色的,話,就會變成透明。
                            • 填滿顏" +"色:對區域中相似但非完全相同的彩色像素,設得越高表示填入越多像素。
                            • " +"
                            • 色彩清除:任何相似於前景顏色的像素會被背景顏色取代。
                            • " +"自動群聚移除內部邊框:對有相似但非完全相同的彩色像素的邊框,設得" +"越高就等於把越多邊框群聚在一起。

                            設得越高表示越多種不同色彩會被" +"認定是同一種顏色。因此,若是產生的效果讓您認為還不夠,您可以調高此值。

                            " +"

                            不過,若是效果太超過(比方說「填滿顏色」填了太多地方),則可以考慮降低此" +"值。

                            要設定此值,請點擊此立方體。

                            " + +#: widgets/colorSimilarity/kpColorSimilarityHolder.cpp:120 +#, kde-format +msgid "" +"

                            Color Similarity is how similar the colors of different " +"pixels must be, for operations to consider them to be the same.

                            If you " +"set it to something other than Exact Match, you can work more " +"effectively with dithered images and photos, in a comparable manner to the " +"\"Magic Wand\" feature of other paint programs.

                            This feature applies " +"to:

                            • Selections: In Transparent mode, any color in " +"the selection that is similar to the background color will be made " +"transparent.
                            • Flood Fill: For regions with similar - " +"but not identical - colored pixels, a higher setting is likely to fill more " +"pixels.
                            • Color Eraser: Any pixel whose color is similar " +"to the foreground color will be replaced with the background color.
                            • Autocrop and Remove Internal Border: For borders with " +"similar - but not identical - colored pixels, a higher setting is " +"more likely to crop the whole border.

                            Higher settings mean that " +"operations consider an increased range of colors to be sufficiently " +"similar so as to be the same. Therefore, you should increase the " +"setting if the above operations are not affecting pixels whose colors you " +"consider to be similar enough.

                            However, if they are having too much of " +"an effect and are changing pixels whose colors you do not consider to be " +"similar (e.g. if Flood Fill is changing too many pixels), you should " +"decrease this setting.

                            " +msgstr "" +"

                            色彩相似度就是不同像素間的色彩,在有多相似的情況下會被認定是相" +"同的顏色。

                            如果您不是設定「完全一致」,您可以比較有效率地處理抖色後的" +"影像與相片。

                            這個功能套用到:

                            • 選取區域:在透明模" +"式,選取的區域中的顏色相似於背景顏色的,話,就會變成透明。
                            • 填滿顏" +"色:對區域中相似但非完全相同的彩色像素,設得越高表示填入越多像素。
                            • " +"
                            • 色彩清除:任何相似於前景顏色的像素會被背景顏色取代。
                            • " +"自動群聚移除內部邊框:對有相似但非完全相同的彩色像素的邊框,設得" +"越高就等於把越多邊框群聚在一起。

                            設得越高表示越多種不同色彩會被" +"認定是同一種顏色。因此,若是產生的效果讓您認為還不夠,您可以調高此值。

                            " +"

                            不過,若是效果太超過(比方說「填滿顏色」填了太多地方),則可以考慮降低此" +"值。

                            要設定此值,請點擊此立方體。

                            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:231 +#, kde-format +msgid "

                            Color Similarity: %1%

                            Click to configure.

                            " +msgstr "

                            顏色相似度:%1%

                            點選以設定。

                            " + +#: widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp:238 +#, kde-format +msgid "" +"

                            Color Similarity: Exact Match

                            Click to configure." +msgstr "

                            顏色相似度:完全一致

                            點選以設定。

                            " + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:61 +#, kde-format +msgid "&Brightness:" +msgstr "亮度(&B):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:64 +#, kde-format +msgid "Re&set" +msgstr "重置(&S)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:66 +#, kde-format +msgid "Co&ntrast:" +msgstr "對比(&N):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:71 +#, kde-format +msgid "&Gamma:" +msgstr "Gamma(&G):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:80 +#, kde-format +msgid "Rese&t" +msgstr "重置(&T)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:87 +#, kde-format +msgid "C&hannels:" +msgstr "頻道(&H):" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:89 +#, kde-format +msgid "All" +msgstr "全部" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:90 +#, kde-format +msgid "Red" +msgstr "紅" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:91 +#, kde-format +msgid "Green" +msgstr "綠" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:92 +#, kde-format +msgid "Blue" +msgstr "藍" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:95 +#, kde-format +msgid "Reset &All Values" +msgstr "重置所有設定值(&A)" + +#: widgets/imagelib/effects/kpEffectBalanceWidget.cpp:162 +#, kde-format +msgid "Settings" +msgstr "設定" + +#: widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp:52 +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:56 +#, kde-format +msgid "&Amount:" +msgstr "程度(&A):" + +#: widgets/imagelib/effects/kpEffectEmbossWidget.cpp:51 +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:72 +#, kde-format +msgid "E&nable" +msgstr "開啟(&N)" + +#: widgets/imagelib/effects/kpEffectFlattenWidget.cpp:131 +#, kde-format +msgid "Colors" +msgstr "顏色" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:47 +#, kde-format +msgid "&Hue:" +msgstr "色調(&H):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:48 +#, kde-format +msgid "&Saturation:" +msgstr "飽和度(&S):" + +#: widgets/imagelib/effects/kpEffectHSVWidget.cpp:49 +#, kde-format +msgctxt "The V of HSV" +msgid "&Value:" +msgstr "值(&V):" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:60 +#, kde-format +msgid "&Red" +msgstr "紅(&R)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:61 +#, kde-format +msgid "&Green" +msgstr "綠(&G)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:62 +#, kde-format +msgid "&Blue" +msgstr "藍(&B)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:67 +#, kde-format +msgid "&All" +msgstr "全部(&A)" + +#: widgets/imagelib/effects/kpEffectInvertWidget.cpp:144 +#, kde-format +msgid "Channels" +msgstr "頻道" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:58 +#, kde-format +msgid "&Monochrome" +msgstr "單色(&M)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:61 +#, kde-format +msgid "Mo&nochrome (dithered)" +msgstr "單色(抖色後)(&N)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:63 +#, kde-format +msgid "256 co&lor" +msgstr "256 色(&L)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:65 +#, kde-format +msgid "256 colo&r (dithered)" +msgstr "256 色(抖色後)(&R)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:67 +#, kde-format +msgid "24-&bit color" +msgstr "24 位元顏色(&B)" + +#: widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp:147 +#, kde-format +msgid "Reduce To" +msgstr "降為" + +#: widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp:54 +#, kde-format +msgid "&Granularity:" +msgstr "顆粒(&G):" + +#: widgets/kpColorCells.cpp:196 +#, kde-format +msgid "" +"

                            To select the foreground color that tools use to draw, left-click on " +"a filled-in color cell. To select the background color, right-click instead." +"

                            To change the color of a color cell itself, double-click on it.

                            You can also swap the color of a filled-in cell with any other cell " +"using drag and drop. Also, if you hold down the Ctrl key, the " +"destination cell's color will be overwritten, instead of being swapped with " +"the color of the source cell.

                            " +msgstr "" +"

                            要選擇工具繪圖的前景顏色,在顏色格內點擊左鍵。要選擇背景顏色,就點擊右" +"鍵。

                            要改變顏色格內的顏色,就對它雙擊。

                            您也可以用拖放的方式將" +"格內的顏色與其他格交換。如果您按住 Ctrl 鍵,目標格會被覆寫而不是交換。

                            " + +#: widgets/kpDocumentSaveOptionsWidget.cpp:89 +#, kde-format +msgid "Convert &to:" +msgstr "轉換到(&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:94 +#, kde-format +msgid "Quali&ty:" +msgstr "品質(&T):" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:102 +#, kde-format +msgid "&Preview" +msgstr "預覽(&P)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:227 +#, kde-format +msgid "Monochrome" +msgstr "單色" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:228 +#, kde-format +msgid "Monochrome (Dithered)" +msgstr "單色(抖色後)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:232 +#, kde-format +msgid "256 Color" +msgstr "256 色" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:233 +#, kde-format +msgid "256 Color (Dithered)" +msgstr "256 色(抖色後)" + +#: widgets/kpDocumentSaveOptionsWidget.cpp:238 +#, kde-format +msgid "24-bit Color" +msgstr "24 位元顏色" + +#: widgets/kpPrintDialogPage.cpp:58 +#, kde-format +msgctxt "@title:tab" +msgid "I&mage Position" +msgstr "影像位置(&M)" + +#: widgets/kpPrintDialogPage.cpp:60 +#, kde-format +msgid "&Center of the page" +msgstr "頁面的中央(&C)" + +#: widgets/kpPrintDialogPage.cpp:62 +#, kde-format +msgid "Top-&left of the page" +msgstr "頁面的左上角(&L)" + +#: widgets/kpTransparentColorCell.cpp:53 +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:44 +#, kde-format +msgid "Transparent" +msgstr "透明" + +#: widgets/toolbars/kpColorToolBar.cpp:278 +#, kde-format +msgid "KolourPaint Defaults" +msgstr "KolourPaint 預設值" + +#: widgets/toolbars/kpColorToolBar.cpp:293 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette" +msgid "Colors: %1" +msgstr "顏色:%1" + +#: widgets/toolbars/kpColorToolBar.cpp:300 +#, kde-format +msgctxt "Colors: name_or_url_of_color_palette [modified]" +msgid "Colors: %1 [modified]" +msgstr "顏色:%1【已變更】" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:199 +#, kde-format +msgid "1x1" +msgstr "1x1" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:208 +#, kde-format +msgid "Circle" +msgstr "圓形" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:211 +#, kde-format +msgid "Square" +msgstr "方形" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:215 +#, kde-format +msgid "Slash" +msgstr "斜線" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:219 +#, kde-format +msgid "Backslash" +msgstr "反斜線" + +#: widgets/toolbars/options/kpToolWidgetBrush.cpp:227 +#, kde-format +msgid "%1x%2 %3" +msgstr "%1x%2 %3" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:118 +#, kde-format +msgid "No Fill" +msgstr "不填滿" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:121 +#, kde-format +msgid "Fill with Background Color" +msgstr "填滿背景顏色" + +#: widgets/toolbars/options/kpToolWidgetFillStyle.cpp:124 +#, kde-format +msgid "Fill with Foreground Color" +msgstr "填滿前景顏色" + +#: widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp:42 +#, kde-format +msgid "Opaque" +msgstr "不透明" + +#~ msgid "" +#~ "A document called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "文件 %1 已存在。\n" +#~ "您要覆寫它嗎?" + +#~ msgid "" +#~ "A color palette called \"%1\" already exists.\n" +#~ "Do you want to overwrite it?" +#~ msgstr "" +#~ "調色盤 %1 已存在。\n" +#~ "您要覆寫它嗎?" diff --git a/scan/sanedialog.cpp b/scan/sanedialog.cpp new file mode 100644 index 0000000..dda3b54 --- /dev/null +++ b/scan/sanedialog.cpp @@ -0,0 +1,118 @@ +/* ============================================================ + * + * Date : 2008-04-17 + * Description : Sane plugin interface for KDE + * + * Copyright (C) 2008 by Kare Sars + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program. If not, see . + * + * ============================================================ */ + +#include "sanedialog.h" + +#include +#include "kpLogCategories.h" +#include +#include +#include +#include + +#include + +SaneDialog::SaneDialog(QWidget *parent) + : KPageDialog(parent) +{ + setFaceType(static_cast (Plain)); + setWindowTitle(i18nc("@title:window", "Acquire Image")); + + buttonBox()->setStandardButtons(QDialogButtonBox::Close); + buttonBox()->button(QDialogButtonBox::Close)->setDefault(true); + + + m_ksanew = new KSaneIface::KSaneWidget(this); + addPage(m_ksanew, QString()); + + connect (m_ksanew, &KSaneIface::KSaneWidget::scannedImageReady, + this, &SaneDialog::imageReady); + + m_openDev = QString(); +} + +bool SaneDialog::setup() +{ + if(!m_ksanew) { + // new failed + return false; + } + if (!m_openDev.isEmpty()) { + return true; + } + // need to select a scanner + m_openDev = m_ksanew->selectDevice(nullptr); + if (m_openDev.isEmpty()) { + // either no scanner was found or then cancel was pressed. + return false; + } + if (!m_ksanew->openDevice(m_openDev)) { + // could not open the scanner + KMessageBox::sorry(nullptr, i18n("Opening the selected scanner failed.")); + m_openDev = QString(); + return false; + } + + // restore scan dialog size and all options for the selected device if available + KSharedConfigPtr configPtr = KSharedConfig::openConfig(QStringLiteral("scannersettings")); + KWindowConfig::restoreWindowSize(windowHandle(), KConfigGroup(configPtr, "ScanDialog")); + QString groupName = m_openDev; + if (configPtr->hasGroup(groupName)) { + KConfigGroup group(configPtr, groupName); + QStringList keys = group.keyList(); + for (int i = 0; i < keys.count(); i++) { + m_ksanew->setOptVal(keys[i], group.readEntry(keys[i])); + } + } + + return true; +} + +SaneDialog::~SaneDialog() +{ + if (m_ksanew && !m_openDev.isEmpty()) { + // save scan dialog size and all options for the selected device if available + KSharedConfigPtr configPtr = KSharedConfig::openConfig(QStringLiteral("scannersettings")); + KConfigGroup group(configPtr, "ScanDialog"); + KWindowConfig::saveWindowSize(windowHandle(), group, KConfigGroup::Persistent); + group = configPtr->group(m_openDev); + QMap opts; + m_ksanew->getOptVals(opts); + QMap::const_iterator i = opts.constBegin(); + for (; i != opts.constEnd(); ++i) { + group.writeEntry(i.key(), i.value(), KConfigGroup::Persistent); + } + } +} + +void SaneDialog::imageReady(const QImage &img) +{ + Q_EMIT finalImage(img, nextId()); +} + +int SaneDialog::nextId() +{ + return ++m_currentId; +} diff --git a/scan/sanedialog.h b/scan/sanedialog.h new file mode 100644 index 0000000..cfb2a6b --- /dev/null +++ b/scan/sanedialog.h @@ -0,0 +1,67 @@ +/* ============================================================ + * + * Date : 2008-04-17 + * Description : Sane plugin interface for KDE + * + * Copyright (C) 2008 by Kare Sars + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program. If not, see . + * + * ============================================================ */ + +#ifndef SANEDIALOG_H +#define SANEDIALOG_H + +#include + +#include + +class SaneDialog : public KPageDialog +{ + Q_OBJECT + +public: + explicit SaneDialog(QWidget *parent = nullptr); + ~SaneDialog() override; + + bool setup(); + +Q_SIGNALS: + /** + * Informs you that an image has scanned. @p id is the same as in the + * @p preview() signal, if this image had been previewed before. + * + * Note, that those id's may not be properly implemented in the current + * libkscan. + * @param img the image + * @param id the image's id + */ + void finalImage(const QImage &img, int id); + +protected Q_SLOTS: + void imageReady(const QImage &img); + +private: + int nextId(); + + KSaneIface::KSaneWidget *m_ksanew; + QString m_openDev; + + int m_currentId; +}; + +#endif // SANEDIALOG_H diff --git a/tests/45deg_line.png b/tests/45deg_line.png new file mode 100644 index 0000000..cab600c Binary files /dev/null and b/tests/45deg_line.png differ diff --git a/tests/4x4-transparent.png b/tests/4x4-transparent.png new file mode 100644 index 0000000..58b0668 Binary files /dev/null and b/tests/4x4-transparent.png differ diff --git a/tests/5x5.png b/tests/5x5.png new file mode 100644 index 0000000..2d30d75 Binary files /dev/null and b/tests/5x5.png differ diff --git a/tests/depth1.bmp b/tests/depth1.bmp new file mode 100644 index 0000000..326c665 Binary files /dev/null and b/tests/depth1.bmp differ diff --git a/tests/dither.png b/tests/dither.png new file mode 100644 index 0000000..a9223a0 Binary files /dev/null and b/tests/dither.png differ diff --git a/tests/freeform-selection.png b/tests/freeform-selection.png new file mode 100644 index 0000000..d630279 Binary files /dev/null and b/tests/freeform-selection.png differ diff --git a/tests/kolourcircles.png b/tests/kolourcircles.png new file mode 100644 index 0000000..9f54445 Binary files /dev/null and b/tests/kolourcircles.png differ diff --git a/tests/paste_in_new_window.png b/tests/paste_in_new_window.png new file mode 100644 index 0000000..37f38ef Binary files /dev/null and b/tests/paste_in_new_window.png differ diff --git a/tests/paste_in_new_window.txt b/tests/paste_in_new_window.txt new file mode 100644 index 0000000..ef26b36 --- /dev/null +++ b/tests/paste_in_new_window.txt @@ -0,0 +1,15 @@ +paste_in_new_window.png consists of white lines on black ("Hermann illusion") +with a transparent rectangle in the middle. + +Use this to test "Edit / Paste in New Window". + +Prior to 2007-10-07, a troublesome sequence of steps with this image was: + +1. Set the selection transparency mode to Transparent +2. Select All (Ctrl+A) +3. Copy (Ctrl+C) +4. Paste in New Window (Ctrl+Shift+V) + +The white lines became transparent. + +This testcase was originally by Thurston Dang. diff --git a/tests/rotate.png b/tests/rotate.png new file mode 100644 index 0000000..d54e2cf Binary files /dev/null and b/tests/rotate.png differ diff --git a/tests/selections.txt b/tests/selections.txt new file mode 100644 index 0000000..4b70007 --- /dev/null +++ b/tests/selections.txt @@ -0,0 +1,12 @@ +An obscure testcase with the selection tool is: + +1. RMB-drag to create a selection and popup a menu. +2. LMB-drag outside of the menu, to close it. +3. While still holding down the LMB, hold down the RMB and continue + moving the mouse. +4. Let go of the LMB and continue moving the mouse. + +etc. + +KolourPaint should not crash or anything like that. + diff --git a/tests/small16x16.png b/tests/small16x16.png new file mode 100644 index 0000000..7eb1bc2 Binary files /dev/null and b/tests/small16x16.png differ diff --git a/tests/tool_fill_xlimit.png b/tests/tool_fill_xlimit.png new file mode 100644 index 0000000..97eb0e1 Binary files /dev/null and b/tests/tool_fill_xlimit.png differ diff --git a/tests/transforms-rotate-me-90-clockwise.png b/tests/transforms-rotate-me-90-clockwise.png new file mode 100644 index 0000000..3830865 Binary files /dev/null and b/tests/transforms-rotate-me-90-clockwise.png differ diff --git a/tests/transforms.png b/tests/transforms.png new file mode 100644 index 0000000..c1aea6f Binary files /dev/null and b/tests/transforms.png differ diff --git a/tests/transparent.png b/tests/transparent.png new file mode 100644 index 0000000..6995366 Binary files /dev/null and b/tests/transparent.png differ diff --git a/tests/transparent_selection.png b/tests/transparent_selection.png new file mode 100644 index 0000000..467ca16 Binary files /dev/null and b/tests/transparent_selection.png differ diff --git a/tools/flow/kpToolBrush.cpp b/tools/flow/kpToolBrush.cpp new file mode 100644 index 0000000..a83f862 --- /dev/null +++ b/tools/flow/kpToolBrush.cpp @@ -0,0 +1,56 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "kpToolBrush.h" + +#include + +//--------------------------------------------------------------------- + +kpToolBrush::kpToolBrush (kpToolEnvironment *environ, QObject *parent) + : kpToolFlowPixmapBase (i18n ("Brush"), + i18n ("Draw using brushes of different shapes and sizes"), + Qt::Key_B, + environ, parent, QStringLiteral("tool_brush")) +{ +} + +//--------------------------------------------------------------------- + +// protected virtual [base kpToolFlowBase] +QString kpToolBrush::haventBegunDrawUserMessage () const +{ + return i18n ("Click to draw dots or drag to draw strokes."); +} + +//--------------------------------------------------------------------- + +// See the our corresponding .h for brush selection. + +// Logic is in kpToolFlowPixmapBase. + + diff --git a/tools/flow/kpToolBrush.h b/tools/flow/kpToolBrush.h new file mode 100644 index 0000000..bd15a52 --- /dev/null +++ b/tools/flow/kpToolBrush.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_BRUSH_H +#define KP_TOOL_BRUSH_H + + +#include "kpToolFlowPixmapBase.h" + + +// Brush = draws pixmaps, "interpolates" by "sweeping" pixmaps along a line (interesting brushes) +class kpToolBrush : public kpToolFlowPixmapBase +{ +Q_OBJECT + +public: + kpToolBrush (kpToolEnvironment *environ, QObject *parent); + +protected: + QString haventBegunDrawUserMessage () const override; + bool haveDiverseBrushes () const override { return true; } +}; + + +#endif // KP_TOOL_BRUSH_H diff --git a/tools/flow/kpToolColorEraser.cpp b/tools/flow/kpToolColorEraser.cpp new file mode 100644 index 0000000..366e8d8 --- /dev/null +++ b/tools/flow/kpToolColorEraser.cpp @@ -0,0 +1,160 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_COLOR_ERASER 0 + +#include "kpToolColorEraser.h" + +#include + +#include "kpLogCategories.h" +#include + +#include "imagelib/kpColor.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "commands/kpMacroCommand.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "commands/tools/flow/kpToolFlowCommand.h" +#include "environments/tools/kpToolEnvironment.h" + +//-------------------------------------------------------------------------------- + +kpToolColorEraser::kpToolColorEraser (kpToolEnvironment *environ, QObject *parent) + : kpToolFlowBase (i18n ("Color Eraser"), + i18n ("Replaces pixels of the foreground color with the background color"), + Qt::Key_O, + environ, parent, + QStringLiteral("tool_color_eraser")) +{ +} + +//-------------------------------------------------------------------------------- + +kpToolColorEraser::~kpToolColorEraser () = default; + +//-------------------------------------------------------------------------------- +// public virtual [base kpTool] + +void kpToolColorEraser::globalDraw () +{ +#if DEBUG_KP_TOOL_COLOR_ERASER + qCDebug(kpLogTools) << "kpToolColorEraser::globalDraw()"; +#endif + if (!drawShouldProceed (QPoint ()/*unused*/, QPoint ()/*unused*/, QRect ()/*unused*/)) { + return; + } + + QApplication::setOverrideCursor (Qt::WaitCursor); + + environ ()->flashColorSimilarityToolBarItem (); + + kpToolFlowCommand *cmd = new kpToolFlowCommand ( + i18n ("Color Eraser"), environ ()->commandEnvironment ()); + + const QRect dirtyRect = kpPainter::washRect (document ()->imagePointer (), + 0, 0, document ()->width (), document ()->height (), + backgroundColor ()/*color to draw in*/, + foregroundColor ()/*color to replace*/, + processedColorSimilarity ()); + + if (!dirtyRect.isEmpty ()) + { + document ()->slotContentsChanged (dirtyRect); + + + cmd->updateBoundingRect (dirtyRect); + cmd->finalize (); + + commandHistory ()->addCommand (cmd, false /* don't exec */); + + // don't delete - it's up to the commandHistory + cmd = nullptr; + } + else + { + #if DEBUG_KP_TOOL_COLOR_ERASER + qCDebug(kpLogTools) << "\tisNOP"; + #endif + delete cmd; + cmd = nullptr; + } + + QApplication::restoreOverrideCursor (); +} + +//-------------------------------------------------------------------------------- + +QString kpToolColorEraser::haventBegunDrawUserMessage () const +{ + return i18n ("Click or drag to erase pixels of the foreground color."); +} + +//-------------------------------------------------------------------------------- + +bool kpToolColorEraser::drawShouldProceed (const QPoint & /*thisPoint*/, + const QPoint & /*lastPoint*/, + const QRect & /*normalizedRect*/) +{ + return !(foregroundColor () == backgroundColor () && + processedColorSimilarity () == 0); +} + +//-------------------------------------------------------------------------------- + +QRect kpToolColorEraser::drawLine (const QPoint &thisPoint, const QPoint &lastPoint) +{ +#if DEBUG_KP_TOOL_COLOR_ERASER + qCDebug(kpLogTools) << "kpToolColorEraser::drawLine(thisPoint=" << thisPoint + << ",lastPoint=" << lastPoint << ")"; +#endif + + environ ()->flashColorSimilarityToolBarItem (); + + const QRect dirtyRect = kpPainter::washLine (document ()->imagePointer (), + lastPoint.x (), lastPoint.y (), + thisPoint.x (), thisPoint.y (), + color (mouseButton ())/*color to draw in*/, + brushWidth (), brushHeight (), + color (1 - mouseButton ())/*color to replace*/, + processedColorSimilarity ()); + +#if DEBUG_KP_TOOL_COLOR_ERASER + qCDebug(kpLogTools) << "\tdirtyRect=" << dirtyRect; +#endif + + if (!dirtyRect.isEmpty ()) + { + document ()->slotContentsChanged (dirtyRect); + return dirtyRect; + } + + return {}; +} + +//-------------------------------------------------------------------------------- diff --git a/tools/flow/kpToolColorEraser.h b/tools/flow/kpToolColorEraser.h new file mode 100644 index 0000000..b50b920 --- /dev/null +++ b/tools/flow/kpToolColorEraser.h @@ -0,0 +1,65 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_COLOR_ERASER_H +#define KP_TOOL_COLOR_ERASER_H + + +#include "kpToolFlowBase.h" + + +// Color Eraser = Brush that replaces/washes the foreground color with the background color +class kpToolColorEraser : public kpToolFlowBase +{ +Q_OBJECT + +public: + kpToolColorEraser (kpToolEnvironment *environ, QObject *parent); + ~kpToolColorEraser () override; + + +public: + void globalDraw () override; + + +protected: + QString haventBegunDrawUserMessage () const override; + + bool drawShouldProceed (const QPoint &thisPoint, + const QPoint &lastPoint, + const QRect &normalizedRect) override; + + bool haveSquareBrushes () const override { return true; } + bool colorsAreSwapped () const override { return true; } + + + QRect drawLine (const QPoint &thisPoint, const QPoint &lastPoint) override; +}; + + +#endif // KP_TOOL_COLOR_ERASER_H diff --git a/tools/flow/kpToolEraser.cpp b/tools/flow/kpToolEraser.cpp new file mode 100644 index 0000000..621cb10 --- /dev/null +++ b/tools/flow/kpToolEraser.cpp @@ -0,0 +1,79 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_ERASER 0 + +#include "kpToolEraser.h" + +#include "commands/kpCommandHistory.h" +#include "commands/imagelib/effects/kpEffectClearCommand.h" +#include "environments/tools/kpToolEnvironment.h" + +#include + +//--------------------------------------------------------------------- + +kpToolEraser::kpToolEraser (kpToolEnvironment *environ, QObject *parent) + : kpToolFlowPixmapBase (i18n ("Eraser"), + i18n ("Lets you rub out mistakes"), + Qt::Key_A, + environ, parent, QStringLiteral("tool_eraser")) +{ +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolEraser::globalDraw () +{ +#if DEBUG_KP_TOOL_ERASER + qCDebug(kpLogTools) << "kpToolEraser::globalDraw()"; +#endif + + commandHistory ()->addCommand ( + new kpEffectClearCommand ( + false/*act on doc, not sel*/, + backgroundColor (), + environ ()->commandEnvironment ())); +} + +//--------------------------------------------------------------------- + +// protected virtual [base kpToolFlowBase] +QString kpToolEraser::haventBegunDrawUserMessage () const +{ + return i18n ("Click or drag to erase."); +} + +//--------------------------------------------------------------------- + +// See the our corresponding .h for brush selection. + +// Logic is in kpToolFlowPixmapBase. + + diff --git a/tools/flow/kpToolEraser.h b/tools/flow/kpToolEraser.h new file mode 100644 index 0000000..0d8a426 --- /dev/null +++ b/tools/flow/kpToolEraser.h @@ -0,0 +1,55 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_ERASER_H +#define KP_TOOL_ERASER_H + + +#include "kpToolFlowPixmapBase.h" + + +// Eraser = Brush but with foreground & background colors swapped (a few square brushes) +class kpToolEraser : public kpToolFlowPixmapBase +{ +Q_OBJECT + +public: + kpToolEraser (kpToolEnvironment *environ, QObject *parent); + + void globalDraw () override; + + +protected: + QString haventBegunDrawUserMessage () const override; + + bool haveSquareBrushes () const override { return true; } + bool colorsAreSwapped () const override { return true; } +}; + + +#endif // KP_TOOL_ERASER_H diff --git a/tools/flow/kpToolFlowBase.cpp b/tools/flow/kpToolFlowBase.cpp new file mode 100644 index 0000000..23ebb9f --- /dev/null +++ b/tools/flow/kpToolFlowBase.cpp @@ -0,0 +1,492 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_FLOW_BASE 0 + +#include "kpToolFlowBase.h" + +#include + +#include +#include + +#include "kpLogCategories.h" +#include + +#include "imagelib/kpColor.h" +#include "commands/kpCommandHistory.h" +#include "cursors/kpCursorProvider.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "imagelib/kpImage.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "environments/tools/kpToolEnvironment.h" +#include "commands/tools/flow/kpToolFlowCommand.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetBrush.h" +#include "widgets/toolbars/options/kpToolWidgetEraserSize.h" +#include "views/manager/kpViewManager.h" + +//--------------------------------------------------------------------- + +struct kpToolFlowBasePrivate +{ + kpToolWidgetBrush *toolWidgetBrush{}; + kpToolWidgetEraserSize *toolWidgetEraserSize{}; + + + // + // Cursor and Brush Data + // (must be zero if unused) + // + + kpTempImage::UserFunctionType brushDrawFunc{}, cursorDrawFunc{}; + + // Can't use union since package types contain fields requiring + // constructors. + kpToolWidgetBrush::DrawPackage brushDrawPackageForMouseButton [2]; + kpToolWidgetEraserSize::DrawPackage eraserDrawPackageForMouseButton [2]; + + // Each element points to one of the above (both elements from the same + // array). + void *drawPackageForMouseButton [2]{}; + + int brushWidth{}, brushHeight{}; + int cursorWidth{}, cursorHeight{}; + + bool brushIsDiagonalLine{}; + + + kpToolFlowCommand *currentCommand{}; +}; + +//--------------------------------------------------------------------- + +kpToolFlowBase::kpToolFlowBase (const QString &text, const QString &description, + int key, + kpToolEnvironment *environ, QObject *parent, const QString &name) + + : kpTool (text, description, key, environ, parent, name), + d (new kpToolFlowBasePrivate ()) +{ + d->toolWidgetBrush = nullptr; + d->toolWidgetEraserSize = nullptr; + + clearBrushCursorData (); + + d->currentCommand = nullptr; +} + +//--------------------------------------------------------------------- + +kpToolFlowBase::~kpToolFlowBase () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// private +void kpToolFlowBase::clearBrushCursorData () +{ + d->brushDrawFunc = d->cursorDrawFunc = nullptr; + + memset (&d->brushDrawPackageForMouseButton, + 0, + sizeof (d->brushDrawPackageForMouseButton)); + memset (&d->eraserDrawPackageForMouseButton, + 0, + sizeof (d->eraserDrawPackageForMouseButton)); + + memset (&d->drawPackageForMouseButton, + 0, + sizeof (d->drawPackageForMouseButton)); + + d->brushWidth = d->brushHeight = 0; + d->cursorWidth = d->cursorHeight = 0; + + d->brushIsDiagonalLine = false; +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolFlowBase::begin () +{ + kpToolToolBar *tb = toolToolBar (); + Q_ASSERT (tb); + + // TODO: Bad smell. Mutually exclusive. Use inheritance. + if (haveSquareBrushes ()) + { + d->toolWidgetEraserSize = tb->toolWidgetEraserSize (); + connect (d->toolWidgetEraserSize, &kpToolWidgetEraserSize::eraserSizeChanged, + this, &kpToolFlowBase::updateBrushAndCursor); + d->toolWidgetEraserSize->show (); + + updateBrushAndCursor (); + + viewManager ()->setCursor (kpCursorProvider::lightCross ()); + } + else if (haveDiverseBrushes ()) + { + d->toolWidgetBrush = tb->toolWidgetBrush (); + connect (d->toolWidgetBrush, &kpToolWidgetBrush::brushChanged, + this, &kpToolFlowBase::updateBrushAndCursor); + d->toolWidgetBrush->show (); + + updateBrushAndCursor (); + + viewManager ()->setCursor (kpCursorProvider::lightCross ()); + } + + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolFlowBase::end () +{ + if (d->toolWidgetEraserSize) + { + disconnect (d->toolWidgetEraserSize, &kpToolWidgetEraserSize::eraserSizeChanged, + this, &kpToolFlowBase::updateBrushAndCursor); + d->toolWidgetEraserSize = nullptr; + } + else if (d->toolWidgetBrush) + { + disconnect (d->toolWidgetBrush, &kpToolWidgetBrush::brushChanged, + this, &kpToolFlowBase::updateBrushAndCursor); + d->toolWidgetBrush = nullptr; + } + + kpViewManager *vm = viewManager (); + Q_ASSERT (vm); + + if (vm->tempImage () && vm->tempImage ()->isBrush ()) { + vm->invalidateTempImage (); + } + + if (haveAnyBrushes ()) { + vm->unsetCursor (); + } + + clearBrushCursorData (); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolFlowBase::beginDraw () +{ + d->currentCommand = new kpToolFlowCommand (text (), environ ()->commandEnvironment ()); + + // We normally show the brush cursor in the foreground colour but if the + // user starts drawing in the background color, we don't want to leave + // the brush cursor in the foreground colour -- just hide it in all cases + // to avoid confusion. + viewManager ()->invalidateTempImage (); + + setUserMessage (cancelUserMessage ()); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolFlowBase::hover (const QPoint &point) +{ +#if DEBUG_KP_TOOL_FLOW_BASE && 0 + qCDebug(kpLogTools) << "kpToolFlowBase::hover(" << point << ")" + << " hasBegun=" << hasBegun () + << " hasBegunDraw=" << hasBegunDraw () + << " cursorPixmap.isNull=" << m_cursorPixmap.isNull () + << endl; +#endif + if (point != KP_INVALID_POINT && d->cursorDrawFunc) + { + viewManager ()->setFastUpdates (); + + viewManager ()->setTempImage ( + kpTempImage (true/*brush*/, + hotRect ().topLeft (), + d->cursorDrawFunc, d->drawPackageForMouseButton [0/*left button*/], + d->cursorWidth, d->cursorHeight)); + + viewManager ()->restoreFastUpdates (); + } + + setUserShapePoints (point); +} + +//--------------------------------------------------------------------- + +// virtual +QRect kpToolFlowBase::drawPoint (const QPoint &point) +{ + return drawLine (point, point); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolFlowBase::draw (const QPoint &thisPoint, const QPoint &lastPoint, const QRect &normalizedRect) +{ + if (!/*virtual*/drawShouldProceed (thisPoint, lastPoint, normalizedRect)) { + return; + } + + // sync: remember to restoreFastUpdates() in all exit paths + viewManager ()->setFastUpdates (); + + QRect dirtyRect; + + // TODO: I'm beginning to wonder this drawPoint() "optimization" actually + // optimises. Is it worth the complexity? Hence drawPoint() impl above. + if (d->brushIsDiagonalLine ? + currentPointCardinallyNextToLast () : + currentPointNextToLast ()) + { + dirtyRect = drawPoint (thisPoint); + } + // in reality, the system is too slow to give us all the MouseMove events + // so we "interpolate" the missing points :) + else + { + dirtyRect = drawLine (thisPoint, lastPoint); + } + + d->currentCommand->updateBoundingRect (dirtyRect); + + viewManager ()->restoreFastUpdates (); + setUserShapePoints (thisPoint); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolFlowBase::cancelShape () +{ + d->currentCommand->finalize (); + d->currentCommand->cancel (); + + delete d->currentCommand; + d->currentCommand = nullptr; + + updateBrushAndCursor (); + + setUserMessage (i18n ("Let go of all the mouse buttons.")); +} + +//--------------------------------------------------------------------- + +void kpToolFlowBase::releasedAllButtons () +{ + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolFlowBase::endDraw (const QPoint &, const QRect &) +{ + d->currentCommand->finalize (); + environ ()->commandHistory ()->addCommand (d->currentCommand, + false/*don't exec*/); + + // don't delete - it's up to the commandHistory + d->currentCommand = nullptr; + + updateBrushAndCursor (); + + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +// TODO: maybe the base should be virtual? +kpColor kpToolFlowBase::color (int which) +{ +#if DEBUG_KP_TOOL_FLOW_BASE && 0 + qCDebug(kpLogTools) << "kpToolFlowBase::color (" << which << ")"; +#endif + + // Pen & Brush + if (!colorsAreSwapped ()) { + return kpTool::color (which); + } + // only the (Color) Eraser uses the opposite color + return kpTool::color (which ? 0 : 1); // don't trust !0 == 1 +} + +//--------------------------------------------------------------------- + +// protected +kpTempImage::UserFunctionType kpToolFlowBase::brushDrawFunction () const +{ + return d->brushDrawFunc; +} + +//--------------------------------------------------------------------- + +// protected +void *kpToolFlowBase::brushDrawFunctionData () const +{ + return d->drawPackageForMouseButton [mouseButton ()]; +} + + +// protected +int kpToolFlowBase::brushWidth () const +{ + return d->brushWidth; +} + +// protected +int kpToolFlowBase::brushHeight () const +{ + return d->brushHeight; +} + +// protected +bool kpToolFlowBase::brushIsDiagonalLine () const +{ + return d->brushIsDiagonalLine; +} + + +// protected +kpToolFlowCommand *kpToolFlowBase::currentCommand () const +{ + return d->currentCommand; +} + +//--------------------------------------------------------------------- + +// protected slot +void kpToolFlowBase::updateBrushAndCursor () +{ +#if DEBUG_KP_TOOL_FLOW_BASE && 1 + qCDebug(kpLogTools) << "kpToolFlowBase::updateBrushAndCursor()"; +#endif + + if (haveSquareBrushes ()) + { + d->brushDrawFunc = d->toolWidgetEraserSize->drawFunction (); + d->cursorDrawFunc = d->toolWidgetEraserSize->drawCursorFunction (); + + for (int i = 0; i < 2; i++) + { + d->drawPackageForMouseButton [i] = + &(d->eraserDrawPackageForMouseButton [i] = + d->toolWidgetEraserSize->drawFunctionData (color (i))); + } + + d->brushWidth = d->brushHeight = + d->cursorWidth = d->cursorHeight = + d->toolWidgetEraserSize->eraserSize (); + + d->brushIsDiagonalLine = false; + } + else if (haveDiverseBrushes ()) + { + d->brushDrawFunc = d->cursorDrawFunc = d->toolWidgetBrush->drawFunction (); + + for (int i = 0; i < 2; i++) + { + d->drawPackageForMouseButton [i] = + &(d->brushDrawPackageForMouseButton [i] = + d->toolWidgetBrush->drawFunctionData (color (i))); + } + + d->brushWidth = d->brushHeight = + d->cursorWidth = d->cursorHeight = + d->toolWidgetBrush->brushSize (); + + d->brushIsDiagonalLine = d->toolWidgetBrush->brushIsDiagonalLine (); + } + + hover (hasBegun () ? currentPoint () : calculateCurrentPoint ()); +} + +//--------------------------------------------------------------------- + +// virtual private slot +void kpToolFlowBase::slotForegroundColorChanged (const kpColor & /*col*/) +{ +#if DEBUG_KP_TOOL_FLOW_BASE + qCDebug(kpLogTools) << "kpToolFlowBase::slotForegroundColorChanged()"; +#endif + + updateBrushAndCursor (); +} + +//--------------------------------------------------------------------- + +// virtual private slot +void kpToolFlowBase::slotBackgroundColorChanged (const kpColor & /*col*/) +{ +#if DEBUG_KP_TOOL_FLOW_BASE + qCDebug(kpLogTools) << "kpToolFlowBase::slotBackgroundColorChanged()"; +#endif + + updateBrushAndCursor (); +} + +//--------------------------------------------------------------------- + +// public static +QRect kpToolFlowBase::hotRectForMousePointAndBrushWidthHeight ( + const QPoint &mousePoint, + int brushWidth, int brushHeight) +{ + /* + * e.g. + * Width 5: + * 0 1 2 3 4 + * ^ + * | + * Center + */ + return {mousePoint.x () - brushWidth / 2, + mousePoint.y () - brushHeight / 2, + brushWidth, brushHeight}; +} + +//--------------------------------------------------------------------- + +// protected +QRect kpToolFlowBase::hotRect () const +{ + return hotRectForMousePointAndBrushWidthHeight (currentPoint (), + d->brushWidth, d->brushHeight); +} + +//--------------------------------------------------------------------- + diff --git a/tools/flow/kpToolFlowBase.h b/tools/flow/kpToolFlowBase.h new file mode 100644 index 0000000..ac41d72 --- /dev/null +++ b/tools/flow/kpToolFlowBase.h @@ -0,0 +1,120 @@ + +/* + Copyright(c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_FLOW_BASE_H +#define KP_TOOL_FLOW_BASE_H + + +#include + +#include "layers/tempImage/kpTempImage.h" +#include "tools/kpTool.h" + + +class QPoint; +class QString; + +class kpColor; +class kpToolFlowCommand; + + +class kpToolFlowBase : public kpTool +{ + Q_OBJECT + + public: + kpToolFlowBase(const QString &text, const QString &description, + int key, + kpToolEnvironment *environ, QObject *parent, const QString &name); + + ~kpToolFlowBase() override; + + // Returns the dirty rectangle for drawing a brush(of size + // x) at . will end + // up being the midpoint of the returned rectangle(subject to integer + // precision). + static QRect hotRectForMousePointAndBrushWidthHeight( + const QPoint &mousePoint, + int brushWidth, int brushHeight); + + void begin() override; + void end() override; + + void beginDraw() override; + void hover(const QPoint &point) override; + + // drawPoint() normally calls drawLine(point,point). Override drawPoint() + // if you think you can be more efficient. + virtual QRect drawPoint(const QPoint &point); + virtual QRect drawLine(const QPoint &thisPoint, const QPoint &lastPoint) = 0; + + virtual bool drawShouldProceed(const QPoint & /*thisPoint*/, const QPoint & /*lastPoint*/, const QRect & /*normalizedRect*/) { return true; } + void draw(const QPoint &thisPoint, const QPoint &lastPoint, const QRect &normalizedRect) override; + void cancelShape() override; + void releasedAllButtons() override; + void endDraw(const QPoint &, const QRect &) override; + + protected: + virtual QString haventBegunDrawUserMessage() const = 0; + + virtual bool haveSquareBrushes() const { return false; } + virtual bool haveDiverseBrushes() const { return false; } + bool haveAnyBrushes() const + { + return(haveSquareBrushes() || haveDiverseBrushes()); + } + + virtual bool colorsAreSwapped() const { return false; } + + kpTempImage::UserFunctionType brushDrawFunction() const; + void *brushDrawFunctionData() const; + + int brushWidth() const; + int brushHeight() const; + + bool brushIsDiagonalLine() const; + + kpToolFlowCommand *currentCommand() const; + virtual kpColor color(int which); + QRect hotRect() const; + + protected slots: + void updateBrushAndCursor(); + + void slotForegroundColorChanged(const kpColor &col) override; + void slotBackgroundColorChanged(const kpColor &col) override; + + private: + void clearBrushCursorData(); + + private: + struct kpToolFlowBasePrivate *d; +}; + + +#endif // KP_TOOL_FLOW_BASE_H diff --git a/tools/flow/kpToolFlowPixmapBase.cpp b/tools/flow/kpToolFlowPixmapBase.cpp new file mode 100644 index 0000000..0c21477 --- /dev/null +++ b/tools/flow/kpToolFlowPixmapBase.cpp @@ -0,0 +1,81 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpToolFlowPixmapBase.h" + +#include "imagelib/kpColor.h" +#include "document/kpDocument.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "commands/tools/flow/kpToolFlowCommand.h" + +//--------------------------------------------------------------------- + +kpToolFlowPixmapBase::kpToolFlowPixmapBase (const QString &text, const QString &description, + int key, + kpToolEnvironment *environ, QObject *parent, const QString &name) + : kpToolFlowBase (text, description, key, environ, parent, name) +{ +} + +//--------------------------------------------------------------------- + +QRect kpToolFlowPixmapBase::drawLine (const QPoint &thisPoint, const QPoint &lastPoint) +{ + QRect docRect = kpPainter::normalizedRect(thisPoint, lastPoint); + docRect = neededRect (docRect, qMax (brushWidth (), brushHeight ())); + kpImage image = document ()->getImageAt (docRect); + + + QList points = kpPainter::interpolatePoints (lastPoint, thisPoint, + brushIsDiagonalLine ()); + + foreach (const QPoint &p, points) + { + const QPoint point = + hotRectForMousePointAndBrushWidthHeight(p, brushWidth(), brushHeight()) + .topLeft() - docRect.topLeft(); + + // OPT: This may be redrawing pixels that were drawn on a previous + // iteration, since the brush is usually bigger than 1 pixel. + // Maybe we could use QRegion to determine all the non-intersecting + // regions and only draw each region once. + // + // Try this at least for the easy case of the Eraser, which has + // square, simply-filled brushes. Profiling needs to be done as + // QRegion is known to be a CPU hog. + brushDrawFunction () (&image, point, brushDrawFunctionData ()); + } + + + document ()->setImageAt (image, docRect.topLeft ()); + return docRect; +} + +//--------------------------------------------------------------------- + diff --git a/tools/flow/kpToolFlowPixmapBase.h b/tools/flow/kpToolFlowPixmapBase.h new file mode 100644 index 0000000..fc9f74e --- /dev/null +++ b/tools/flow/kpToolFlowPixmapBase.h @@ -0,0 +1,58 @@ + +// REFACTOR: Rename to kpAbstractFlowImageTool, and use kpImage instead of QPixmap + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_FLOW_PIXMAP_BASE_H +#define KP_TOOL_FLOW_PIXMAP_BASE_H + + +#include "kpToolFlowBase.h" + + +/** + * @short Abstract base call for all continuous tools that draw pixmaps + * (e.g. Brush, Eraser). + * + * @author Clarence Dang + */ +class kpToolFlowPixmapBase : public kpToolFlowBase +{ +Q_OBJECT + +public: + kpToolFlowPixmapBase (const QString &text, const QString &description, + int key, + kpToolEnvironment *environ, QObject *parent, const QString &name); + +protected: + QRect drawLine (const QPoint &thisPoint, const QPoint &lastPoint) override; +}; + + +#endif // KP_TOOL_FLOW_PIXMAP_BASE_H diff --git a/tools/flow/kpToolPen.cpp b/tools/flow/kpToolPen.cpp new file mode 100644 index 0000000..816041f --- /dev/null +++ b/tools/flow/kpToolPen.cpp @@ -0,0 +1,84 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2017 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpToolPen.h" + +#include "imagelib/kpColor.h" +#include "document/kpDocument.h" +#include "imagelib/kpImage.h" +#include "imagelib/kpPainter.h" +#include "commands/tools/flow/kpToolFlowCommand.h" +#include "environments/tools/kpToolEnvironment.h" + +#include + +#include +#include + +//--------------------------------------------------------------------- + +kpToolPen::kpToolPen (kpToolEnvironment *environ, QObject *parent) + : kpToolFlowBase (i18n ("Pen"), i18n ("Draws dots and freehand strokes"), + Qt::Key_P, + environ, parent, QStringLiteral("tool_pen")) +{ +} + +//--------------------------------------------------------------------- + +// protected virtual [base kpToolFlowBase] +QString kpToolPen::haventBegunDrawUserMessage () const +{ + return i18n ("Click to draw dots or drag to draw strokes."); +} + +//--------------------------------------------------------------------- + +// protected virtual [base kpToolFlowBase] +QRect kpToolPen::drawLine (const QPoint &thisPoint, const QPoint &lastPoint) +{ + QRect docRect = kpPainter::normalizedRect(thisPoint, lastPoint); + docRect = neededRect (docRect, 1/*pen width*/); + kpImage image = document ()->getImageAt (docRect); + + const QPoint sp = lastPoint - docRect.topLeft (), + ep = thisPoint - docRect.topLeft (); + + QPainter painter(&image); + + // never use AA - it does not look good for the usually very short lines + //painter.setRenderHint(QPainter::Antialiasing, kpToolEnvironment::drawAntiAliased); + + painter.setPen(color(mouseButton()).toQColor()); + painter.drawLine(sp, ep); + + document ()->setImageAt (image, docRect.topLeft ()); + return docRect; +} + +//-------------------------------------------------------------------------------- diff --git a/tools/flow/kpToolPen.h b/tools/flow/kpToolPen.h new file mode 100644 index 0000000..8aff875 --- /dev/null +++ b/tools/flow/kpToolPen.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_PEN_H +#define KP_TOOL_PEN_H + + +#include "kpToolFlowBase.h" + + +// Pen = draws pixels, "interpolates" by "sweeping" pixels along a line (no brushes) +class kpToolPen : public kpToolFlowBase +{ +Q_OBJECT + +public: + kpToolPen (kpToolEnvironment *environ, QObject *parent); + +protected: + QString haventBegunDrawUserMessage () const override; + QRect drawLine (const QPoint &thisPoint, const QPoint &lastPoint) override; +}; + + +#endif // KP_TOOL_PEN_H diff --git a/tools/flow/kpToolSpraycan.cpp b/tools/flow/kpToolSpraycan.cpp new file mode 100644 index 0000000..9d8b260 --- /dev/null +++ b/tools/flow/kpToolSpraycan.cpp @@ -0,0 +1,259 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SPRAYCAN 0 + +#include "kpToolSpraycan.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "environments/tools/kpToolEnvironment.h" +#include "commands/tools/flow/kpToolFlowCommand.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetSpraycanSize.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include + +#include "kpLogCategories.h" +#include + +#include +#include +#include + +//--------------------------------------------------------------------- + +kpToolSpraycan::kpToolSpraycan (kpToolEnvironment *environ, QObject *parent) + : kpToolFlowBase (i18n ("Spraycan"), i18n ("Sprays graffiti"), + Qt::Key_Y, + environ, parent, QStringLiteral("tool_spraycan")), + m_toolWidgetSpraycanSize(nullptr) +{ + m_timer = new QTimer (this); + m_timer->setInterval (25/*ms*/); + connect (m_timer, &QTimer::timeout, this, &kpToolSpraycan::timeoutDraw); +} + +//--------------------------------------------------------------------- + +// protected virtual [base kpToolFlowBase] +QString kpToolSpraycan::haventBegunDrawUserMessage () const +{ + return i18n ("Click or drag to spray graffiti."); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpToolFlowBase] +void kpToolSpraycan::begin () +{ + kpToolToolBar *tb = toolToolBar (); + Q_ASSERT (tb); + + m_toolWidgetSpraycanSize = tb->toolWidgetSpraycanSize (); + connect (m_toolWidgetSpraycanSize, &kpToolWidgetSpraycanSize::spraycanSizeChanged, + this, &kpToolSpraycan::slotSpraycanSizeChanged); + m_toolWidgetSpraycanSize->show (); + + kpToolFlowBase::begin (); +} + +// public virtual [base kpToolFlowBase] +void kpToolSpraycan::end () +{ + kpToolFlowBase::end (); + + disconnect (m_toolWidgetSpraycanSize, &kpToolWidgetSpraycanSize::spraycanSizeChanged, + this, &kpToolSpraycan::slotSpraycanSizeChanged); + + m_toolWidgetSpraycanSize = nullptr; +} + + +// public virtual [base kpToolFlowBase] +void kpToolSpraycan::beginDraw () +{ +#if DEBUG_KP_TOOL_SPRAYCAN + qCDebug(kpLogTools) << "kpToolSpraycan::beginDraw()"; +#endif + + kpToolFlowBase::beginDraw (); + + // We draw even if the user doesn't move the mouse. + // We still timeout-draw even if the user _does_ move the mouse. + m_timer->start (); +} + + +// protected +QRect kpToolSpraycan::drawLineWithProbability (const QPoint &thisPoint, + const QPoint &lastPoint, + double probability) +{ +#if DEBUG_KP_TOOL_SPRAYCAN + qCDebug(kpLogTools) << "CALL(thisPoint=" << thisPoint + << ",lastPoint=" << lastPoint + << ")"; +#endif + + QList docPoints = kpPainter::interpolatePoints (lastPoint, thisPoint, + false/*no need for cardinally adjacency points*/, + probability); +#if DEBUG_KP_TOOL_SPRAYCAN + qCDebug(kpLogTools) << "\tdocPoints=" << docPoints; +#endif + + + // By chance no points to draw? + if (docPoints.empty ()) { + return {}; + } + + + // For efficiency, only get image after NOP check above. + QRect docRect = kpPainter::normalizedRect(thisPoint, lastPoint); + docRect = neededRect (docRect, spraycanSize ()); + kpImage image = document ()->getImageAt (docRect); + + + // Spray at each point, onto the image. + // + // Note in passing: Unlike other tools such as the Brush, drawing + // over the same point does result in a different + // appearance. + + QList imagePoints; + for (const auto &dp : docPoints) + imagePoints.append (dp - docRect.topLeft ()); + + kpPainter::sprayPoints (&image, + imagePoints, + color (mouseButton ()), + spraycanSize ()); + + + viewManager ()->setFastUpdates (); + document ()->setImageAt (image, docRect.topLeft ()); + viewManager ()->restoreFastUpdates (); + + + return docRect; +} + +// public virtual [base kpToolFlowBase] +QRect kpToolSpraycan::drawPoint (const QPoint &point) +{ +#if DEBUG_KP_TOOL_SPRAYCAN + qCDebug(kpLogTools) << "kpToolSpraycan::drawPoint" << point + << " lastPoint=" << lastPoint (); +#endif + + // If this is the first in the flow or if the user is moving the spray, + // make the spray line continuous. + if (point != lastPoint ()) + { + // Draw at this single point without delay. + return drawLineWithProbability (point, point, + 1.0/*100% chance of drawing*/); + } + + return {}; +} + +// public virtual [base kpToolFlowBase] +QRect kpToolSpraycan::drawLine (const QPoint &thisPoint, const QPoint &lastPoint) +{ +#if DEBUG_KP_TOOL_SPRAYCAN + qCDebug(kpLogTools) << "CALL(thisPoint=" << thisPoint << ",lastPoint=" << lastPoint; +#endif + + // Draw only every so often in response to movement. + return drawLineWithProbability (thisPoint, lastPoint, + 0.05/*less dense: select 5% of adjacent pixels - not all*/); +} + +// protected slot +void kpToolSpraycan::timeoutDraw () +{ +#if DEBUG_KP_TOOL_SPRAYCAN + qCDebug(kpLogTools) << "kpToolSpraycan::timeoutDraw()"; +#endif + + // Draw at this single point without delay. + const QRect drawnRect = drawLineWithProbability (currentPoint (), currentPoint (), + 1.0/*100% chance of drawing*/); + + // kpToolFlowBase() does this after calling drawPoint() and drawLine() so + // we need to do it too. + currentCommand ()->updateBoundingRect (drawnRect); +} + + +// public virtual [base kpToolFlowBase] +void kpToolSpraycan::cancelShape () +{ +#if DEBUG_KP_TOOL_SPRAYCAN + qCDebug(kpLogTools) << "kpToolSpraycan::cancelShape()"; +#endif + + m_timer->stop (); + kpToolFlowBase::cancelShape (); +} + +// public virtual [base kpToolFlowBase] +void kpToolSpraycan::endDraw (const QPoint &thisPoint, + const QRect &normalizedRect) +{ +#if DEBUG_KP_TOOL_SPRAYCAN + qCDebug(kpLogTools) << "kpToolSpraycan::endDraw(thisPoint=" << thisPoint + << ")"; +#endif + + m_timer->stop (); + kpToolFlowBase::endDraw (thisPoint, normalizedRect); +} + + +// protected +int kpToolSpraycan::spraycanSize () const +{ + return m_toolWidgetSpraycanSize->spraycanSize (); +} + +// protected slot +void kpToolSpraycan::slotSpraycanSizeChanged (int size) +{ + (void) size; +} + + + diff --git a/tools/flow/kpToolSpraycan.h b/tools/flow/kpToolSpraycan.h new file mode 100644 index 0000000..06bc120 --- /dev/null +++ b/tools/flow/kpToolSpraycan.h @@ -0,0 +1,90 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_SPRAYCAN_H +#define KP_TOOL_SPRAYCAN_H + + +#include "kpToolFlowBase.h" + + +class QPoint; +class QRect; +class QString; +class QTimer; + +class kpToolWidgetSpraycanSize; + + +class kpToolSpraycan : public kpToolFlowBase +{ +Q_OBJECT + +public: + kpToolSpraycan (kpToolEnvironment *environ, QObject *parent); + +protected: + QString haventBegunDrawUserMessage () const override; + + +public: + void begin () override; + void end () override; + + +public: + void beginDraw () override; +protected: + // (ASSUMPTION: is between 0.0 and 1.0 inclusive) + QRect drawLineWithProbability (const QPoint &thisPoint, + const QPoint &lastPoint, + double probability); +public: + QRect drawPoint (const QPoint &point) override; + QRect drawLine (const QPoint &thisPoint, const QPoint &lastPoint) override; + void cancelShape () override; + void endDraw (const QPoint &thisPoint, + const QRect &normalizedRect) override; + +protected slots: + void timeoutDraw (); + + +protected: + int spraycanSize () const; +protected slots: + void slotSpraycanSizeChanged (int size); + + +protected: + QTimer *m_timer; + kpToolWidgetSpraycanSize *m_toolWidgetSpraycanSize; +}; + + +#endif // KP_TOOL_SPRAYCAN_H diff --git a/tools/kpTool.cpp b/tools/kpTool.cpp new file mode 100644 index 0000000..42c4e74 --- /dev/null +++ b/tools/kpTool.cpp @@ -0,0 +1,262 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// +// Tool initialisation and basic accessors. +// + +#define DEBUG_KP_TOOL 0 + +#include "kpTool.h" +#include "kpToolPrivate.h" + +#include + +#include +#include "kpLogCategories.h" +#include + +#include "imagelib/kpColor.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "tools/kpToolAction.h" +#include "environments/tools/kpToolEnvironment.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" +#undef environ // macro on win32 + +//--------------------------------------------------------------------- + +kpTool::kpTool(const QString &text, const QString &description, + int key, + kpToolEnvironment *environ, + QObject *parent, const QString &name) + : QObject(parent), + d(new kpToolPrivate()) +{ + d->key = key; + d->action = nullptr; + d->ignoreColorSignals = 0; + d->shiftPressed = false; + d->controlPressed = false; + d->altPressed = false; // set in beginInternal() + d->beganDraw = false; + d->text = text; + d->description = description; + d->began = false; + d->viewUnderStartPoint = nullptr; + d->userShapeStartPoint = KP_INVALID_POINT; + d->userShapeEndPoint = KP_INVALID_POINT; + d->userShapeSize = KP_INVALID_SIZE; + + d->environ = environ; + + setObjectName(name); + initAction(); +} + +//--------------------------------------------------------------------- + +kpTool::~kpTool () +{ + // before destructing, stop using the tool + if (d->began) { + endInternal (); + } + + delete d->action; + + delete d; +} + +//--------------------------------------------------------------------- + +// private +void kpTool::initAction () +{ + KActionCollection *ac = d->environ->actionCollection (); + Q_ASSERT (ac); + + d->action = new kpToolAction(text(), objectName(), shortcutForKey(d->key), + this, SIGNAL(actionActivated()), + ac, objectName()); + + // Make tools mutually exclusive by placing them in the same group. + d->action->setActionGroup(d->environ->toolsActionGroup ()); + + d->action->setWhatsThis(d->description); + + connect (d->action, &kpToolAction::changed, this, &kpTool::actionToolTipChanged); +} + +//--------------------------------------------------------------------- +// public + +QString kpTool::text () const +{ + return d->text; +} + +//--------------------------------------------------------------------- + +static bool KeyIsText (int key) +{ + // TODO: should work like !QKeyEvent::text().isEmpty() + return !(static_cast (key) & (Qt::KeyboardModifierMask ^ Qt::ShiftModifier)); +} + +//--------------------------------------------------------------------- + +// public static +QString kpTool::toolTipForTextAndShortcut (const QString &text, + const QList &shortcut) +{ + for(const auto &seq : shortcut) + { + if (seq.count () == 1 && ::KeyIsText (seq [0])) { + return i18nc (" ()", "%1 (%2)", text, seq.toString ().toUpper ()); + } + } + + return text; +} + +//--------------------------------------------------------------------- + +QString kpTool::toolTip () const +{ + return toolTipForTextAndShortcut(d->text, d->action->shortcuts()); +} + +//--------------------------------------------------------------------- +// public static + +QList kpTool::shortcutForKey (int key) +{ + QList shortcut; + + if (key) + { + shortcut.append (QKeySequence (key)); + // (CTRL+, ALT+, CTRL+ALT+, CTRL+SHIFT+ + // all clash with global KDE shortcuts) + shortcut.append (QKeySequence (static_cast(Qt::ALT) + static_cast(Qt::SHIFT) + key)); + } + + return shortcut; +} + +//--------------------------------------------------------------------- +// public + +kpToolAction *kpTool::action () const +{ + return d->action; +} + +//--------------------------------------------------------------------- + +kpDocument *kpTool::document () const +{ + return d->environ->document (); +} + +//--------------------------------------------------------------------- + +kpViewManager *kpTool::viewManager () const +{ + return d->environ->viewManager (); +} + +//--------------------------------------------------------------------- + +kpToolToolBar *kpTool::toolToolBar () const +{ + return d->environ->toolToolBar (); +} + +//--------------------------------------------------------------------- + +kpColor kpTool::color (int which) const +{ + return d->environ->color (which); +} + +//--------------------------------------------------------------------- + +kpColor kpTool::foregroundColor () const +{ + return color (0); +} + +//--------------------------------------------------------------------- + +kpColor kpTool::backgroundColor () const +{ + return color (1); +} + +//--------------------------------------------------------------------- + +// TODO: Some of these might not be common enough. +// Just put in kpToolEnvironment? + +double kpTool::colorSimilarity () const +{ + return d->environ->colorSimilarity (); +} + +int kpTool::processedColorSimilarity () const +{ + return d->environ->processedColorSimilarity (); +} + + +kpColor kpTool::oldForegroundColor () const +{ + return d->environ->oldForegroundColor (); +} + +kpColor kpTool::oldBackgroundColor () const +{ + return d->environ->oldBackgroundColor (); +} + +double kpTool::oldColorSimilarity () const +{ + return d->environ->oldColorSimilarity (); +} + +kpCommandHistory *kpTool::commandHistory () const +{ + return d->environ->commandHistory (); +} + + +kpToolEnvironment *kpTool::environ () const +{ + return d->environ; +} diff --git a/tools/kpTool.h b/tools/kpTool.h new file mode 100644 index 0000000..a6abd71 --- /dev/null +++ b/tools/kpTool.h @@ -0,0 +1,464 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_H +#define KP_TOOL_H + + +#include +#include +#include +#include +#include + +#include "kpDefs.h" +#ifdef Q_OS_WIN + #include + #undef environ // macro on win32 +#endif + + +class QFocusEvent; +class QInputMethodEvent; +class QKeyEvent; +class QMouseEvent; +class QImage; +class QWheelEvent; + +class kpColor; +class kpCommandHistory; +class kpDocument; +class kpView; +class kpViewManager; +class kpToolAction; +class kpToolEnvironment; +class kpToolToolBar; + + +struct kpToolPrivate; + +// Base class for all tools. +// REFACTOR: rearrange method order to make sense and reflect kpTool_*.cpp split. +class kpTool : public QObject +{ +Q_OBJECT + +public: + // = user-visible name of the tool e.g. "Color Picker" + // = user-visible description used for tooltips + // e.g. "Lets you select a color from the image" + // = optional shortcut key for switching to the tool, or 0 otherwise + // e.g. Qt::Key_C + // = internal QObject name (not user-visible) e.g. "tool_color_picker" + // used for fetching the icon(), the name of the action() and + // debug printing. + kpTool (const QString &text, const QString &description, + int key, + kpToolEnvironment *environ, + QObject *parent, const QString &name); + ~kpTool () override; + + kpToolAction *action () const; + + QString text () const; + + static QString toolTipForTextAndShortcut (const QString &text, const QList &shortcut); + QString toolTip () const; + + // Given a single , returns a shortcut with + // (disabled when the user is editing text) and as an alternate, + // +. + static QList shortcutForKey (int key); + + static QRect neededRect (const QRect &rect, int lineWidth); + static QImage neededPixmap (const QImage &image, const QRect &boundingRect); + + bool hasCurrentPoint () const; + // Returns the position of the cursor relative to the topleft point of + // the current view (viewUnderStartPoint() or viewUnderCursor() otherwise). + // + // If neither viewUnderStartPoint() nor viewUnderCursor() + // (i.e. !hasCurrentPoint()), then it returns KP_INVALID_POINT. + // + // If is set (default), then it returns the position in the + // document. This theoretically == m_currentPoint (when m_currentPoint + // is defined) but I wouldn't bet on it. This function is useful when + // m_currentPoint isn't necessarily defined (outside of beginDraw(),draw() + // and hover()). + // + // If is not set, then it returns an unzoomed view coordinate. + // + // Keep in mind that if viewUnderStartPoint(), this can return coordinates + // outside of the document/view. + QPoint calculateCurrentPoint (bool zoomToDoc = true) const; + +private: + // Only called by ctor to create action(). + void initAction (); + +signals: + void actionToolTipChanged(); + +public slots: + // Call this when something below the mouse cursor may have changed + // and/or if the view has moved relative to the cursor (as opposed to + // the cursor moving relative to the view, which would trigger a + // mouseMoveEvent and all would be well without such hacks) + // e.g. when zooming or scrolling the view or when deleting a selection. + // + // This calls hover() or draw() to let the tool know. The Brush Tool + // can then update the position of the Brush Cursor. The Selection + // Tool can update the real cursor. The Line Tool can update the current + // line. The statubar gets correct coordinates. etc. etc. + void somethingBelowTheCursorChanged (); + +private: + // Same as above except that you claim you know better than currentPoint() + void somethingBelowTheCursorChanged (const QPoint ¤tPoint_, + const QPoint ¤tViewPoint_); + +protected: + int mouseButton () const; + + bool shiftPressed () const; + bool controlPressed () const; + bool altPressed () const; + + QPoint startPoint () const; + + QPoint currentPoint () const; + QPoint currentViewPoint () const; + + QRect normalizedRect () const; + + QPoint lastPoint () const; + +public: // for kpMainWindow + kpView *viewUnderStartPoint () const; + +protected: + kpView *viewUnderCursor () const; + +public: + // Called when the tool is selected. + virtual void begin (); + + // Called when the tool is deselected. + virtual void end (); + + // Returns true after begin() has been called but returns false after end() + // after end() has been called. + bool hasBegun () const; + + bool hasBegunDraw () const; + + virtual bool hasBegunShape () const; + + // Called when user double-left-clicks on a tool in the Tool Box. + virtual void globalDraw (); + + // Called when the user clicks on a tool in the Tool Box even though it's + // already the current tool (used by the selection tools to deselect). + virtual void reselect (); + +signals: + // emitted after beginDraw() has been called + void beganDraw (const QPoint &point); + + // Emitted just before draw() is called in mouseMoveEvent(). Slots + // connected to this signal should return in whether the + // mouse pos may have changed. Used by drag scrolling. + void movedAndAboutToDraw (const QPoint ¤tPoint, const QPoint &lastPoint, + int zoomLevel, + bool *scrolled); + + // emitted after endDraw() has been called + void endedDraw (const QPoint &point); + + // emitted after cancelShape() has been called + void cancelledShape (const QPoint &point); + +signals: + // User clicked on the tool's action - i.e. select this tool + void actionActivated(); + +protected: + // (this method is called by kpTool just as it is needed - its value + // is not cached, so it is allowed to return different things at + // different times) + // REFACTOR: Misleadingly named as it's also called in cancelShapeInternal(). + // And it seems to be called in endShapeInternal() as well? + virtual bool returnToPreviousToolAfterEndDraw () const { return false; } + + virtual bool careAboutModifierState () const { return false; } + virtual bool careAboutColorsSwapped () const { return false; } + + virtual void beginDraw (); + + // mouse move without button pressed + // (only m_currentPoint & m_currentViewPoint is defined) + virtual void hover (const QPoint &point); + + // this is useful for "instant" tools like the Pen & Eraser + virtual void draw (const QPoint &thisPoint, const QPoint &lastPoint, + const QRect &normalizedRect); + +private: + void drawInternal (); + +protected: + // (m_mouseButton will not change from beginDraw()) + virtual void cancelShape (); + virtual void releasedAllButtons (); + + virtual void endDraw (const QPoint &thisPoint, const QRect &normalizedRect); + + // TODO: I think reimplementations of this should be calling this base + // implementation, so that endDraw() happens before the custom + // endShape() logic of the reimplementation. + virtual void endShape (const QPoint &thisPoint = QPoint (), + const QRect &normalizedRect = QRect ()) + { + endDraw (thisPoint, normalizedRect); + } + + kpDocument *document () const; + kpViewManager *viewManager () const; + kpToolToolBar *toolToolBar () const; + kpCommandHistory *commandHistory () const; + kpToolEnvironment *environ () const; + + kpColor color (int which) const; + + kpColor foregroundColor () const; + kpColor backgroundColor () const; + + double colorSimilarity () const; + int processedColorSimilarity () const; + +public slots: + void slotColorsSwappedInternal (const kpColor &newForegroundColor, + const kpColor &newBackgroundColor); + void slotForegroundColorChangedInternal (const kpColor &color); + void slotBackgroundColorChangedInternal (const kpColor &color); + void slotColorSimilarityChangedInternal (double similarity, int processedSimilarity); + +protected slots: // TODO: there is no reason why these should be slots + virtual void slotColorsSwapped (const kpColor & /*newForegroundColor*/, const kpColor & /*newBackgroundColor*/) {} + virtual void slotForegroundColorChanged (const kpColor & /*color*/) {} + virtual void slotBackgroundColorChanged (const kpColor & /*color*/) {} + virtual void slotColorSimilarityChanged (double /*similarity*/, int /*processedSimilarity*/) {} + +protected: + // (only valid in slots connected to the respective signals above) + kpColor oldForegroundColor () const; + kpColor oldBackgroundColor () const; + double oldColorSimilarity () const; + +protected: + // returns true if m_currentPoint <= 1 pixel away from m_lastPoint + // or if there was no lastPoint + bool currentPointNextToLast () const; // (includes diagonal adjacency) + bool currentPointCardinallyNextToLast () const; // (only cardinally adjacent i.e. horiz & vert; no diag) + +// TODO: We should rename these. +// These are accessed from kpTool logic and our friends, kpCommandHistory, +// kpMainWindow, kpToolToolBar and kpView. +public: + void beginInternal (); + void endInternal (); + + void beginDrawInternal (); + void endDrawInternal (const QPoint &thisPoint, const QRect &normalizedRect, + bool wantEndShape = false); + void cancelShapeInternal (); + // TODO: Who is actually calling endShapeInternal()? + // Tools seem to call endShape() directly. + void endShapeInternal (const QPoint &thisPoint = QPoint (), + const QRect &normalizedRect = QRect ()); + + +// +// Mouse Events +// + +public: + // Note: _All_ events are forwarded from a kpView. + // The existence of a kpView implies the existence of a kpDocument. + + // If you're reimplementing any of these, you probably don't know what + // you're doing - reimplement begin(),beginDraw(),draw(),cancelShape(), + // endDraw() etc. instead. + virtual void mousePressEvent (QMouseEvent *e); + virtual void mouseMoveEvent (QMouseEvent *e); + virtual void mouseReleaseEvent (QMouseEvent *e); + + virtual void wheelEvent (QWheelEvent *e); + + +// +// Keyboard Events +// + +protected: + void seeIfAndHandleModifierKey (QKeyEvent *e); + + void arrowKeyPressDirection (const QKeyEvent *e, int *dx, int *dy); + void seeIfAndHandleArrowKeyPress (QKeyEvent *e); + + bool isDrawKey (int key); + void seeIfAndHandleBeginDrawKeyPress (QKeyEvent *e); + void seeIfAndHandleEndDrawKeyPress (QKeyEvent *e); + +public: + virtual void keyPressEvent (QKeyEvent *e); + virtual void keyReleaseEvent (QKeyEvent *e); + + virtual void inputMethodEvent (QInputMethodEvent *) {} + +private: + void keyUpdateModifierState (QKeyEvent *e); + void notifyModifierStateChanged (); + +protected: + virtual void setShiftPressed (bool pressed); + virtual void setControlPressed (bool pressed); + + virtual void setAltPressed (bool pressed); + + +// +// Other Events - 1. View Events +// + +public: + // WARNING: Do not call this "event()" as our QObject parent has a + // virtual function called that, that will pass us + // QObject events. We only care about events forwarded by + // kpView. + // REFACTOR: rename mousePressEvent() -> viewMousePressEvent() etc. + // to remind us that events are coming from the view - the tool + // is not a visible object. + virtual bool viewEvent (QEvent *e); + +public: + virtual void focusInEvent (QFocusEvent *e); + virtual void focusOutEvent (QFocusEvent *e); + +public: + virtual void enterEvent (QEvent *e); + virtual void leaveEvent (QEvent *e); + + +// +// Other Events - 2. Non-view Events +// REFACTOR: Group methods under this. +// + +protected: + // 0 = left, 1 = right, -1 = other (none, left+right, mid) + static int mouseButton (Qt::MouseButtons mouseButtons); + +public: + static int calculateLength (int start, int end); + + // + // User Notifications (Status Bar) + // + +public: + // Returns "(Left|Right) click to cancel." where Left or Right is chosen + // depending on which one is the _opposite_ of + static QString cancelUserMessage (int mouseButton); + QString cancelUserMessage () const; + + QString userMessage () const; + // WARNING: setUserMessage() will store a message different to , + // in unspecified ways (e.g. the name of the tool, followed + // by a colon and a space, will be prepended). userMessage() + // will return this different string. + void setUserMessage (const QString &userMessage = QString ()); + + QPoint userShapeStartPoint () const; + QPoint userShapeEndPoint () const; + void setUserShapePoints (const QPoint &startPoint = KP_INVALID_POINT, + const QPoint &endPoint = KP_INVALID_POINT, + bool setSize = true); + + QSize userShapeSize () const; + int userShapeWidth () const; + int userShapeHeight () const; + void setUserShapeSize (const QSize &size = KP_INVALID_SIZE); + void setUserShapeSize (int width, int height); + +signals: + void userMessageChanged (const QString &userMessage); + void userShapePointsChanged (const QPoint &startPoint = KP_INVALID_POINT, + const QPoint &endPoint = KP_INVALID_POINT); + void userShapeSizeChanged (const QSize &size); + + +public: + // Call this before the user tries to cause the document or selection + // to resize from x to x. + // If at least one dimension increases, the new dimensions will take a + // large amount of memory (which causes thrashing, instability) and + // the old dimensions did not take a large amount of memory, ask the + // user if s/he really wants to perform the operation. + // + // Returns true if the operation should proceed, false otherwise. + // + // In order to make the translators' lives possible, this function cannot + // generate the , nor (without + // concantenating sentences and words with tense). However, it is + // recommended that you give them the following values: + // + // e.g.: + // text = i18n ("

                            (Rotating|Skewing) the (image|selection) to" + // " %1x%2 may take a substantial amount of memory." + // " This can reduce system" + // " responsiveness and cause other application resource" + // " problems.

                            ").arg (newWidth, newHeight) + // + // "

                            Are you sure you want to (rotate|skew) the" + // " (image|selection)?

                            "); + // caption = i18n ("Rotate (Image|Selection)?"); + // continueButtonText = i18n ("Rotat&e (Image|Selection)"); + static bool warnIfBigImageSize (int oldWidth, int oldHeight, + int newWidth, int newHeight, + const QString &text, + const QString &caption, + const QString &continueButtonText, + QWidget *parent); + +private: + kpToolPrivate *d; +}; + + +#endif // KP_TOOL_H diff --git a/tools/kpToolAction.cpp b/tools/kpToolAction.cpp new file mode 100644 index 0000000..c0f1c8d --- /dev/null +++ b/tools/kpToolAction.cpp @@ -0,0 +1,70 @@ +/* + Copyright(c) 2003-2007 Clarence Dang + Copyright(c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "tools/kpToolAction.h" +#include +#include "tools/kpTool.h" + + +//--------------------------------------------------------------------- + +kpToolAction::kpToolAction(const QString &text, + const QString &pic, const QList &shortcut, + const QObject *receiver, const char *slot, + KActionCollection *ac, const QString &name) + : KToggleAction(QIcon::fromTheme(pic), text, ac) +{ + ac->setDefaultShortcuts(this, shortcut); + + + if ( receiver && slot ) { + connect (this, SIGNAL(triggered(bool)), receiver, slot); + } + + updateToolTip(); + connect (this, &kpToolAction::changed, this, &kpToolAction::updateToolTip); + + ac->addAction(name, this); +} + +//--------------------------------------------------------------------- + +// protected +void kpToolAction::updateToolTip() +{ + const QString newToolTip = + kpTool::toolTipForTextAndShortcut(text(), shortcuts()).remove(QLatin1Char('&')); + + if ( newToolTip == toolTip() ) { + return; + } + + setToolTip(newToolTip); +} + +//--------------------------------------------------------------------- + diff --git a/tools/kpToolAction.h b/tools/kpToolAction.h new file mode 100644 index 0000000..e0a737f --- /dev/null +++ b/tools/kpToolAction.h @@ -0,0 +1,53 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_ACTION_H +#define KP_TOOL_ACTION_H + +#include + +class KActionCollection; + +// Same as KToggleAction but shows the first single key trigger in the tooltip. + +class kpToolAction : public KToggleAction +{ + Q_OBJECT + + public: + kpToolAction(const QString &text, + const QString &pic, const QList &shortcut, + const QObject *receiver, const char *slot, + KActionCollection *ac, const QString &name); + + private slots: + void updateToolTip(); +}; + + +#endif // KP_TOOL_ACTION_H diff --git a/tools/kpToolColorPicker.cpp b/tools/kpToolColorPicker.cpp new file mode 100644 index 0000000..8a2f171 --- /dev/null +++ b/tools/kpToolColorPicker.cpp @@ -0,0 +1,137 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_COLOR_PICKER 0 + + +#include "kpToolColorPicker.h" +#include "kpLogCategories.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "pixmapfx/kpPixmapFX.h" +#include "commands/tools/kpToolColorPickerCommand.h" +#include "environments/tools/kpToolEnvironment.h" + +#include + +kpToolColorPicker::kpToolColorPicker (kpToolEnvironment *environ, QObject *parent) + : kpTool (i18n ("Color Picker"), i18n ("Lets you select a color from the image"), + Qt::Key_C, + environ, parent, QStringLiteral("tool_color_picker")) +{ +} + +kpToolColorPicker::~kpToolColorPicker () = default; + + +// private +kpColor kpToolColorPicker::colorAtPixel (const QPoint &p) +{ +#if DEBUG_KP_TOOL_COLOR_PICKER && 0 + qCDebug(kpLogTools) << "kpToolColorPicker::colorAtPixel" << p; +#endif + + return kpPixmapFX::getColorAtPixel (document ()->image (), p); +} + + +// private +QString kpToolColorPicker::haventBegunDrawUserMessage () const +{ + return i18n ("Click to select a color."); +} + + +// public virtual [base kpTool] +void kpToolColorPicker::begin () +{ + setUserMessage (haventBegunDrawUserMessage ()); +} + +// public virtual [base kpTool] +void kpToolColorPicker::beginDraw () +{ + m_oldColor = color (mouseButton ()); + + setUserMessage (cancelUserMessage ()); +} + +// public virtual [base kpTool] +void kpToolColorPicker::draw (const QPoint &thisPoint, const QPoint &, const QRect &) +{ + const kpColor color = colorAtPixel (thisPoint); + + if (color.isValid ()) + { + environ ()->setColor (mouseButton (), color); + setUserShapePoints (thisPoint); + } + else + { + environ ()->setColor (mouseButton (), m_oldColor); + setUserShapePoints (); + } +} + +// public virtual [base kpTool] +void kpToolColorPicker::cancelShape () +{ + environ ()->setColor (mouseButton (), m_oldColor); + + setUserMessage (i18n ("Let go of all the mouse buttons.")); +} + +// public virtual [base kpTool] +void kpToolColorPicker::releasedAllButtons () +{ + setUserMessage (haventBegunDrawUserMessage ()); + +} + +// public virtual [base kpTool] +void kpToolColorPicker::endDraw (const QPoint &thisPoint, const QRect &) +{ + const kpColor color = colorAtPixel (thisPoint); + + if (color.isValid ()) + { + auto *cmd = new kpToolColorPickerCommand ( mouseButton (), color, m_oldColor, + environ ()->commandEnvironment ()); + + environ ()->commandHistory ()->addCommand (cmd, false/*no exec*/); + setUserMessage (haventBegunDrawUserMessage ()); + } + else + { + cancelShape (); + } +} + + diff --git a/tools/kpToolColorPicker.h b/tools/kpToolColorPicker.h new file mode 100644 index 0000000..720c6be --- /dev/null +++ b/tools/kpToolColorPicker.h @@ -0,0 +1,71 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_COLOR_PICKER_H +#define KP_TOOL_COLOR_PICKER_H + + +#include "imagelib/kpColor.h" +#include "tools/kpTool.h" + + +class QPoint; +class QRect; + + +class kpToolColorPicker : public kpTool +{ +Q_OBJECT + +public: + kpToolColorPicker (kpToolEnvironment *environ, QObject *parent); + ~kpToolColorPicker () override; + + // generally the user goes to pick a color but wants to return to using + // his/her previous drawing tool + bool returnToPreviousToolAfterEndDraw () const override { return true; } + +private: + kpColor colorAtPixel (const QPoint &p); + + QString haventBegunDrawUserMessage () const; + +public: + void begin () override; + void beginDraw () override; + void draw (const QPoint &thisPoint, const QPoint &, const QRect &) override; + void cancelShape () override; + void releasedAllButtons () override; + void endDraw (const QPoint &thisPoint, const QRect &) override; + +private: + kpColor m_oldColor; +}; + + +#endif // KP_TOOL_COLOR_PICKER_H diff --git a/tools/kpToolFloodFill.cpp b/tools/kpToolFloodFill.cpp new file mode 100644 index 0000000..d562e87 --- /dev/null +++ b/tools/kpToolFloodFill.cpp @@ -0,0 +1,169 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_FLOOD_FILL 0 + + +#include "kpToolFloodFill.h" + +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "environments/tools/kpToolEnvironment.h" +#include "commands/tools/kpToolFloodFillCommand.h" + +#include "kpLogCategories.h" +#include + +#include + +//--------------------------------------------------------------------- + +struct kpToolFloodFillPrivate +{ + kpToolFloodFillCommand *currentCommand; +}; + +//--------------------------------------------------------------------- + +kpToolFloodFill::kpToolFloodFill (kpToolEnvironment *environ, QObject *parent) + : kpTool (i18n ("Flood Fill"), i18n ("Fills regions in the image"), + Qt::Key_F, + environ, parent, QStringLiteral("tool_flood_fill")), + d (new kpToolFloodFillPrivate ()) +{ + d->currentCommand = nullptr; +} + +//--------------------------------------------------------------------- + +kpToolFloodFill::~kpToolFloodFill () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// private +QString kpToolFloodFill::haventBegunDrawUserMessage () const +{ + return i18n ("Click to fill a region."); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolFloodFill::begin () +{ + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolFloodFill::beginDraw () +{ +#if DEBUG_KP_TOOL_FLOOD_FILL && 1 + qCDebug(kpLogTools) << "kpToolFloodFill::beginDraw()"; +#endif + + QApplication::setOverrideCursor (Qt::WaitCursor); + { + environ ()->flashColorSimilarityToolBarItem (); + + // Flood Fill is an expensive CPU operation so we only fill at a + // mouse click (beginDraw ()), not on mouse move (virtually draw()) + d->currentCommand = new kpToolFloodFillCommand ( + currentPoint ().x (), currentPoint ().y (), + color (mouseButton ()), processedColorSimilarity (), + environ ()->commandEnvironment ()); + + #if DEBUG_KP_TOOL_FLOOD_FILL && 1 + qCDebug(kpLogTools) << "\tperforming new-doc-corner-case check"; + #endif + + if (document ()->url ().isEmpty () && !document ()->isModified ()) + { + // Collect the colour that gets changed before we change the pixels + // (execute() below). Needed in unexecute(). + d->currentCommand->prepareColorToChange (); + + d->currentCommand->setFillEntireImage (); + } + + d->currentCommand->execute (); + } + QApplication::restoreOverrideCursor (); + + setUserMessage (cancelUserMessage ()); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolFloodFill::draw (const QPoint &thisPoint, const QPoint &, const QRect &) +{ + setUserShapePoints (thisPoint); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolFloodFill::cancelShape () +{ + d->currentCommand->unexecute (); + + delete d->currentCommand; + d->currentCommand = nullptr; + + setUserMessage (i18n ("Let go of all the mouse buttons.")); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolFloodFill::releasedAllButtons () +{ + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolFloodFill::endDraw (const QPoint &, const QRect &) +{ + environ ()->commandHistory ()->addCommand (d->currentCommand, + false/*no exec - we already did it up there*/); + + // Don't delete - it just got added to the history. + d->currentCommand = nullptr; + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + diff --git a/tools/kpToolFloodFill.h b/tools/kpToolFloodFill.h new file mode 100644 index 0000000..9ee80f8 --- /dev/null +++ b/tools/kpToolFloodFill.h @@ -0,0 +1,60 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_FLOOD_FILL_H +#define KP_TOOL_FLOOD_FILL_H + + +#include "tools/kpTool.h" + + +class kpToolFloodFill : public kpTool +{ +Q_OBJECT + +public: + kpToolFloodFill (kpToolEnvironment *environ, QObject *parent); + ~kpToolFloodFill () override; + +private: + QString haventBegunDrawUserMessage () const; + +public: + void begin () override; + void beginDraw () override; + void draw (const QPoint &thisPoint, const QPoint &, const QRect &) override; + void cancelShape () override; + void releasedAllButtons () override; + void endDraw (const QPoint &, const QRect &) override; + +private: + struct kpToolFloodFillPrivate * const d; +}; + + +#endif // KP_TOOL_FLOOD_FILL_H diff --git a/tools/kpToolPrivate.h b/tools/kpToolPrivate.h new file mode 100644 index 0000000..86609c5 --- /dev/null +++ b/tools/kpToolPrivate.h @@ -0,0 +1,83 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolPrivate_H +#define kpToolPrivate_H + + +#include +#include + +#include +#ifdef Q_OS_WIN + #include + #undef environ // macro on win32 +#endif + +class kpToolAction; +class kpToolEnvironment; + + +struct kpToolPrivate +{ + // Initialisation / properties. + QString text; + QString description; + int key; + + kpToolAction *action; + + // Drawing state. + bool began; + bool beganDraw; // set after beginDraw() is called, unset before endDraw() is called + int mouseButton; /* 0 = left, 1 = right */ + bool shiftPressed, controlPressed, altPressed; // m_altPressed is unreliable + QPoint startPoint, + currentPoint, currentViewPoint, + lastPoint; + + kpView *viewUnderStartPoint; + + + // Set to 2 when the user swaps the foreground and background color. + // + // When nonzero, it suppresses the foreground and background "color changed" + // signals and is decremented back down to 0 separately by the foreground + // code and background code. + int ignoreColorSignals; + + // Statusbar. + QString userMessage; + QPoint userShapeStartPoint, userShapeEndPoint; + QSize userShapeSize; + + kpToolEnvironment *environ; +}; + + +#endif // kpToolPrivate_H diff --git a/tools/kpToolZoom.cpp b/tools/kpToolZoom.cpp new file mode 100644 index 0000000..cfe5c53 --- /dev/null +++ b/tools/kpToolZoom.cpp @@ -0,0 +1,254 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_ZOOM 0 + + +#include "kpToolZoom.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "pixmapfx/kpPixmapFX.h" +#include "generic/kpSetOverrideCursorSaver.h" +#include "layers/tempImage/kpTempImage.h" +#include "environments/tools/kpToolEnvironment.h" +#include "tools/kpToolAction.h" +#include "views/manager/kpViewManager.h" +#include "kpLogCategories.h" + +#include + +#include + +//--------------------------------------------------------------------- + +struct DrawZoomRectPackage +{ + QRect normalizedRect; +}; + +static void DrawZoomRect (kpImage *destImage, + const QPoint &topLeft, + void *userData) +{ + auto *pack = static_cast (userData); + + kpPixmapFX::drawStippleRect(destImage, + topLeft.x (), topLeft.y (), pack->normalizedRect.width (), pack->normalizedRect.height (), + kpColor::Yellow, + kpColor::Green); +} + + +struct kpToolZoomPrivate +{ + bool dragHasBegun{}, dragCompleted{}; + DrawZoomRectPackage drawPackage; +}; + +kpToolZoom::kpToolZoom (kpToolEnvironment *environ, QWidget *parent) + : kpTool (i18n ("Zoom"), i18n ("Zooms in and out of the image"), + Qt::Key_Z, + environ, parent, QStringLiteral("tool_zoom")), + d (new kpToolZoomPrivate ()) +{ + // different from objectName() + action()->setIcon(QIcon::fromTheme(QStringLiteral("zoom-original"))); +} + +//--------------------------------------------------------------------- + +kpToolZoom::~kpToolZoom () +{ + delete d; +} + +//--------------------------------------------------------------------- +// public virtual [base kpTool] + +bool kpToolZoom::returnToPreviousToolAfterEndDraw () const +{ + // If the user clicks to zoom in or out, s/he generally wants to click + // some more to get the exact zoom level wanted. + // + // However, if they drag out a rectangle to zoom into a particular area, + // they probably don't need to do any further zooming so we can return + // them to their previous tool. + // + // Note that if they cancel a drag (cancelShape()), we do _not_ return + // them to their previous tool, unlike the Color Picker. This is because + // cancelling a drag generally means that the user got the top-left of + // the drag wrong and wants to try a different top-left. In contrast, + // with the Color Picket, if you've made a mistake while pressing the + // mouse, you can just keep holding down the mouse and drag to the intended + // color -- a cancel with a Color Picker really means "I've decided not + // to pick another color after all", not "I got the start of the drag wrong" + // because you can correct that drag. + return d->dragCompleted; +} + + +// private +QString kpToolZoom::haventBegunDrawUserMessage () const +{ + return i18n ("Click to zoom in/out or left drag to zoom into a specific area."); +} + + +// public virtual [base kpTool] +void kpToolZoom::begin () +{ + viewManager ()->setCursor (Qt::CrossCursor); + + setUserMessage (haventBegunDrawUserMessage ()); +} + +// public virtual [base kpTool] +void kpToolZoom::end () +{ + viewManager ()->unsetCursor (); +} + + +// public virtual [base kpTool] +void kpToolZoom::globalDraw () +{ +#if DEBUG_KP_TOOL_ZOOM + qCDebug(kpLogTools) << "CALL"; +#endif + environ ()->fitToPage (); +} + + +// public virtual [base kpTool] +void kpToolZoom::beginDraw () +{ + d->dragHasBegun = false; + d->dragCompleted = false; + + setUserMessage (cancelUserMessage ()); +} + +// public virtual [base kpTool] +void kpToolZoom::draw (const QPoint &thisPoint, const QPoint &, const QRect &normalizedRect) +{ +#if DEBUG_KP_TOOL_ZOOM + qCDebug(kpLogTools) << "kpToomZoom::draw() currentPoint=" << currentPoint () + << " lastPoint=" << lastPoint () + << endl; +#endif + + // TODO: Need accidental drag detection from selection tool (when dragging + // out new selection) + + if (!d->dragHasBegun) + { + if (thisPoint == startPoint ()) { + return; + } + + // Left mouse drags select an area to zoom into. + // However, it wouldn't make sense to select an area to "zoom out of" + // (using the right mouse button). Therefore, make RMB drags do the + // same as RMB clicks i.e. a simple zoom out, with no "area" to worry + // about. + if (mouseButton () == 1/*RMB*/) { + return; + } + + d->dragHasBegun = true; + } + + + d->drawPackage.normalizedRect = normalizedRect; + + kpTempImage newTempImage (false/*always display*/, + normalizedRect.topLeft (), + &::DrawZoomRect, &d->drawPackage, + normalizedRect.width (), normalizedRect.height ()); + + viewManager ()->setFastUpdates (); + { + viewManager ()->setTempImage (newTempImage); + } + viewManager ()->restoreFastUpdates (); +} + +// public virtual [base kpTool] +void kpToolZoom::cancelShape () +{ + viewManager ()->invalidateTempImage (); + + // LOREFACTOR: A lot of tools use this - push up to kpTool? + setUserMessage (i18n ("Let go of all the mouse buttons.")); +} + +// public virtual [base kpTool] +void kpToolZoom::releasedAllButtons () +{ + setUserMessage (haventBegunDrawUserMessage ()); +} + +// public virtual [base kpTool] +void kpToolZoom::endDraw (const QPoint &, const QRect &normalizedRect) +{ +#if DEBUG_KP_TOOL_ZOOM + qCDebug(kpLogTools) << "kpToolZoom::endDraw(rect=" << normalizedRect << ")" + << " dragHasBegun=" << d->dragHasBegun << endl; +#endif + + // TODO: This cursor doesn't stay on for long enough because zooming uses + // event loop tricks. + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + viewManager ()->invalidateTempImage (); + + // Click? + if (!d->dragHasBegun) + { + if (mouseButton () == 0/*LMB*/) { + environ ()->zoomIn (true/*center under cursor*/); + } + else { + environ ()->zoomOut (false/*don't center under cursor - as is + confusing behaviour when zooming + out*/); + } + } + // Drag? + else if (normalizedRect.isValid()) + { + environ ()->zoomToRect ( + normalizedRect, + false/*don't account for grips*/, + true/*care about width*/, true/*care about height*/); + + d->dragCompleted = true; + } +} + + diff --git a/tools/kpToolZoom.h b/tools/kpToolZoom.h new file mode 100644 index 0000000..d1c0f95 --- /dev/null +++ b/tools/kpToolZoom.h @@ -0,0 +1,66 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_ZOOM_H +#define KP_TOOL_ZOOM_H + + +#include "tools/kpTool.h" + + +class kpToolZoom : public kpTool +{ +Q_OBJECT + +public: + kpToolZoom (kpToolEnvironment *environ, QWidget *parent); + ~kpToolZoom () override; + + bool returnToPreviousToolAfterEndDraw () const override; + +private: + QString haventBegunDrawUserMessage () const; + +public: + void begin () override; + void end () override; + + void globalDraw () override; + + void beginDraw () override; + void draw (const QPoint &thisPoint, const QPoint &, const QRect &) override; + void cancelShape () override; + void releasedAllButtons () override; + void endDraw (const QPoint &thisPoint, const QRect &) override; + +private: + struct kpToolZoomPrivate *d; +}; + + +#endif // KP_TOOL_ZOOM_H diff --git a/tools/kpTool_Drawing.cpp b/tools/kpTool_Drawing.cpp new file mode 100644 index 0000000..1ce028d --- /dev/null +++ b/tools/kpTool_Drawing.cpp @@ -0,0 +1,423 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// +// Tool methods for drawing shapes (subclasses reimplement most of these). +// + + +#define DEBUG_KP_TOOL 0 + + +#include "tools/kpTool.h" +#include "kpToolPrivate.h" + +#include + +#include "kpLogCategories.h" + +#include "environments/tools/kpToolEnvironment.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" +#include "imagelib/kpPainter.h" + +#undef environ // macro on win32 + +//--------------------------------------------------------------------- + +// protected +int kpTool::mouseButton () const +{ + return d->mouseButton; +} + +//--------------------------------------------------------------------- + +// protected +bool kpTool::shiftPressed () const +{ + return d->shiftPressed; +} + +//--------------------------------------------------------------------- + +// protected +bool kpTool::controlPressed () const +{ + return d->controlPressed; +} + +//--------------------------------------------------------------------- + +// protected +bool kpTool::altPressed () const +{ + return d->altPressed; +} + + +// protected +QPoint kpTool::startPoint () const +{ + return d->startPoint; +} + +//--------------------------------------------------------------------- + +// protected +QPoint kpTool::currentPoint () const +{ + // TODO: Q_ASSERT (hasBegun()) and similar in other accessors. + // We currently violate these kinds of invariants. + return d->currentPoint; +} + +//--------------------------------------------------------------------- + +// protected +QPoint kpTool::currentViewPoint () const +{ + return d->currentViewPoint; +} + +//--------------------------------------------------------------------- + +// protected +QRect kpTool::normalizedRect () const +{ + return kpPainter::normalizedRect(d->startPoint, d->currentPoint); +} + +//--------------------------------------------------------------------- + +// protected +QPoint kpTool::lastPoint () const +{ + return d->lastPoint; +} + +//--------------------------------------------------------------------- + +// protected +kpView *kpTool::viewUnderStartPoint () const +{ + return d->viewUnderStartPoint; +} + +//--------------------------------------------------------------------- + +// protected +kpView *kpTool::viewUnderCursor () const +{ + kpViewManager *vm = viewManager (); + return vm ? vm->viewUnderCursor () : nullptr; +} + +//--------------------------------------------------------------------- + +void kpTool::beginInternal () +{ +#if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "kpTool::beginInternal()"; +#endif + + if (!d->began) + { + // clear leftover statusbar messages + setUserMessage (); + d->currentPoint = calculateCurrentPoint (); + d->currentViewPoint = calculateCurrentPoint (false/*view point*/); + setUserShapePoints (d->currentPoint); + + // TODO: Audit all the code in this file - states like "d->began" & + // "d->beganDraw" should be set before calling user func. + // Also, d->currentPoint should be more frequently initialised. + + // call user virtual func + begin (); + + // we've starting using the tool... + d->began = true; + + // but we haven't started drawing with it + d->beganDraw = false; + + + uint keyState = QApplication::keyboardModifiers (); + + d->shiftPressed = (keyState & Qt::ShiftModifier); + d->controlPressed = (keyState & Qt::ControlModifier); + + // TODO: Can't do much about ALT - unless it's always KApplication::Modifier1? + // Ditto for everywhere else where I set SHIFT & CTRL but not alt. + // COMPAT: Later: This is now supported by Qt. + d->altPressed = false; + } +} + +//--------------------------------------------------------------------- + +void kpTool::endInternal () +{ + if (d->began) + { + // before we can stop using the tool, we must stop the current drawing operation (if any) + if (hasBegunShape ()) { + endShapeInternal (d->currentPoint, normalizedRect ()); + } + + // call user virtual func + end (); + + // clear leftover statusbar messages + setUserMessage (); + setUserShapePoints (calculateCurrentPoint ()); + + // we've stopped using the tool... + d->began = false; + + // and so we can't be drawing with it + d->beganDraw = false; + + d->environ->hideAllToolWidgets (); + } +} + +//--------------------------------------------------------------------- + +// virtual +void kpTool::begin () +{ +#if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "kpTool::begin() base implementation"; +#endif +} + +//--------------------------------------------------------------------- + +// virtual +void kpTool::end () +{ +#if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "kpTool::end() base implementation"; +#endif +} + +//--------------------------------------------------------------------- + + +bool kpTool::hasBegun () const { return d->began; } + +//--------------------------------------------------------------------- + +bool kpTool::hasBegunDraw () const { return d->beganDraw; } + +//--------------------------------------------------------------------- + +// virtual +bool kpTool::hasBegunShape () const { return hasBegunDraw (); } + +//--------------------------------------------------------------------- + + +void kpTool::beginDrawInternal () +{ + if (!d->beganDraw) + { + beginDraw (); + + d->beganDraw = true; + emit beganDraw (d->currentPoint); + } +} + +//--------------------------------------------------------------------- + +// virtual +void kpTool::beginDraw () +{ +} + +//--------------------------------------------------------------------- + +// virtual +void kpTool::hover (const QPoint &point) +{ +#if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "kpTool::hover" << point + << " base implementation"; +#endif + + setUserShapePoints (point); +} + +//--------------------------------------------------------------------- + +// virtual +void kpTool::globalDraw () +{ +} + +//--------------------------------------------------------------------- + +// virtual +void kpTool::reselect () +{ +#if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "kpTool::reselect() base implementation"; +#endif +} + +//--------------------------------------------------------------------- + + +// virtual +void kpTool::draw (const QPoint &, const QPoint &, const QRect &) +{ +} + +//--------------------------------------------------------------------- + +// private +void kpTool::drawInternal () +{ + draw (d->currentPoint, d->lastPoint, normalizedRect ()); +} + +//--------------------------------------------------------------------- + + +// also called by kpView +void kpTool::cancelShapeInternal () +{ + if (hasBegunShape ()) + { + d->beganDraw = false; + cancelShape (); + d->viewUnderStartPoint = nullptr; + + emit cancelledShape (viewUnderCursor () ? d->currentPoint : KP_INVALID_POINT); + + if (viewUnderCursor ()) { + hover (d->currentPoint); + } + else + { + d->currentPoint = KP_INVALID_POINT; + d->currentViewPoint = KP_INVALID_POINT; + hover (d->currentPoint); + } + + if (returnToPreviousToolAfterEndDraw ()) + { + d->environ->selectPreviousTool (); + } + } +} + +//--------------------------------------------------------------------- + +// virtual +void kpTool::cancelShape () +{ + qCWarning(kpLogTools) << "Tool cannot cancel operation!" ; +} + +//--------------------------------------------------------------------- + +void kpTool::releasedAllButtons () +{ +} + +//--------------------------------------------------------------------- + +void kpTool::endDrawInternal (const QPoint &thisPoint, const QRect &normalizedRect, + bool wantEndShape) +{ +#if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "kpTool::endDrawInternal() wantEndShape=" << wantEndShape; +#endif + + if (wantEndShape && !hasBegunShape ()) { + return; + } + + if (!wantEndShape && !hasBegunDraw ()) { + return; + } + + d->beganDraw = false; + + if (wantEndShape) + { + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\tcalling endShape()"; + #endif + endShape (thisPoint, normalizedRect); + } + else + { + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\tcalling endDraw()"; + #endif + endDraw (thisPoint, normalizedRect); + } + d->viewUnderStartPoint = nullptr; + + emit endedDraw (d->currentPoint); + if (viewUnderCursor ()) { + hover (d->currentPoint); + } + else + { + d->currentPoint = KP_INVALID_POINT; + d->currentViewPoint = KP_INVALID_POINT; + hover (d->currentPoint); + } + + if (returnToPreviousToolAfterEndDraw ()) + { + d->environ->selectPreviousTool (); + } +} + +//--------------------------------------------------------------------- + +// private +void kpTool::endShapeInternal (const QPoint &thisPoint, const QRect &normalizedRect) +{ + endDrawInternal (thisPoint, normalizedRect, true/*end shape*/); +} + +//--------------------------------------------------------------------- + +// virtual +void kpTool::endDraw (const QPoint &, const QRect &) +{ +} + +//--------------------------------------------------------------------- diff --git a/tools/kpTool_KeyboardEvents.cpp b/tools/kpTool_KeyboardEvents.cpp new file mode 100644 index 0000000..4d4cc7f --- /dev/null +++ b/tools/kpTool_KeyboardEvents.cpp @@ -0,0 +1,431 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// +// Tool reaction to view keyboard input. +// + + +#define DEBUG_KP_TOOL 0 + + +// TODO: reduce number of includes +#include "tools/kpTool.h" +#include "kpToolPrivate.h" + +#include + +#include +#include +#include +#include + +#include +#include "kpLogCategories.h" +#include + +#include "imagelib/kpColor.h" +#include "widgets/toolbars/kpColorToolBar.h" +#include "kpDefs.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpToolAction.h" +#include "environments/tools/kpToolEnvironment.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +//--------------------------------------------------------------------- + +void kpTool::seeIfAndHandleModifierKey (QKeyEvent *e) +{ + switch (e->key ()) + { + case 0: + case Qt::Key_unknown: + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::seeIfAndHandleModifierKey() picked up unknown key!"; + #endif + // HACK: around Qt bug: if you hold a modifier before you start the + // program and then release it over the view, + // Qt reports it as the release of an unknown key + // Qt4 update: I don't think this happens anymore... + // --- fall thru and update all modifiers --- + + case Qt::Key_Alt: + case Qt::Key_Shift: + case Qt::Key_Control: + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::setIfAndHandleModifierKey() accepting"; + #endif + keyUpdateModifierState (e); + + e->accept (); + break; + } +} + +//--------------------------------------------------------------------- + +// Returns in and the direction the arrow key "e->key()" is +// pointing in or (0,0) if it's not a recognised arrow key. +void kpTool::arrowKeyPressDirection (const QKeyEvent *e, int *dx, int *dy) +{ + int dxLocal = 0, dyLocal = 0; + + switch (e->key ()) + { + case Qt::Key_Home: dxLocal = -1; dyLocal = -1; break; + case Qt::Key_Up: dyLocal = -1; break; + case Qt::Key_PageUp: dxLocal = +1; dyLocal = -1; break; + + case Qt::Key_Left: dxLocal = -1; break; + case Qt::Key_Right: dxLocal = +1; break; + + case Qt::Key_End: dxLocal = -1; dyLocal = +1; break; + case Qt::Key_Down: dyLocal = +1; break; + case Qt::Key_PageDown: dxLocal = +1; dyLocal = +1; break; + } + + if (dx) { + *dx = dxLocal; + } + if (dy) { + *dy = dyLocal; + } +} + +//--------------------------------------------------------------------- + +void kpTool::seeIfAndHandleArrowKeyPress (QKeyEvent *e) +{ + int dx, dy; + + arrowKeyPressDirection (e, &dx, &dy); + if (dx == 0 && dy == 0) { + return; + } + + + kpView * const view = viewUnderCursor (); + if (!view) { + return; + } + + + const QPoint oldPoint = view->mapFromGlobal (QCursor::pos ()); +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\toldPoint=" << oldPoint + << " dx=" << dx << " dy=" << dy << endl; +#endif + + + const int viewIncX = (dx ? qMax (1, view->zoomLevelX () / 100) * dx : 0); + const int viewIncY = (dy ? qMax (1, view->zoomLevelY () / 100) * dy : 0); + + int newViewX = oldPoint.x () + viewIncX; + int newViewY = oldPoint.y () + viewIncY; + + +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\tnewPoint=" << QPoint (newViewX, newViewY); +#endif + + // Make sure we really moved at least one doc point (needed due to + // rounding error). + + if (view->transformViewToDoc (QPoint (newViewX, newViewY)) == + view->transformViewToDoc (oldPoint)) + { + newViewX += viewIncX; + newViewY += viewIncY; + + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\tneed adjust for doc - newPoint=" + << QPoint (newViewX, newViewY) << endl; + #endif + } + + + // TODO: visible width/height (e.g. with scrollbars) + const int x = qMin (qMax (newViewX, 0), view->width () - 1); + const int y = qMin (qMax (newViewY, 0), view->height () - 1); + + // QCursor::setPos conveniently causes mouseMoveEvents + QCursor::setPos (view->mapToGlobal (QPoint (x, y))); + e->accept (); +} + +//--------------------------------------------------------------------- + +bool kpTool::isDrawKey (int key) +{ + return (key == Qt::Key_Enter || + key == Qt::Key_Return || + key == Qt::Key_Insert || + key == Qt::Key_Clear/*Numpad 5 Key*/ || + key == Qt::Key_L); +} + +//--------------------------------------------------------------------- + +void kpTool::seeIfAndHandleBeginDrawKeyPress (QKeyEvent *e) +{ + if (e->isAutoRepeat ()) { + return; + } + + if (!isDrawKey (e->key ())) { + return; + } + +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::seeIfAndHandleBeginDrawKeyPress() accept"; +#endif + + + // TODO: wrong for dragging lines outside of view (for e.g.) + kpView * const view = viewUnderCursor (); + if (!view) { + return; + } + + + // TODO: what about the modifiers? + QMouseEvent me (QEvent::MouseButtonPress, + view->mapFromGlobal (QCursor::pos ()), + Qt::LeftButton, + Qt::LeftButton/*button state after event*/, + Qt::NoModifier); + mousePressEvent (&me); + e->accept (); +} + +void kpTool::seeIfAndHandleEndDrawKeyPress (QKeyEvent *e) +{ +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::setIfAndHandleEndDrawKeyPress() key=" << e->key () + << " isAutoRepeat=" << e->isAutoRepeat () + << " isDrawKey=" << isDrawKey (e->key ()) + << " view=" << viewUnderCursor () + << endl; +#endif + + if (e->isAutoRepeat ()) { + return; + } + + if (!isDrawKey (e->key ())) { + return; + } + +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::seeIfAndHandleEndDrawKeyPress() accept"; +#endif + + + kpView * const view = viewUnderCursor (); + if (!view) { + return; + } + + + // TODO: what about the modifiers? + QMouseEvent me (QEvent::MouseButtonRelease, + view->mapFromGlobal (QCursor::pos ()), + Qt::LeftButton, + Qt::NoButton/*button state after event*/, + Qt::NoModifier); + mouseReleaseEvent (&me); + + e->accept (); +} + +//--------------------------------------------------------------------- + +void kpTool::keyPressEvent (QKeyEvent *e) +{ +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::keyPressEvent() key=" << (int *) e->key () + << " stateAfter: modifiers=" << (int *) (int) e->modifiers () + << " isAutoRep=" << e->isAutoRepeat (); +#endif + + e->ignore (); + + + seeIfAndHandleModifierKey (e); + if (e->isAccepted ()) { + return; + } + + seeIfAndHandleArrowKeyPress (e); + if (e->isAccepted ()) { + return; + } + + seeIfAndHandleBeginDrawKeyPress (e); + if (e->isAccepted ()) { + return; + } + + + switch (e->key ()) + { + case Qt::Key_Delete: + d->environ->deleteSelection (); + break; + + case Qt::Key_Escape: + if (hasBegunDraw ()) + { + cancelShapeInternal (); + e->accept (); + } + + break; + } +} + +//--------------------------------------------------------------------- + +void kpTool::keyReleaseEvent (QKeyEvent *e) +{ +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::keyReleaseEvent() key=" << (int *) e->key () + << " stateAfter: modifiers=" << (int *) (int) e->modifiers () + << " isAutoRep=" << e->isAutoRepeat (); +#endif + + e->ignore (); + + seeIfAndHandleModifierKey (e); + if (e->isAccepted ()) { + return; + } + + seeIfAndHandleEndDrawKeyPress (e); + if (e->isAccepted ()) { + return; + } +} + +//--------------------------------------------------------------------- + +// private +void kpTool::keyUpdateModifierState (QKeyEvent *e) +{ +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::keyUpdateModifierState() e->key=" << (int *) e->key (); + qCDebug(kpLogTools) << "\tshift=" + << (e->modifiers () & Qt::ShiftModifier) + << " control=" + << (e->modifiers () & Qt::ControlModifier) + << " alt=" + << (e->modifiers () & Qt::AltModifier) + << endl; +#endif + if (e->key () & (Qt::Key_Alt | Qt::Key_Shift | Qt::Key_Control)) + { + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\t\tmodifier changed - use e's claims"; + #endif + setShiftPressed (e->modifiers () & Qt::ShiftModifier); + setControlPressed (e->modifiers () & Qt::ControlModifier); + setAltPressed (e->modifiers () & Qt::AltModifier); + } + // See seeIfAndHandleModifierKey() for why this code path exists. + else + { + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\t\tmodifiers not changed - figure out the truth"; + #endif + const Qt::KeyboardModifiers keyState = QApplication::keyboardModifiers (); + + setShiftPressed (keyState & Qt::ShiftModifier); + setControlPressed (keyState & Qt::ControlModifier); + setAltPressed (keyState & Qt::AltModifier); + } +} + +//--------------------------------------------------------------------- + +void kpTool::notifyModifierStateChanged () +{ + if (careAboutModifierState ()) + { + if (d->beganDraw) { + draw (d->currentPoint, d->lastPoint, normalizedRect ()); + } + else + { + d->currentPoint = calculateCurrentPoint (); + d->currentViewPoint = calculateCurrentPoint (false/*view point*/); + hover (d->currentPoint); + } + } +} + +//--------------------------------------------------------------------- + +void kpTool::setShiftPressed (bool pressed) +{ + if (pressed == d->shiftPressed) { + return; + } + + d->shiftPressed = pressed; + + notifyModifierStateChanged (); +} + +//--------------------------------------------------------------------- + +void kpTool::setControlPressed (bool pressed) +{ + if (pressed == d->controlPressed) { + return; + } + + d->controlPressed = pressed; + + notifyModifierStateChanged (); +} + +//--------------------------------------------------------------------- + +void kpTool::setAltPressed (bool pressed) +{ + if (pressed == d->altPressed) { + return; + } + + d->altPressed = pressed; + + notifyModifierStateChanged (); +} + +//--------------------------------------------------------------------- diff --git a/tools/kpTool_MouseEvents.cpp b/tools/kpTool_MouseEvents.cpp new file mode 100644 index 0000000..a588835 --- /dev/null +++ b/tools/kpTool_MouseEvents.cpp @@ -0,0 +1,337 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// +// Tool reaction to view mouse input. +// + +#define DEBUG_KP_TOOL 0 + +#include "tools/kpTool.h" +#include "kpToolPrivate.h" + +#include "kpLogCategories.h" + +#include "environments/tools/kpToolEnvironment.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include +#include +#include + +//--------------------------------------------------------------------- + +// HITODO: If you press a mouse button and move it out of the view _really_ fast +// and let go of the mouse button outside of the view, a mouseRelease +// event will not be generated, so the tool will still be in drawing mode +// (this is especially noticeable with the spraycan). +// +// When you move the mouse back into the view, it will still continue +// continue drawing even though no mouse button is held down. +// +// It is somewhat hard to reproduce so the best way is to position the +// mouse close to an edge of the view. If you do it right, no mouseMoveEvent +// is generated at _all_, until you move it back into the view. +void kpTool::mousePressEvent (QMouseEvent *e) +{ +#if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "kpTool::mousePressEvent pos=" << e->pos () + << " button=" << (int) e->button () + << " stateAfter: buttons=" << (int *) (int) e->buttons () + << " modifiers=" << (int *) (int) e->modifiers () + << " beganDraw=" << d->beganDraw << endl; +#endif + + if (e->button () == Qt::MiddleButton) + { + const QString text = QApplication::clipboard ()->text (QClipboard::Selection); + #if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "\tMMB pasteText='" << text << "'"; + #endif + if (!text.isEmpty ()) + { + if (hasBegunShape ()) + { + #if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "\t\thasBegunShape - end"; + #endif + endShapeInternal (d->currentPoint, normalizedRect ()); + } + + if (viewUnderCursor ()) + { + d->environ->pasteTextAt (text, + viewUnderCursor ()->transformViewToDoc (e->pos ()), + true/*adjust topLeft so that cursor isn't + on top of resize handle*/); + } + + return; + } + } + + int mb = mouseButton (e->buttons ()); +#if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "\tmb=" << mb << " d->beganDraw=" << d->beganDraw; +#endif + + if (mb == -1 && !d->beganDraw) + { + // Ignore mouse press. + return; + } + + if (d->beganDraw) + { + if (mb == -1 || mb != d->mouseButton) + { + #if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "\tCancelling operation as " << mb << " == -1 or != " << d->mouseButton; + #endif + + kpView *view = viewUnderStartPoint (); + Q_ASSERT (view); + + // if we get a mousePressEvent when we're drawing, then the other + // mouse button must have been pressed + d->currentPoint = view->transformViewToDoc (e->pos ()); + d->currentViewPoint = e->pos (); + cancelShapeInternal (); + } + + return; + } + + kpView *view = viewUnderCursor (); + Q_ASSERT (view); + +#if DEBUG_KP_TOOL && 1 + if (view) { + qCDebug(kpLogTools) << "\tview=" << view->objectName (); + } +#endif + + // let user know what mouse button is being used for entire draw + d->mouseButton = mouseButton (e->buttons ()); + d->shiftPressed = (e->modifiers () & Qt::ShiftModifier); + d->controlPressed = (e->modifiers () & Qt::ControlModifier); + d->altPressed = (e->modifiers () & Qt::AltModifier); + d->startPoint = d->currentPoint = view->transformViewToDoc (e->pos ()); + d->currentViewPoint = e->pos (); + d->viewUnderStartPoint = view; + d->lastPoint = QPoint (-1, -1); + +#if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "\tBeginning draw @ " << d->currentPoint; +#endif + + beginDrawInternal (); + + draw (d->currentPoint, d->lastPoint, QRect (d->currentPoint, d->currentPoint)); + d->lastPoint = d->currentPoint; +} + +//--------------------------------------------------------------------- + +// OPT: If the mouse is moving in terms of view pixels, it still might +// not be moving in terms of document pixels (when zoomed in). +// +// So we should detect this and not call draw() or hover(). +// +// However, kpToolSelection needs hover() to be called on all view +// point changes, not just document points, since the selection resize +// handles may be smaller than document points. Also, I wonder if +// selections' accidental drag detection feature cares? +void kpTool::mouseMoveEvent (QMouseEvent *e) +{ +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::mouseMoveEvent pos=" << e->pos () + << " stateAfter: buttons=" << (int *) (int) e->buttons () + << " modifiers=" << (int *) (int) e->modifiers (); + kpView *v0 = viewUnderCursor (), + *v1 = viewManager ()->viewUnderCursor (true/*use Qt*/), + *v2 = viewUnderStartPoint (); + qCDebug(kpLogTools) << "\tviewUnderCursor=" << (v0 ? v0->objectName () : "(none)") + << " viewUnderCursorQt=" << (v1 ? v1->objectName () : "(none)") + << " viewUnderStartPoint=" << (v2 ? v2->objectName () : "(none)"); + qCDebug(kpLogTools) << "\tfocusWidget=" << kapp->focusWidget (); + qCDebug(kpLogTools) << "\tbeganDraw=" << d->beganDraw; +#endif + + d->shiftPressed = (e->modifiers () & Qt::ShiftModifier); + d->controlPressed = (e->modifiers () & Qt::ControlModifier); + d->altPressed = (e->modifiers () & Qt::AltModifier); + + if (d->beganDraw) + { + kpView *view = viewUnderStartPoint (); + Q_ASSERT (view); + + d->currentPoint = view->transformViewToDoc (e->pos ()); + d->currentViewPoint = e->pos (); + + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\tDraw!"; + #endif + + bool dragScrolled = false; + movedAndAboutToDraw (d->currentPoint, d->lastPoint, view->zoomLevelX (), &dragScrolled); + + if (dragScrolled) + { + d->currentPoint = calculateCurrentPoint (); + d->currentViewPoint = calculateCurrentPoint (false/*view point*/); + + // Scrollview has scrolled contents and has scheduled an update + // for the newly exposed region. If draw() schedules an update + // as well (instead of immediately updating), the scrollview's + // update will be executed first and it'll only update part of + // the screen resulting in ugly tearing of the viewManager's + // tempImage. + viewManager ()->setFastUpdates (); + } + + drawInternal (); + + if (dragScrolled) { + viewManager ()->restoreFastUpdates (); + } + + d->lastPoint = d->currentPoint; + } + else + { + kpView *view = viewUnderCursor (); + if (!view) // possible if cancelShape()'ed but still holding down initial mousebtn + { + d->currentPoint = KP_INVALID_POINT; + d->currentViewPoint = KP_INVALID_POINT; + return; + } + + d->currentPoint = view->transformViewToDoc (e->pos ()); + d->currentViewPoint = e->pos (); + hover (d->currentPoint); + } +} + +//--------------------------------------------------------------------- + +void kpTool::mouseReleaseEvent (QMouseEvent *e) +{ +#if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "kpTool::mouseReleaseEvent pos=" << e->pos () + << " button=" << (int) e->button () + << " stateAfter: buttons=" << (int *) (int) e->buttons () + << " modifiers=" << (int *) (int) e->modifiers () + << " beganDraw=" << d->beganDraw; +#endif + + // Have _not_ already cancelShape()'ed by pressing other mouse button? + // (e.g. you can cancel a line dragged out with the LMB, by pressing + // the RMB) + if (d->beganDraw) + { + kpView *view = viewUnderStartPoint (); + Q_ASSERT (view); + + d->currentPoint = view->transformViewToDoc (e->pos ()); + d->currentViewPoint = e->pos (); + + drawInternal (); + + endDrawInternal (d->currentPoint, normalizedRect ()); + } + + if ((e->buttons () & Qt::MouseButtonMask) == 0) + { + releasedAllButtons (); + } +} + +//--------------------------------------------------------------------- + +void kpTool::wheelEvent (QWheelEvent *e) +{ +#if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "kpTool::wheelEvent() modifiers=" << (int *) (int) e->modifiers () + << " hasBegunDraw=" << hasBegunDraw () + << " delta=" << e->delta (); +#endif + + e->ignore (); + + // If CTRL not pressed, bye. + if ((e->modifiers () & Qt::ControlModifier) == 0) + { + #if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "\tno CTRL -> bye"; + #endif + return; + } + + // If drawing, bye; don't care if a shape in progress though. + if (hasBegunDraw ()) + { + #if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "\thasBegunDraw() -> bye"; + #endif + return; + } + + + // Zoom in/out depending on wheel direction. + + // Moved wheel away from user? + if (e->angleDelta().y() > 0) + { + #if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "\tzoom in"; + #endif + d->environ->zoomIn (true/*center under cursor*/); + e->accept (); + } + // Moved wheel towards user? + else if (e->angleDelta().y() < 0) + { + #if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "\tzoom out"; + #endif + #if 1 + d->environ->zoomOut (true/*center under cursor - make zoom in/out + stay under same doc pos*/); + #else + d->environ->zoomOut (false/*don't center under cursor - as is + confusing behaviour when zooming + out*/); + #endif + e->accept (); + } +} + +//--------------------------------------------------------------------- diff --git a/tools/kpTool_OtherEvents.cpp b/tools/kpTool_OtherEvents.cpp new file mode 100644 index 0000000..dc67513 --- /dev/null +++ b/tools/kpTool_OtherEvents.cpp @@ -0,0 +1,168 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// +// Tool reaction to all remaining events. +// +// 1. View events +// 2. Non-view events +// + + +#define DEBUG_KP_TOOL 0 + + +#include "tools/kpTool.h" +#include "kpToolPrivate.h" + +#include "kpLogCategories.h" + +#include "imagelib/kpColor.h" + +//--------------------------------------------------------------------- + +// +// 1. View Events +// + +bool kpTool::viewEvent (QEvent *e) +{ +#if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "kpTool<" << objectName () + << "," << this << ">::viewEvent(type=" << e->type () + << ") returning false" << endl; +#else + (void) e; +#endif + + // Don't handle. + return false; +} + +//--------------------------------------------------------------------- + +void kpTool::focusInEvent (QFocusEvent *) +{ +} + +//--------------------------------------------------------------------- + +void kpTool::focusOutEvent (QFocusEvent *) +{ +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::focusOutEvent() beganDraw=" << d->beganDraw; +#endif + + if (d->beganDraw) { + endDrawInternal (d->currentPoint, normalizedRect ()); + } +} + +//--------------------------------------------------------------------- + +void kpTool::enterEvent (QEvent *) +{ +#if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "kpTool::enterEvent() beganDraw=" << d->beganDraw; +#endif +} + +//--------------------------------------------------------------------- + +void kpTool::leaveEvent (QEvent *) +{ +#if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "kpTool::leaveEvent() beganDraw=" << d->beganDraw; +#endif + + // if we haven't started drawing (e.g. dragging a rectangle)... + if (!d->beganDraw) + { + d->currentPoint = KP_INVALID_POINT; + d->currentViewPoint = KP_INVALID_POINT; + hover (d->currentPoint); + } +} + +//--------------------------------------------------------------------- +// +// 2. Non-view events +// + +void kpTool::slotColorsSwappedInternal (const kpColor &newForegroundColor, + const kpColor &newBackgroundColor) +{ + if (careAboutColorsSwapped ()) + { + slotColorsSwapped (newForegroundColor, newBackgroundColor); + d->ignoreColorSignals = 2; + } + else { + d->ignoreColorSignals = 0; + } +} + +//--------------------------------------------------------------------- + +void kpTool::slotForegroundColorChangedInternal (const kpColor &color) +{ + if (d->ignoreColorSignals > 0) + { + #if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "kpTool::slotForegroundColorChangedInternal() ignoreColorSignals=" << d->ignoreColorSignals; + #endif + d->ignoreColorSignals--; + return; + } + + slotForegroundColorChanged (color); +} + +//--------------------------------------------------------------------- + +void kpTool::slotBackgroundColorChangedInternal (const kpColor &color) +{ + if (d->ignoreColorSignals > 0) + { + #if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "kpTool::slotBackgroundColorChangedInternal() ignoreColorSignals=" << d->ignoreColorSignals; + #endif + d->ignoreColorSignals--; + return; + } + + slotBackgroundColorChanged (color); +} + +//--------------------------------------------------------------------- + +void kpTool::slotColorSimilarityChangedInternal (double similarity, int processedSimilarity) +{ + slotColorSimilarityChanged (similarity, processedSimilarity); +} + +//--------------------------------------------------------------------- diff --git a/tools/kpTool_UserNotifications.cpp b/tools/kpTool_UserNotifications.cpp new file mode 100644 index 0000000..d8b4407 --- /dev/null +++ b/tools/kpTool_UserNotifications.cpp @@ -0,0 +1,165 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// +// Tools' statusbar updates. +// + +#include "tools/kpTool.h" +#include "kpToolPrivate.h" + +#include + +//--------------------------------------------------------------------- + +// public static +QString kpTool::cancelUserMessage (int mouseButton) +{ + if (mouseButton == 0) { + return i18n ("Right click to cancel."); + } + + return i18n ("Left click to cancel."); +} + +//--------------------------------------------------------------------- + +// public +QString kpTool::cancelUserMessage () const +{ + return cancelUserMessage (d->mouseButton); +} + +//--------------------------------------------------------------------- + +// public +QString kpTool::userMessage () const +{ + return d->userMessage; +} + +//--------------------------------------------------------------------- + +// public +void kpTool::setUserMessage (const QString &userMessage) +{ + d->userMessage = userMessage; + + if (d->userMessage.isEmpty ()) { + d->userMessage = text (); + } + else { + d->userMessage.prepend (i18n ("%1: ", text ())); + } + + emit userMessageChanged (d->userMessage); +} + +//--------------------------------------------------------------------- + +// public +QPoint kpTool::userShapeStartPoint () const +{ + return d->userShapeStartPoint; +} + +//--------------------------------------------------------------------- + +// public +QPoint kpTool::userShapeEndPoint () const +{ + return d->userShapeEndPoint; +} + +//--------------------------------------------------------------------- + +// public +void kpTool::setUserShapePoints (const QPoint &startPoint, + const QPoint &endPoint, + bool setSize) +{ + d->userShapeStartPoint = startPoint; + d->userShapeEndPoint = endPoint; + emit userShapePointsChanged (d->userShapeStartPoint, d->userShapeEndPoint); + + if (setSize) + { + if (startPoint != KP_INVALID_POINT && + endPoint != KP_INVALID_POINT) + { + setUserShapeSize (calculateLength (startPoint.x (), endPoint.x ()), + calculateLength (startPoint.y (), endPoint.y ())); + } + else + { + setUserShapeSize (); + } + } +} + +//--------------------------------------------------------------------- + +// public +QSize kpTool::userShapeSize () const +{ + return d->userShapeSize; +} + +//--------------------------------------------------------------------- + +// public +int kpTool::userShapeWidth () const +{ + return d->userShapeSize.width (); +} + +//--------------------------------------------------------------------- + +// public +int kpTool::userShapeHeight () const +{ + return d->userShapeSize.height (); +} + +//--------------------------------------------------------------------- + +// public +void kpTool::setUserShapeSize (const QSize &size) +{ + d->userShapeSize = size; + + emit userShapeSizeChanged (d->userShapeSize); +} + +//--------------------------------------------------------------------- + +// public +void kpTool::setUserShapeSize (int width, int height) +{ + setUserShapeSize (QSize (width, height)); +} + +//--------------------------------------------------------------------- diff --git a/tools/kpTool_Utilities.cpp b/tools/kpTool_Utilities.cpp new file mode 100644 index 0000000..825b3c9 --- /dev/null +++ b/tools/kpTool_Utilities.cpp @@ -0,0 +1,294 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// +// Tool utility methods - mainly for subclasses' convenience. +// + + +#define DEBUG_KP_TOOL 0 + + +#include "tools/kpTool.h" +#include "kpToolPrivate.h" + +#include +#include + +#include "kpLogCategories.h" +#include + +#include "commands/kpCommandSize.h" +#include "kpDefs.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "views/kpView.h" + +//--------------------------------------------------------------------- + +// static +QRect kpTool::neededRect (const QRect &rect, int lineWidth) +{ + int x1, y1, x2, y2; + rect.getCoords (&x1, &y1, &x2, &y2); + + if (lineWidth < 1) { + lineWidth = 1; + } + + // TODO: why not divide by 2? + return QRect (QPoint (x1 - lineWidth + 1, y1 - lineWidth + 1), + QPoint (x2 + lineWidth - 1, y2 + lineWidth - 1)); +} + +//--------------------------------------------------------------------- + +// static +QImage kpTool::neededPixmap (const QImage &image, const QRect &boundingRect) +{ + return kpPixmapFX::getPixmapAt (image, boundingRect); +} + +//--------------------------------------------------------------------- + +// public +bool kpTool::hasCurrentPoint () const +{ + return (viewUnderStartPoint () || viewUnderCursor ()); +} + +//--------------------------------------------------------------------- + +// public +QPoint kpTool::calculateCurrentPoint (bool zoomToDoc) const +{ +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "kpTool::currentPoint(zoomToDoc=" << zoomToDoc << ")"; + qCDebug(kpLogTools) << "\tviewUnderStartPoint=" + << (viewUnderStartPoint () ? viewUnderStartPoint ()->objectName () : "(none)") + << " viewUnderCursor=" + << (viewUnderCursor () ? viewUnderCursor ()->objectName () : "(none)") + << endl; +#endif + + kpView *v = viewUnderStartPoint (); + if (!v) + { + v = viewUnderCursor (); + if (!v) + { + #if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\tno view - returning sentinel"; + #endif + return KP_INVALID_POINT; + } + } + + + const QPoint globalPos = QCursor::pos (); + const QPoint viewPos = v->mapFromGlobal (globalPos); +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\tglobalPos=" << globalPos + << " viewPos=" << viewPos; +#endif + if (!zoomToDoc) { + return viewPos; + } + + + const QPoint docPos = v->transformViewToDoc (viewPos); +#if DEBUG_KP_TOOL && 0 + qCDebug(kpLogTools) << "\tdocPos=" << docPos; +#endif + return docPos; +} + +//--------------------------------------------------------------------- + +// public slot +void kpTool::somethingBelowTheCursorChanged () +{ + somethingBelowTheCursorChanged (calculateCurrentPoint (), + calculateCurrentPoint (false/*view point*/)); +} + +//--------------------------------------------------------------------- + +// private +// TODO: don't dup code from mouseMoveEvent() +void kpTool::somethingBelowTheCursorChanged (const QPoint ¤tPoint_, + const QPoint ¤tViewPoint_) +{ +#if DEBUG_KP_TOOL && 1 + qCDebug(kpLogTools) << "kpTool::somethingBelowTheCursorChanged(docPoint=" + << currentPoint_ + << " viewPoint=" + << currentViewPoint_ + << ")" << endl; + qCDebug(kpLogTools) << "\tviewUnderStartPoint=" + << (viewUnderStartPoint () ? viewUnderStartPoint ()->objectName () : "(none)") + << " viewUnderCursor=" + << (viewUnderCursor () ? viewUnderCursor ()->objectName () : "(none)") + << endl; + qCDebug(kpLogTools) << "\tbegan draw=" << d->beganDraw; +#endif + + d->currentPoint = currentPoint_; + d->currentViewPoint = currentViewPoint_; + + if (d->beganDraw) + { + if (d->currentPoint != KP_INVALID_POINT) + { + draw (d->currentPoint, d->lastPoint, normalizedRect ()); + d->lastPoint = d->currentPoint; + } + } + else + { + hover (d->currentPoint); + } +} + +//--------------------------------------------------------------------- + +bool kpTool::currentPointNextToLast () const +{ + if (d->lastPoint == QPoint (-1, -1)) { + return true; + } + + int dx = qAbs (d->currentPoint.x () - d->lastPoint.x ()); + int dy = qAbs (d->currentPoint.y () - d->lastPoint.y ()); + + return (dx <= 1 && dy <= 1); +} + +//--------------------------------------------------------------------- + +bool kpTool::currentPointCardinallyNextToLast () const +{ + if (d->lastPoint == QPoint (-1, -1)) { + return true; + } + + return (d->currentPoint == d->lastPoint || + kpPainter::pointsAreCardinallyAdjacent (d->currentPoint, d->lastPoint)); +} + +//--------------------------------------------------------------------- + +// static +// TODO: we don't handle Qt::XButton1 and Qt::XButton2 at the moment. +int kpTool::mouseButton (Qt::MouseButtons mouseButtons) +{ + // we have nothing to do with mid-buttons + if (mouseButtons & Qt::MiddleButton) { + return -1; + } + + // both left & right together is quite meaningless... + const Qt::MouseButtons bothButtons = (Qt::LeftButton | Qt::RightButton); + if ((mouseButtons & bothButtons) == bothButtons) { + return -1; + } + + if (mouseButtons & Qt::LeftButton) { + return 0; + } + if (mouseButtons & Qt::RightButton) { + return 1; + } + + return -1; +} + +//--------------------------------------------------------------------- + +// public static +int kpTool::calculateLength (int start, int end) +{ + if (start <= end) + { + return end - start + 1; + } + + return end - start - 1; +} + +//--------------------------------------------------------------------- + +// public static +bool kpTool::warnIfBigImageSize (int oldWidth, int oldHeight, + int newWidth, int newHeight, + const QString &text, + const QString &caption, + const QString &continueButtonText, + QWidget *parent) +{ +#if DEBUG_KP_TOOL + qCDebug(kpLogTools) << "kpTool::warnIfBigImageSize()" + << " old: w=" << oldWidth << " h=" << oldWidth + << " new: w=" << newWidth << " h=" << newHeight + << " pixmapSize=" + << kpPixmapFX::pixmapSize (newWidth, + newHeight, + QPixmap::defaultDepth ()) + << " vs BigImageSize=" << KP_BIG_IMAGE_SIZE + << endl; +#endif + + // Only got smaller or unchanged - don't complain + if (!(newWidth > oldWidth || newHeight > oldHeight)) + { + return true; + } + + // Was already large - user was warned before, don't annoy him/her again + if (kpCommandSize::PixmapSize (oldWidth, oldHeight, QPixmap::defaultDepth ()) >= + KP_BIG_IMAGE_SIZE) + { + return true; + } + + if (kpCommandSize::PixmapSize (newWidth, newHeight, QPixmap::defaultDepth ()) >= + KP_BIG_IMAGE_SIZE) + { + int accept = KMessageBox::warningContinueCancel (parent, + text, + caption, + KGuiItem (continueButtonText), + KStandardGuiItem::cancel(), + QStringLiteral ("BigImageDontAskAgain")); + + return (accept == KMessageBox::Continue); + } + + return true; +} + +//--------------------------------------------------------------------- diff --git a/tools/polygonal/kpToolCurve.cpp b/tools/polygonal/kpToolCurve.cpp new file mode 100644 index 0000000..0c1ce7a --- /dev/null +++ b/tools/polygonal/kpToolCurve.cpp @@ -0,0 +1,196 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2017 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_CURVE 0 + + +#include "kpToolCurve.h" +#include "kpLogCategories.h" +#include "environments/tools/kpToolEnvironment.h" +#include "pixmapfx/kpPixmapFX.h" + +#include +#include +#include + +#include + +//-------------------------------------------------------------------------------- + +static void DrawCurveShape (kpImage *image, + const QPolygon &points, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + bool isFinal) +{ + (void) bcolor; + (void) isFinal; + + Q_ASSERT (points.count () >= 2 && points.count () <= 4); + + const QPoint startPoint = points [0]; + const QPoint endPoint = points [1]; + + QPoint controlPointP, controlPointQ; + + switch (points.count ()) + { + // Just a line? + case 2: + controlPointP = startPoint; + controlPointQ = endPoint; + break; + + // Single control point? + case 3: + controlPointP = controlPointQ = points [2]; + break; + + // Two control points? + case 4: + controlPointP = points [2]; + controlPointQ = points [3]; + break; + } + + QPainter painter(image); + painter.setRenderHint(QPainter::Antialiasing, kpToolEnvironment::drawAntiAliased); + + painter.setPen(QPen(fcolor.toQColor(), penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + + if ( kpPixmapFX::Only1PixelInPointArray(points) ) + { + painter.drawPoint(points[0]); + return; + } + + QPainterPath curvePath; + curvePath.moveTo(startPoint); + curvePath.cubicTo(controlPointP, controlPointQ, endPoint); + + painter.strokePath(curvePath, painter.pen()); +} + +//-------------------------------------------------------------------------------- + +kpToolCurve::kpToolCurve (kpToolEnvironment *environ, QObject *parent) + : kpToolPolygonalBase ( + i18n ("Curve"), + i18n ("Draws curves"), + &::DrawCurveShape, + Qt::Key_V, + environ, parent, + QStringLiteral("tool_curve")) +{ +} + +kpToolCurve::~kpToolCurve () = default; + + +// protected virtual [base kpToolPolygonalBase] +QString kpToolCurve::haventBegunShapeUserMessage () const +{ + return i18n ("Drag out the start and end points."); +} + + +// protected virtual [base kpToolPolygonalBase] +bool kpToolCurve::drawingALine () const +{ + // On the initial drag (consisting of 2 points) creates a line. + // Future drags are for control points. + return (points ()->count () == 2); +} + + +// public virtual [base kpTool] +void kpToolCurve::endDraw (const QPoint &, const QRect &) +{ +#if DEBUG_KP_TOOL_CURVE + qCDebug(kpLogTools) << "kpToolCurve::endDraw() points=" + << points ()->toList (); +#endif + + switch (points ()->count ()) + { + // A click of the other mouse button (to finish shape, instead of adding + // another control point) would have caused endShape() to have been + // called in kpToolPolygonalBase::beginDraw(). The points list would now + // be empty. We are being called by kpTool::mouseReleaseEvent(). + case 0: + break; + + case 1: + Q_ASSERT (!"kpToolPolygonalBase::beginDraw() ensures we have >= 2 ctrl points"); + break; + + // Just completed initial line? + case 2: + if (originatingMouseButton () == 0) + { + setUserMessage ( + i18n ("Left drag to set the first control point or right click to finish.")); + } + else + { + setUserMessage ( + i18n ("Right drag to set the first control point or left click to finish.")); + } + + break; + + // Have initial line and first control point? + case 3: + if (originatingMouseButton () == 0) + { + setUserMessage ( + i18n ("Left drag to set the last control point or right click to finish.")); + } + else + { + setUserMessage ( + i18n ("Right drag to set the last control point or left click to finish.")); + } + + break; + + // Have initial line and both control points? + case 4: + #if DEBUG_KP_TOOL_CURVE + qCDebug(kpLogTools) << "\tending shape"; + #endif + endShape (); + break; + + default: + Q_ASSERT (!"Impossible number of points"); + break; + } +} + + diff --git a/tools/polygonal/kpToolCurve.h b/tools/polygonal/kpToolCurve.h new file mode 100644 index 0000000..faa0048 --- /dev/null +++ b/tools/polygonal/kpToolCurve.h @@ -0,0 +1,54 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_CURVE_H +#define KP_TOOL_CURVE_H + + +#include "kpToolPolygonalBase.h" + + +class kpToolCurve : public kpToolPolygonalBase +{ +Q_OBJECT + +public: + kpToolCurve (kpToolEnvironment *environ, QObject *parent); + ~kpToolCurve () override; + +protected: + QString haventBegunShapeUserMessage () const override; + + bool drawingALine () const override; + +public: + void endDraw (const QPoint &, const QRect &) override; +}; + + +#endif // KP_TOOL_CURVE_H diff --git a/tools/polygonal/kpToolLine.cpp b/tools/polygonal/kpToolLine.cpp new file mode 100644 index 0000000..ef12bb2 --- /dev/null +++ b/tools/polygonal/kpToolLine.cpp @@ -0,0 +1,73 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_LINE 0 + + +#include "kpToolLine.h" +#include "kpToolPolyline.h" +#include "kpLogCategories.h" + +#include + +//-------------------------------------------------------------------------------- + +kpToolLine::kpToolLine (kpToolEnvironment *environ, QObject *parent) + : kpToolPolygonalBase ( + i18n ("Line"), + i18n ("Draws lines"), + &kpToolPolyline::drawShape, + Qt::Key_L, + environ, parent, + QStringLiteral("tool_line")) +{ +} + +//-------------------------------------------------------------------------------- + +// private virtual [base kpToolPolygonalBase] +QString kpToolLine::haventBegunShapeUserMessage () const +{ + return i18n ("Drag to draw."); +} + +//-------------------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolLine::endDraw (const QPoint &, const QRect &) +{ +#if DEBUG_KP_TOOL_LINE + qCDebug(kpLogTools) << "kpToolLine::endDraw() points=" + << points ()->toList () << endl; +#endif + + // After the first drag, we should have a line. + Q_ASSERT (points ()->count () == 2); + endShape (); +} + +//-------------------------------------------------------------------------------- diff --git a/tools/polygonal/kpToolLine.h b/tools/polygonal/kpToolLine.h new file mode 100644 index 0000000..7f11750 --- /dev/null +++ b/tools/polygonal/kpToolLine.h @@ -0,0 +1,51 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_LINE_H +#define KP_TOOL_LINE_H + + +#include "kpToolPolygonalBase.h" + + +class kpToolLine : public kpToolPolygonalBase +{ +Q_OBJECT + +public: + kpToolLine (kpToolEnvironment *environ, QObject *parent); + +private: + QString haventBegunShapeUserMessage () const override; + +public: + void endDraw (const QPoint &, const QRect &) override; +}; + + +#endif // KP_TOOL_LINE_H diff --git a/tools/polygonal/kpToolPolygon.cpp b/tools/polygonal/kpToolPolygon.cpp new file mode 100644 index 0000000..07505f0 --- /dev/null +++ b/tools/polygonal/kpToolPolygon.cpp @@ -0,0 +1,190 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2017 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_POLYGON 0 + + +#include "kpToolPolygon.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "environments/tools/kpToolEnvironment.h" +#include "imagelib/kpColor.h" +#include "pixmapfx/kpPixmapFX.h" + +#include + +#include +#include + +//-------------------------------------------------------------------------------- + +static void DrawPolygonShape (kpImage *image, + const QPolygon &points, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + bool isFinal) +{ + QPainter painter(image); + painter.setRenderHint(QPainter::Antialiasing, kpToolEnvironment::drawAntiAliased); + + painter.setPen(QPen(fcolor.toQColor(), penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + + if ( kpPixmapFX::Only1PixelInPointArray(points) ) + { + painter.drawPoint(points[0]); + return; + } + + if ( bcolor.isValid() ) { + painter.setBrush(QBrush(bcolor.toQColor())); + } + else { + painter.setBrush(Qt::NoBrush); + } + + painter.drawPolygon(points, Qt::OddEvenFill); + + if ( isFinal ) { + return; + } + + if ( points.count() <= 2 ) { + return; + } + + painter.setCompositionMode(QPainter::RasterOp_SourceXorDestination); + painter.setPen(QPen(Qt::white)); + painter.drawLine(points[0], points[points.count() - 1]); +} + +//-------------------------------------------------------------------------------- + +struct kpToolPolygonPrivate +{ + kpToolWidgetFillStyle *toolWidgetFillStyle; +}; + +kpToolPolygon::kpToolPolygon (kpToolEnvironment *environ, QObject *parent) + : kpToolPolygonalBase ( + i18n ("Polygon"), + i18n ("Draws polygons"), + &::DrawPolygonShape, + Qt::Key_G, + environ, parent, + QStringLiteral("tool_polygon")), + d (new kpToolPolygonPrivate ()) +{ +} + +kpToolPolygon::~kpToolPolygon () +{ + delete d; +} + + +// private virtual [base kpToolPolygonBase] +QString kpToolPolygon::haventBegunShapeUserMessage () const +{ + return i18n ("Drag to draw the first line."); +} + + +// public virtual [base kpToolPolygonalBase] +void kpToolPolygon::begin () +{ + kpToolPolygonalBase::begin (); + + kpToolToolBar *tb = toolToolBar (); + Q_ASSERT (tb); + + d->toolWidgetFillStyle = tb->toolWidgetFillStyle (); + connect (d->toolWidgetFillStyle, &kpToolWidgetFillStyle::fillStyleChanged, + this, &kpToolPolygon::updateShape); + d->toolWidgetFillStyle->show (); +} + +// public virtual [base kpToolPolygonalBase] +void kpToolPolygon::end () +{ + kpToolPolygonalBase::end (); + + disconnect (d->toolWidgetFillStyle, &kpToolWidgetFillStyle::fillStyleChanged, + this, &kpToolPolygon::updateShape); + d->toolWidgetFillStyle = nullptr; +} + + +// TODO: code dup with kpToolRectangle +// protected virtual [base kpToolPolygonalBase] +kpColor kpToolPolygon::drawingBackgroundColor () const +{ + const kpColor foregroundColor = color (originatingMouseButton ()); + const kpColor backgroundColor = color (1 - originatingMouseButton ()); + + return d->toolWidgetFillStyle->drawingBackgroundColor ( + foregroundColor, backgroundColor); +} + + +// public virtual [base kpTool] +// TODO: dup with kpToolPolyline but we don't want to create another level of +// inheritance and readability. +void kpToolPolygon::endDraw (const QPoint &, const QRect &) +{ +#if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "kpToolPolygon::endDraw() points=" + << points ()->toList (); +#endif + + // A click of the other mouse button (to finish shape, instead of adding + // another control point) would have caused endShape() to have been + // called in kpToolPolygonalBase::beginDraw(). The points list would now + // be empty. We are being called by kpTool::mouseReleaseEvent(). + if (points ()->count () == 0) { + return; + } + + if (points ()->count () >= kpToolPolygonalBase::MaxPoints) + { + #if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "\tending shape"; + #endif + endShape (); + return; + } + + if (originatingMouseButton () == 0) + { + setUserMessage (i18n ("Left drag another line or right click to finish.")); + } + else + { + setUserMessage (i18n ("Right drag another line or left click to finish.")); + } +} + + diff --git a/tools/polygonal/kpToolPolygon.h b/tools/polygonal/kpToolPolygon.h new file mode 100644 index 0000000..83de7be --- /dev/null +++ b/tools/polygonal/kpToolPolygon.h @@ -0,0 +1,62 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_POLYGON_H +#define KP_TOOL_POLYGON_H + + +#include "kpToolPolygonalBase.h" + + +class kpToolPolygon : public kpToolPolygonalBase +{ +Q_OBJECT + +public: + kpToolPolygon (kpToolEnvironment *environ, QObject *parent); + ~kpToolPolygon () override; + +private: + QString haventBegunShapeUserMessage () const override; + +public: + void begin () override; + void end () override; + +protected: + kpColor drawingBackgroundColor () const override; + +public: + void endDraw (const QPoint &, const QRect &) override; + +private: + struct kpToolPolygonPrivate *d; +}; + + +#endif // KP_TOOL_POLYGON_H diff --git a/tools/polygonal/kpToolPolygonalBase.cpp b/tools/polygonal/kpToolPolygonalBase.cpp new file mode 100644 index 0000000..51e2224 --- /dev/null +++ b/tools/polygonal/kpToolPolygonalBase.cpp @@ -0,0 +1,498 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_POLYGON 0 + + +#include "kpToolPolygonalBase.h" + +#include +#include + +#include +#include + +#include + +#include "kpLogCategories.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "kpDefs.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "layers/tempImage/kpTempImage.h" +#include "environments/tools/kpToolEnvironment.h" +#include "commands/tools/polygonal/kpToolPolygonalCommand.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetLineWidth.h" +#include "views/manager/kpViewManager.h" + + +struct kpToolPolygonalBasePrivate +{ + kpToolPolygonalBasePrivate () + : drawShapeFunc(nullptr), toolWidgetLineWidth(nullptr), originatingMouseButton(-1) + { + } + + kpToolPolygonalBase::DrawShapeFunc drawShapeFunc; + + kpToolWidgetLineWidth *toolWidgetLineWidth; + + int originatingMouseButton; + + QPolygon points; +}; + +//--------------------------------------------------------------------- + +kpToolPolygonalBase::kpToolPolygonalBase ( + const QString &text, + const QString &description, + DrawShapeFunc drawShapeFunc, + int key, + kpToolEnvironment *environ, QObject *parent, + const QString &name) + + : kpTool (text, description, key, environ, parent, name), + d (new kpToolPolygonalBasePrivate ()) +{ + d->drawShapeFunc = drawShapeFunc; + + d->toolWidgetLineWidth = nullptr; + + // (hopefully cause crash if we use it before initialising it) + d->originatingMouseButton = -1; +} + +//--------------------------------------------------------------------- + +kpToolPolygonalBase::~kpToolPolygonalBase () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolPolygonalBase::begin () +{ + kpToolToolBar *tb = toolToolBar (); + Q_ASSERT (tb); + +#if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "kpToolPolygonalBase::begin() tb=" << tb; +#endif + + d->toolWidgetLineWidth = tb->toolWidgetLineWidth (); + connect (d->toolWidgetLineWidth, &kpToolWidgetLineWidth::lineWidthChanged, + this, &kpToolPolygonalBase::updateShape); + d->toolWidgetLineWidth->show (); + + viewManager ()->setCursor (QCursor (Qt::ArrowCursor)); + + d->originatingMouseButton = -1; + + setUserMessage (/*virtual*/haventBegunShapeUserMessage ()); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolPolygonalBase::end () +{ + // TODO: needed? + endShape (); + + disconnect (d->toolWidgetLineWidth, &kpToolWidgetLineWidth::lineWidthChanged, + this, &kpToolPolygonalBase::updateShape); + d->toolWidgetLineWidth = nullptr; + + viewManager ()->unsetCursor (); +} + + +void kpToolPolygonalBase::beginDraw () +{ +#if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "kpToolPolygonalBase::beginDraw() d->points=" << d->points.toList () + << ", startPoint=" << startPoint (); +#endif + + bool endedShape = false; + + // We now need to start with dragging out the initial line? + if (d->points.count () == 0) + { + d->originatingMouseButton = mouseButton (); + + // The line starts and ends at the start point of the drag. + // draw() will modify the last point in d->points to reflect the + // mouse drag, as the drag proceeds. + d->points.append (startPoint ()); + d->points.append (startPoint ()); + } + // Already have control points - not dragging out initial line. + else + { + // Clicking the other mouse button? + if (mouseButton () != d->originatingMouseButton) + { + // Finish shape. TODO: I suspect we need to call endShapeInternal instead. + endShape (); + endedShape = true; + } + // Are we dragging out an extra control point? + else + { + // Add another control point. + d->points.append (startPoint ()); + } + } + +#if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "\tafterwards, d->points=" << d->points.toList (); +#endif + + if (!endedShape) + { + // We've started dragging. Print instructions on how to cancel shape. + setUserMessage (cancelUserMessage ()); + } +} + + +// protected +void kpToolPolygonalBase::applyModifiers () +{ + const int count = d->points.count (); + + QPoint &lineStartPoint = d->points [count - 2]; + QPoint &lineEndPoint = d->points [count - 1]; + +#if DEBUG_KP_TOOL_POLYGON && 1 + qCDebug(kpLogTools) << "kpToolPolygonalBase::applyModifiers() #pts=" << count + << " line: startPt=" << lineStartPoint + << " endPt=" << lineEndPoint + << " modifiers: shift=" << shiftPressed () + << " alt=" << altPressed () + << " ctrl=" << controlPressed (); +#endif + + // angles + if (shiftPressed () || controlPressed ()) + { + int diffx = lineEndPoint.x () - lineStartPoint.x (); + int diffy = lineEndPoint.y () - lineStartPoint.y (); + + double ratio; + if (diffx == 0) { + ratio = DBL_MAX; + } + else { + ratio = fabs (double (diffy) / double (diffx)); + } + #if DEBUG_KP_TOOL_POLYGON && 1 + qCDebug(kpLogTools) << "\tdiffx=" << diffx << " diffy=" << diffy + << " ratio=" << ratio; + #endif + + // Shift = 0, 45, 90 + // Ctrl = 0, 30, 60, 90 + // Shift + Ctrl = 0, 30, 45, 60, 90 + double angles [10]; // "ought to be enough for anybody" + int numAngles = 0; + angles [numAngles++] = 0; + if (controlPressed ()) { + angles [numAngles++] = M_PI / 6; + } + if (shiftPressed ()) { + angles [numAngles++] = M_PI / 4; + } + if (controlPressed ()) { + angles [numAngles++] = M_PI / 3; + } + angles [numAngles++] = M_PI / 2; + Q_ASSERT (numAngles <= int (sizeof (angles) / sizeof (angles [0]))); + + double angle = angles [numAngles - 1]; + for (int i = 0; i < numAngles - 1; i++) + { + double acceptingRatio = std::tan ((angles [i] + angles [i + 1]) / 2.0); + if (ratio < acceptingRatio) + { + angle = angles [i]; + break; + } + } + + // horizontal (dist from start not maintained) + if (std::fabs (qRadiansToDegrees (angle) - 0) + < kpPixmapFX::AngleInDegreesEpsilon) + { + lineEndPoint = + QPoint (lineEndPoint.x (), lineStartPoint.y ()); + } + // vertical (dist from start not maintained) + else if (std::fabs (qRadiansToDegrees (angle) - 90) + < kpPixmapFX::AngleInDegreesEpsilon) + { + lineEndPoint = + QPoint (lineStartPoint.x (), lineEndPoint.y ()); + } + // diagonal (dist from start maintained) + else + { + const double dist = std::sqrt (static_cast (diffx * diffx + diffy * diffy)); + + #define sgn(a) ((a)<0?-1:1) + // Round distances _before_ adding to any coordinate + // (ensures consistent rounding behaviour in x & y directions) + const int newdx = qRound (dist * cos (angle) * sgn (diffx)); + const int newdy = qRound (dist * sin (angle) * sgn (diffy)); + #undef sgn + + lineEndPoint = QPoint (lineStartPoint.x () + newdx, + lineStartPoint.y () + newdy); + + #if DEBUG_KP_TOOL_POLYGON && 1 + qCDebug(kpLogTools) << "\t\tdiagonal line: dist=" << dist + << " angle=" << (angle * 180 / M_PI) + << " endPoint=" << lineEndPoint; + #endif + } + } // if (shiftPressed () || controlPressed ()) { + + // centring + if (altPressed () && 0/*ALT is unreliable*/) + { + // start = start - diff + // = start - (end - start) + // = start - end + start + // = 2 * start - end + if (count == 2) { + lineStartPoint += (lineStartPoint - lineEndPoint); + } + else { + lineEndPoint += (lineEndPoint - lineStartPoint); + } + } // if (altPressed ()) { +} + + +// protected +QPolygon *kpToolPolygonalBase::points () const +{ + return &d->points; +} + + +// protected +int kpToolPolygonalBase::originatingMouseButton () const +{ + Q_ASSERT (hasBegunShape ()); + return d->originatingMouseButton; +} + + +// virtual +void kpToolPolygonalBase::draw (const QPoint &, const QPoint &, const QRect &) +{ + // A click of the other mouse button (to finish shape, instead of adding + // another control point) would have caused endShape() to have been + // called in kpToolPolygonalBase::beginDraw(). The points list would now + // be empty. We are being called by kpTool::mouseReleaseEvent(). + if (d->points.count () == 0) { + return; + } + +#if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "kpToolPolygonalBase::draw() d->points=" << d->points.toList () + << ", endPoint=" << currentPoint (); +#endif + + // Update points() so that last point reflects current mouse position. + const int count = d->points.count (); + d->points [count - 1] = currentPoint (); + +#if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "\tafterwards, d->points=" << d->points.toList (); +#endif + + // Are we drawing a line? + if (/*virtual*/drawingALine ()) + { + // Adjust the line (end points given by the last 2 points of points()) + // in response to keyboard modifiers. + applyModifiers (); + + // Update the preview of the shape. + updateShape (); + + // Inform the user that we're dragging out a line with 2 control points. + setUserShapePoints (d->points [count - 2], d->points [count - 1]); + } + // We're modifying a point. + else + { + // Update the preview of the shape. + updateShape (); + + // Informs the user that we're just modifying a point (perhaps, a control + // point of a Bezier). + setUserShapePoints (d->points [count - 1]); + } +} + + +// TODO: code dup with kpToolRectangle +// private +kpColor kpToolPolygonalBase::drawingForegroundColor () const +{ + return color (originatingMouseButton ()); +} + +// protected virtual +kpColor kpToolPolygonalBase::drawingBackgroundColor () const +{ + return kpColor::Invalid; +} + +// TODO: code dup with kpToolRectangle +// protected slot +void kpToolPolygonalBase::updateShape () +{ + if (d->points.count () == 0) { + return; + } + + const QRect boundingRect = kpTool::neededRect ( + d->points.boundingRect (), + d->toolWidgetLineWidth->lineWidth ()); + +#if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "kpToolPolygonalBase::updateShape() boundingRect=" + << boundingRect + << " lineWidth=" + << d->toolWidgetLineWidth->lineWidth () + << endl; +#endif + + kpImage image = document ()->getImageAt (boundingRect); + + QPolygon pointsTranslated = d->points; + pointsTranslated.translate (-boundingRect.x (), -boundingRect.y ()); + + (*d->drawShapeFunc) (&image, + pointsTranslated, + drawingForegroundColor (), d->toolWidgetLineWidth->lineWidth (), + /*virtual*/drawingBackgroundColor (), + false/*not final*/); + + kpTempImage newTempImage (false/*always display*/, + kpTempImage::SetImage/*render mode*/, + boundingRect.topLeft (), + image); + + viewManager ()->setFastUpdates (); + { + viewManager ()->setTempImage (newTempImage); + } + viewManager ()->restoreFastUpdates (); +} + +// virtual +void kpToolPolygonalBase::cancelShape () +{ + viewManager ()->invalidateTempImage (); + d->points.resize (0); + + setUserMessage (i18n ("Let go of all the mouse buttons.")); +} + +void kpToolPolygonalBase::releasedAllButtons () +{ + if (!hasBegunShape ()) { + setUserMessage (/*virtual*/haventBegunShapeUserMessage ()); + } + + // --- else case already handled by endDraw() --- +} + +// public virtual [base kpTool] +void kpToolPolygonalBase::endShape (const QPoint &, const QRect &) +{ +#if DEBUG_KP_TOOL_POLYGON + qCDebug(kpLogTools) << "kpToolPolygonalBase::endShape() d->points=" + << d->points.toList () << endl; +#endif + + if (!hasBegunShape ()) { + return; + } + + viewManager ()->invalidateTempImage (); + + QRect boundingRect = kpTool::neededRect ( + d->points.boundingRect (), + d->toolWidgetLineWidth->lineWidth ()); + + commandHistory ()->addCommand ( + new kpToolPolygonalCommand ( + text (), + d->drawShapeFunc, + d->points, boundingRect, + drawingForegroundColor (), d->toolWidgetLineWidth->lineWidth (), + /*virtual*/drawingBackgroundColor (), + environ ()->commandEnvironment ())); + + d->points.resize (0); + setUserMessage (/*virtual*/haventBegunShapeUserMessage ()); + +} + +// public virtual [base kpTool] +bool kpToolPolygonalBase::hasBegunShape () const +{ + return (d->points.count () > 0); +} + + +// virtual protected slot [base kpTool] +void kpToolPolygonalBase::slotForegroundColorChanged (const kpColor &) +{ + updateShape (); +} + +// virtual protected slot [base kpTool] +void kpToolPolygonalBase::slotBackgroundColorChanged (const kpColor &) +{ + updateShape (); +} + + diff --git a/tools/polygonal/kpToolPolygonalBase.h b/tools/polygonal/kpToolPolygonalBase.h new file mode 100644 index 0000000..acd5ea9 --- /dev/null +++ b/tools/polygonal/kpToolPolygonalBase.h @@ -0,0 +1,200 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolPolygonalBase_H +#define kpToolPolygonalBase_H + + +#include +#include + +#include "imagelib/kpColor.h" +#include "imagelib/kpImage.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/options/kpToolWidgetFillStyle.h" + + +class QPolygon; +class QString; + + +class kpToolWidgetFillStyle; + + +struct kpToolPolygonalBasePrivate; + +// +// This tool base class is for shapes that contain at least an initial line that +// is dragged out (i.e. at least 2 control points). +// +// The tool can also choose to allow an additional point to be added for each +// additional drag or click. +// +// To specify whichever behavior, subclasses must implement endDraw() from +// kpTool and use points(): +// +// 1. If the shape is incomplete, call setUserMessage() with a message +// telling the user what can be done next. +// 2. If the shape is complete, call endShape(). See also MaxPoints. +// +// If additional points are supported by the user's implementation of endDraw(), +// beginDraw() will enforce the following behavior: +// +// Clicking the mouse button not used for the initial line drag will +// end the shape. +// +// This behavior cannot be altered by a subclass. +// +// beginDraw() will ensure that points() contains 2 points on the initial line +// drag. It will add an extra point for each additional point that is dragged. +// +// You may wish to reimplement drawingALine() if your shape does not consist of +// just connected lines e.g. while the Curve tool, on the initial drag, creates +// a line (consisting of the 2 points returned by points()), future drags do not +// create extra lines - they actually modify the Bezier control points. +// +// The actual rendering is performed by the function passed in +// the constructor. +// +class kpToolPolygonalBase : public kpTool +{ +Q_OBJECT + +public: + typedef void (*DrawShapeFunc) (kpImage * /*image*/, + const QPolygon &/*points*/, + const kpColor &/*fcolor*/, int /*penWidth = 1*/, + const kpColor &/*bcolor = kpColor::Invalid*/, + bool /*isFinal*/); + + // + kpToolPolygonalBase (const QString &text, const QString &description, + DrawShapeFunc drawShapeFunc, + int key, + kpToolEnvironment *environ, QObject *parent, + const QString &name); + ~kpToolPolygonalBase () override; + + bool careAboutModifierState () const override { return true; } + +protected: + // The maximum number of points() we should allow (mainly, to ensure + // good performance). Enforced by implementors of endShape(). + static const int MaxPoints = 50; + + virtual QString haventBegunShapeUserMessage () const = 0; + +public: + void begin () override; + void end () override; + + void beginDraw () override; + +protected: + // Adjusts the current line (end points given by the last 2 points of points()) + // in response to keyboard modifiers: + // + // No modifiers: Does nothing + // Shift : Clamps the line to 45 degrees increments + // Ctrl : Clamps the line to 30 degrees increments + // Alt : [currently disabled] Makes the starting point the center + // point of the line. + // + // It is possible to depress multiple modifiers for combined effects e.g. + // Ctrl+Shift clamps the line to 30 and 45 degree increments i.e. + // 0, 30, 45, 60, 90, 120, 135, 150, 180, 210, ... degrees. + // + // This really only makes sense if drawingALine() returns true, where draw() + // will call applyModifiers() automatically. Otherwise, if it returns false, + // it doesn't really make sense to call applyModifiers() (in a hypothetical + // reimplementation of draw()) because you're not manipulating a line - but + // you can still call applyModifiers() if you want. + void applyModifiers (); + + // Returns the current points in the shape. It is updated by beginDraw() + // (see the class description). + // + // draw() sets the last point to the currentPoint(). If drawingALine(), + // draw() then calls applyModifiers(). + QPolygon *points () const; + + // Returns the mouse button for the drag that created the initial line. + // Use this - instead of mouseButton() - for determining whether you should + // use the left mouse button's or right mouse button's color. This is because + // the user presses the other mouse button to finish the shape (so mouseButton() + // will return the wrong one, after the initial line). + // + // Only valid if kpTool::hasBegunShape() returns true. + int originatingMouseButton () const; + + // Returns true if the current drag is visually a line from the 2nd last point + // of points() to the last point of points() e.g. the initial line drag for + // a Curve and all drags for a Polygon or Polyline. draw() will call + // applyModifiers() and update the statusbar with those 2 points. + // + // Returns false if the current drag only draws something based on the last + // point of points() e.g. a control point of a Bezier curve. draw() will + // _not_ call applyModifiers(). It will update the statubar with just that + // point. + // + // Reimplement this if not all points are used to construct connected lines. + // For instance, the Curve tool will return "true" to construct a line, on + // the initial drag. However, for the following 2 control points, it returns + // "false". The Curve tool realizes it is an initial drag if points() only + // returns 2 points. + virtual bool drawingALine () const { return true; } +public: + void draw (const QPoint &, const QPoint &, const QRect &) override; +private: + kpColor drawingForegroundColor () const; +protected: + // This returns the invalid color so that there is never a fill. + // This is in contrast to kpToolRectangularBase, which sometimes fills by + // returning a valid color. + // + // Reimplemented in the Polygon tool for a fill. + virtual kpColor drawingBackgroundColor () const; +protected slots: + void updateShape (); +public: + void cancelShape () override; + void releasedAllButtons () override; + void endShape (const QPoint & = QPoint (), const QRect & = QRect ()) override; + + bool hasBegunShape () const override; + +protected slots: + void slotForegroundColorChanged (const kpColor &) override; + void slotBackgroundColorChanged (const kpColor &) override; + +private: + kpToolPolygonalBasePrivate * const d; +}; + + +#endif // kpToolPolygonalBase_H diff --git a/tools/polygonal/kpToolPolyline.cpp b/tools/polygonal/kpToolPolyline.cpp new file mode 100644 index 0000000..7bc8cba --- /dev/null +++ b/tools/polygonal/kpToolPolyline.cpp @@ -0,0 +1,125 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_POLYLINE 0 + + +#include "kpToolPolyline.h" +#include "kpLogCategories.h" +#include "environments/tools/kpToolEnvironment.h" +#include "pixmapfx/kpPixmapFX.h" + +#include + +#include +#include + +//-------------------------------------------------------------------------------- + +kpToolPolyline::kpToolPolyline (kpToolEnvironment *environ, QObject *parent) + : kpToolPolygonalBase ( + i18n ("Connected Lines"), + i18n ("Draws connected lines"), + &drawShape, + Qt::Key_N, + environ, parent, + QStringLiteral("tool_polyline")) +{ +} + +//-------------------------------------------------------------------------------- + +// private virtual [base kpToolPolygonalBase] +QString kpToolPolyline::haventBegunShapeUserMessage () const +{ + return i18n ("Drag to draw the first line."); +} + +//-------------------------------------------------------------------------------- +// public static + +void kpToolPolyline::drawShape(kpImage *image, + const QPolygon &points, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + bool isFinal) +{ + (void) bcolor; + (void) isFinal; + + QPainter painter(image); + painter.setRenderHint(QPainter::Antialiasing, kpToolEnvironment::drawAntiAliased); + + painter.setPen(QPen(fcolor.toQColor(), penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + + if ( kpPixmapFX::Only1PixelInPointArray(points) ) { + painter.drawPoint(points[0]); + } + else { + painter.drawPolyline(points); + } +} + +//-------------------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpToolPolyline::endDraw (const QPoint &, const QRect &) +{ +#if DEBUG_KP_TOOL_POLYLINE + qCDebug(kpLogTools) << "kpToolPolyline::endDraw() points=" + << points ()->toList (); +#endif + + // A click of the other mouse button (to finish shape, instead of adding + // another control point) would have caused endShape() to have been + // called in kpToolPolygonalBase::beginDraw(). The points list would now + // be empty. We are being called by kpTool::mouseReleaseEvent(). + if (points ()->count () == 0) { + return; + } + + if (points ()->count () >= kpToolPolygonalBase::MaxPoints) + { + #if DEBUG_KP_TOOL_POLYLINE + qCDebug(kpLogTools) << "\tending shape"; + #endif + endShape (); + return; + } + + if (originatingMouseButton () == 0) + { + setUserMessage (i18n ("Left drag another line or right click to finish.")); + } + else + { + setUserMessage (i18n ("Right drag another line or left click to finish.")); + } +} + + diff --git a/tools/polygonal/kpToolPolyline.h b/tools/polygonal/kpToolPolyline.h new file mode 100644 index 0000000..08ec3fd --- /dev/null +++ b/tools/polygonal/kpToolPolyline.h @@ -0,0 +1,58 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_POLYLINE_H +#define KP_TOOL_POLYLINE_H + + +#include "kpToolPolygonalBase.h" + + +class kpToolPolyline : public kpToolPolygonalBase +{ +Q_OBJECT + +public: + kpToolPolyline (kpToolEnvironment *environ, QObject *parent); + +private: + QString haventBegunShapeUserMessage () const override; + +public: + // (used by kpToolLine) + static void drawShape(kpImage *image, + const QPolygon &points, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor, + bool isFinal); + + void endDraw (const QPoint &, const QRect &) override; +}; + + +#endif // KP_TOOL_POLYLINE_H diff --git a/tools/rectangular/kpToolEllipse.cpp b/tools/rectangular/kpToolEllipse.cpp new file mode 100644 index 0000000..49598a6 --- /dev/null +++ b/tools/rectangular/kpToolEllipse.cpp @@ -0,0 +1,86 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2017 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpToolEllipse.h" +#include "environments/tools/kpToolEnvironment.h" +#include "imagelib/kpColor.h" + +#include + +#include +#include +#include + +//--------------------------------------------------------------------- + +kpToolEllipse::kpToolEllipse (kpToolEnvironment *environ, QObject *parent) + : kpToolRectangularBase (i18n ("Ellipse"), + i18n ("Draws ellipses and circles"), + &kpToolEllipse::drawEllipse, + Qt::Key_E, + environ, parent, QStringLiteral("tool_ellipse")) +{ +} + +//--------------------------------------------------------------------- + +void kpToolEllipse::drawEllipse(kpImage *image, + int x, int y, int width, int height, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor) +{ + if ( (width == 0) || (height == 0) ) { + return; + } + + QPainter painter(image); + painter.setRenderHint(QPainter::Antialiasing, kpToolEnvironment::drawAntiAliased); + + if ( ((2 * penWidth) > width) || ((2 * penWidth) > height) ) { + penWidth = qMin(width, height) / 2; + } + + painter.setPen(QPen(fcolor.toQColor(), penWidth)); + + if ( bcolor.isValid() ) { + painter.setBrush(QBrush(bcolor.toQColor())); + } + else { + painter.setBrush(Qt::NoBrush); + } + + int offset = painter.testRenderHint(QPainter::Antialiasing) ? 1 : 0; + + painter.drawEllipse( + x + penWidth / 2 + offset, + y + penWidth / 2 + offset, + qMax(1, width - penWidth - offset), + qMax(1, height - penWidth - offset)); +} + +//--------------------------------------------------------------------- diff --git a/tools/rectangular/kpToolEllipse.h b/tools/rectangular/kpToolEllipse.h new file mode 100644 index 0000000..5c90f1c --- /dev/null +++ b/tools/rectangular/kpToolEllipse.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_ELLIPSE_H +#define KP_TOOL_ELLIPSE_H + + +#include "tools/rectangular/kpToolRectangularBase.h" + + +class kpToolEllipse : public kpToolRectangularBase +{ +Q_OBJECT + +public: + kpToolEllipse (kpToolEnvironment *environ, QObject *parent); + + static void drawEllipse(kpImage *image, + int x, int y, int width, int height, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor); +}; + + +#endif // KP_TOOL_ELLIPSE_H diff --git a/tools/rectangular/kpToolRectangle.cpp b/tools/rectangular/kpToolRectangle.cpp new file mode 100644 index 0000000..c28a8e9 --- /dev/null +++ b/tools/rectangular/kpToolRectangle.cpp @@ -0,0 +1,83 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2017 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpToolRectangle.h" + +#include "environments/tools/kpToolEnvironment.h" +#include "imagelib/kpColor.h" + +#include + +#include +#include +#include + +//--------------------------------------------------------------------- + +kpToolRectangle::kpToolRectangle (kpToolEnvironment *environ, QObject *parent) + : kpToolRectangularBase(i18n("Rectangle"), + i18n("Draws rectangles and squares"), + &kpToolRectangle::drawRect, + Qt::Key_R, + environ, parent, QStringLiteral("tool_rectangle")) +{ +} + +//--------------------------------------------------------------------- + +void kpToolRectangle::drawRect(kpImage *image, + int x, int y, int width, int height, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor) +{ + if ( (width == 0) || (height == 0) ) + return; + + QPainter painter(image); + painter.setRenderHint(QPainter::Antialiasing, kpToolEnvironment::drawAntiAliased); + + if ( ((2 * penWidth) > width) || ((2 * penWidth) > height) ) + penWidth = qMin(width, height) / 2; + + painter.setPen(QPen(fcolor.toQColor(), penWidth, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin)); + + if ( bcolor.isValid() ) + painter.setBrush(QBrush(bcolor.toQColor())); + else + painter.setBrush(Qt::NoBrush); + + int offset = painter.testRenderHint(QPainter::Antialiasing) ? 1 : 0; + + painter.drawRect( + x + penWidth / 2 + offset, + y + penWidth / 2 + offset, + qMax(1, width - penWidth - offset), + qMax(1, height - penWidth - offset)); +} + +//--------------------------------------------------------------------- diff --git a/tools/rectangular/kpToolRectangle.h b/tools/rectangular/kpToolRectangle.h new file mode 100644 index 0000000..e43b010 --- /dev/null +++ b/tools/rectangular/kpToolRectangle.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_RECTANGLE_H +#define KP_TOOL_RECTANGLE_H + + +#include "tools/rectangular/kpToolRectangularBase.h" + + +class kpToolRectangle : public kpToolRectangularBase +{ +Q_OBJECT + +public: + kpToolRectangle (kpToolEnvironment *environ, QObject *parent); + + static void drawRect(kpImage *image, + int x, int y, int width, int height, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor); +}; + + +#endif // KP_TOOL_RECTANGLE_H diff --git a/tools/rectangular/kpToolRectangularBase.cpp b/tools/rectangular/kpToolRectangularBase.cpp new file mode 100644 index 0000000..ef961eb --- /dev/null +++ b/tools/rectangular/kpToolRectangularBase.cpp @@ -0,0 +1,388 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_RECTANGULAR_BASE 0 + + +#include "tools/rectangular/kpToolRectangularBase.h" + +#include + +#include "kpLogCategories.h" +#include + +#include "imagelib/kpColor.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "layers/tempImage/kpTempImage.h" +#include "environments/tools/kpToolEnvironment.h" +#include "commands/tools/rectangular/kpToolRectangularCommand.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetFillStyle.h" +#include "widgets/toolbars/options/kpToolWidgetLineWidth.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + + +//--------------------------------------------------------------------- + +struct kpToolRectangularBasePrivate +{ + kpToolRectangularBase::DrawShapeFunc drawShapeFunc{}; + + kpToolWidgetLineWidth *toolWidgetLineWidth{}; + kpToolWidgetFillStyle *toolWidgetFillStyle{}; + + QRect toolRectangleRect; +}; + +//--------------------------------------------------------------------- + +kpToolRectangularBase::kpToolRectangularBase ( + const QString &text, + const QString &description, + DrawShapeFunc drawShapeFunc, + int key, + kpToolEnvironment *environ, QObject *parent, + const QString &name) + + : kpTool (text, description, key, environ, parent, name), + d (new kpToolRectangularBasePrivate ()) +{ + d->drawShapeFunc = drawShapeFunc; + + d->toolWidgetLineWidth = nullptr; + d->toolWidgetFillStyle = nullptr; +} + +//--------------------------------------------------------------------- + +kpToolRectangularBase::~kpToolRectangularBase () +{ + delete d; +} + +//--------------------------------------------------------------------- + + +// private slot virtual +void kpToolRectangularBase::slotLineWidthChanged () +{ + if (hasBegunDraw ()) { + updateShape (); + } +} + +//--------------------------------------------------------------------- + +// private slot virtual +void kpToolRectangularBase::slotFillStyleChanged () +{ + if (hasBegunDraw ()) { + updateShape (); + } +} + +//--------------------------------------------------------------------- + +// private +QString kpToolRectangularBase::haventBegunDrawUserMessage () const +{ + return i18n ("Drag to draw."); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolRectangularBase::begin () +{ +#if DEBUG_KP_TOOL_RECTANGULAR_BASE + qCDebug(kpLogTools) << "kpToolRectangularBase::begin ()"; +#endif + + kpToolToolBar *tb = toolToolBar (); + Q_ASSERT (tb); + +#if DEBUG_KP_TOOL_RECTANGULAR_BASE + qCDebug(kpLogTools) << "\ttoolToolBar=" << tb; +#endif + + d->toolWidgetLineWidth = tb->toolWidgetLineWidth (); + connect (d->toolWidgetLineWidth, &kpToolWidgetLineWidth::lineWidthChanged, + this, &kpToolRectangularBase::slotLineWidthChanged); + d->toolWidgetLineWidth->show (); + + d->toolWidgetFillStyle = tb->toolWidgetFillStyle (); + connect (d->toolWidgetFillStyle, &kpToolWidgetFillStyle::fillStyleChanged, + this, &kpToolRectangularBase::slotFillStyleChanged); + d->toolWidgetFillStyle->show (); + + viewManager ()->setCursor (QCursor (Qt::ArrowCursor)); + + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +// virtual +void kpToolRectangularBase::end () +{ +#if DEBUG_KP_TOOL_RECTANGULAR_BASE + qCDebug(kpLogTools) << "kpToolRectangularBase::end ()"; +#endif + + if (d->toolWidgetLineWidth) + { + disconnect (d->toolWidgetLineWidth, &kpToolWidgetLineWidth::lineWidthChanged, + this, &kpToolRectangularBase::slotLineWidthChanged); + d->toolWidgetLineWidth = nullptr; + } + + if (d->toolWidgetFillStyle) + { + disconnect (d->toolWidgetFillStyle, &kpToolWidgetFillStyle::fillStyleChanged, + this, &kpToolRectangularBase::slotFillStyleChanged); + d->toolWidgetFillStyle = nullptr; + } + + viewManager ()->unsetCursor (); +} + +//--------------------------------------------------------------------- + +void kpToolRectangularBase::applyModifiers () +{ + QRect rect = normalizedRect (); + +#if DEBUG_KP_TOOL_RECTANGULAR_BASE + qCDebug(kpLogTools) << "kpToolRectangularBase::applyModifiers(" << rect + << ") shift=" << shiftPressed () + << " ctrl=" << controlPressed () + << endl; +#endif + + // user wants to startPoint () == center + if (controlPressed ()) + { + int xdiff = qAbs (startPoint ().x () - currentPoint ().x ()); + int ydiff = qAbs (startPoint ().y () - currentPoint ().y ()); + rect = QRect (startPoint ().x () - xdiff, startPoint ().y () - ydiff, + xdiff * 2 + 1, ydiff * 2 + 1); + } + + // user wants major axis == minor axis: + // rectangle --> square + // rounded rectangle --> rounded square + // ellipse --> circle + if (shiftPressed ()) + { + if (!controlPressed ()) + { + if (rect.width () < rect.height ()) + { + if (startPoint ().y () == rect.y ()) { + rect.setHeight (rect.width ()); + } + else { + rect.setY (rect.bottom () - rect.width () + 1); + } + } + else + { + if (startPoint ().x () == rect.x ()) { + rect.setWidth (rect.height ()); + } + else { + rect.setX (rect.right () - rect.height () + 1); + } + } + } + // have to maintain the center + else + { + if (rect.width () < rect.height ()) + { + QPoint center = rect.center (); + rect.setHeight (rect.width ()); + rect.moveCenter (center); + } + else + { + QPoint center = rect.center (); + rect.setWidth (rect.height ()); + rect.moveCenter (center); + } + } + } + + d->toolRectangleRect = rect; +} + +//--------------------------------------------------------------------- + +void kpToolRectangularBase::beginDraw () +{ + setUserMessage (cancelUserMessage ()); +} + +//--------------------------------------------------------------------- + + +// private +kpColor kpToolRectangularBase::drawingForegroundColor () const +{ + return color (mouseButton ()); +} + +//--------------------------------------------------------------------- + +// private +kpColor kpToolRectangularBase::drawingBackgroundColor () const +{ + const kpColor foregroundColor = color (mouseButton ()); + const kpColor backgroundColor = color (1 - mouseButton ()); + + return d->toolWidgetFillStyle->drawingBackgroundColor ( + foregroundColor, backgroundColor); +} + +//--------------------------------------------------------------------- + +// private +void kpToolRectangularBase::updateShape () +{ + kpImage image = document ()->getImageAt (d->toolRectangleRect); + + // Invoke shape drawing function passed in ctor. + (*d->drawShapeFunc) (&image, + 0, 0, d->toolRectangleRect.width (), d->toolRectangleRect.height (), + drawingForegroundColor (), d->toolWidgetLineWidth->lineWidth (), + drawingBackgroundColor ()); + + kpTempImage newTempImage (false/*always display*/, + kpTempImage::SetImage/*render mode*/, + d->toolRectangleRect.topLeft (), + image); + + viewManager ()->setFastUpdates (); + viewManager ()->setTempImage (newTempImage); + viewManager ()->restoreFastUpdates (); +} + +//--------------------------------------------------------------------- + +void kpToolRectangularBase::draw (const QPoint &, const QPoint &, const QRect &) +{ + applyModifiers (); + + + updateShape (); + + + // Recover the start and end points from the transformed & normalized d->toolRectangleRect + + // S. or S or SC or S == C + // .C C + if (currentPoint ().x () >= startPoint ().x () && + currentPoint ().y () >= startPoint ().y ()) + { + setUserShapePoints (d->toolRectangleRect.topLeft (), + d->toolRectangleRect.bottomRight ()); + } + // .C or C + // S. S + else if (currentPoint ().x () >= startPoint ().x () && + currentPoint ().y () < startPoint ().y ()) + { + setUserShapePoints (d->toolRectangleRect.bottomLeft (), + d->toolRectangleRect.topRight ()); + } + // .S or CS + // C. + else if (currentPoint ().x () < startPoint ().x () && + currentPoint ().y () >= startPoint ().y ()) + { + setUserShapePoints (d->toolRectangleRect.topRight (), + d->toolRectangleRect.bottomLeft ()); + } + // C. + // .S + else + { + setUserShapePoints (d->toolRectangleRect.bottomRight (), + d->toolRectangleRect.topLeft ()); + } +} + +//--------------------------------------------------------------------- + +void kpToolRectangularBase::cancelShape () +{ + viewManager ()->invalidateTempImage (); + + setUserMessage (i18n ("Let go of all the mouse buttons.")); +} + +//--------------------------------------------------------------------- + +void kpToolRectangularBase::releasedAllButtons () +{ + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +void kpToolRectangularBase::endDraw (const QPoint &, const QRect &) +{ + applyModifiers (); + + // TODO: flicker + // Later: So why can't we use kpViewManager::setQueueUpdates()? Check SVN + // log to see if this method was not available at the time of the + // TODO, hence justifying the TODO. + // Later2: kpToolPolygonalBase, and perhaps, other shapes will have the + // same problem. + viewManager ()->invalidateTempImage (); + + environ ()->commandHistory ()->addCommand ( + new kpToolRectangularCommand ( + text (), + d->drawShapeFunc, d->toolRectangleRect, + drawingForegroundColor (), d->toolWidgetLineWidth->lineWidth (), + drawingBackgroundColor (), + environ ()->commandEnvironment ())); + + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + + diff --git a/tools/rectangular/kpToolRectangularBase.h b/tools/rectangular/kpToolRectangularBase.h new file mode 100644 index 0000000..72c3749 --- /dev/null +++ b/tools/rectangular/kpToolRectangularBase.h @@ -0,0 +1,99 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_RECTANGULAR_BASE_H +#define KP_TOOL_RECTANGULAR_BASE_H + + +#include "imagelib/kpImage.h" +#include "tools/kpTool.h" + + +class QPoint; +class QRect; +class QString; + +class kpColor; + + +struct kpToolRectangularBasePrivate; + + +// it turns out that these shapes are all really the same thing +// (same options, same feel) - the only real difference is the +// drawing function i.e. drawShape(). +class kpToolRectangularBase : public kpTool +{ +Q_OBJECT + +public: + typedef void (*DrawShapeFunc) (kpImage * /*image*/, + int /*x*/, int /*y*/, int /*width*/, int /*height*/, + const kpColor &/*fcolor*/, int /*penWidth = 1*/, + const kpColor &/*bcolor = kpColor::Invalid*/); + + kpToolRectangularBase (const QString &text, const QString &description, + DrawShapeFunc drawShapeFunc, + int key, + kpToolEnvironment *environ, QObject *parent, + const QString &name); + + ~kpToolRectangularBase () override; + + bool careAboutModifierState () const override { return true; } + +private slots: + virtual void slotLineWidthChanged (); + virtual void slotFillStyleChanged (); + +private: + QString haventBegunDrawUserMessage () const; + +public: + void begin () override; + void end () override; + +private: + void applyModifiers (); + void beginDraw () override; +private: + kpColor drawingForegroundColor () const; + kpColor drawingBackgroundColor () const; + void updateShape (); +public: + void draw (const QPoint &, const QPoint &, const QRect &) override; + void cancelShape () override; + void releasedAllButtons () override; + void endDraw (const QPoint &, const QRect &) override; + +private: + kpToolRectangularBasePrivate * const d; +}; + + +#endif // KP_TOOL_RECTANGULAR_BASE_H diff --git a/tools/rectangular/kpToolRoundedRectangle.cpp b/tools/rectangular/kpToolRoundedRectangle.cpp new file mode 100644 index 0000000..4d3dadc --- /dev/null +++ b/tools/rectangular/kpToolRoundedRectangle.cpp @@ -0,0 +1,89 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2017 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "kpToolRoundedRectangle.h" + +#include "environments/tools/kpToolEnvironment.h" +#include "imagelib/kpColor.h" + +#include + +#include +#include +#include + +//--------------------------------------------------------------------- + +kpToolRoundedRectangle::kpToolRoundedRectangle (kpToolEnvironment *environ, QObject *parent) + : kpToolRectangularBase (i18n ("Rounded Rectangle"), + i18n ("Draws rectangles and squares with rounded corners"), + &kpToolRoundedRectangle::drawRoundedRect, + Qt::Key_U, + environ, parent, QStringLiteral("tool_rounded_rectangle")) +{ +} + +//--------------------------------------------------------------------- + +void kpToolRoundedRectangle::drawRoundedRect(kpImage *image, + int x, int y, int width, int height, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor) +{ + if ( (width == 0) || (height == 0) ) { + return; + } + + QPainter painter(image); + painter.setRenderHint(QPainter::Antialiasing, kpToolEnvironment::drawAntiAliased); + + if ( ((2 * penWidth) > width) || ((2 * penWidth) > height) ) { + penWidth = qMin(width, height) / 2; + } + + painter.setPen(QPen(fcolor.toQColor(), penWidth, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin)); + + if ( bcolor.isValid() ) { + painter.setBrush(QBrush(bcolor.toQColor())); + } + else { + painter.setBrush(Qt::NoBrush); + } + + int offset = painter.testRenderHint(QPainter::Antialiasing) ? 1 : 0; + + int radius = qMin(width, height) / 4; + + painter.drawRoundedRect( + x + penWidth / 2 + offset, + y + penWidth / 2 + offset, + qMax(1, width - penWidth - offset), + qMax(1, height - penWidth - offset), + radius, radius); +} + +//--------------------------------------------------------------------- diff --git a/tools/rectangular/kpToolRoundedRectangle.h b/tools/rectangular/kpToolRoundedRectangle.h new file mode 100644 index 0000000..6b5f74a --- /dev/null +++ b/tools/rectangular/kpToolRoundedRectangle.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_ROUNDED_RECTANGLE_H +#define KP_TOOL_ROUNDED_RECTANGLE_H + + +#include "tools/rectangular/kpToolRectangularBase.h" + + +class kpToolRoundedRectangle : public kpToolRectangularBase +{ +Q_OBJECT + +public: + kpToolRoundedRectangle (kpToolEnvironment *environ, QObject *parent); + + static void drawRoundedRect(kpImage *image, + int x, int y, int width, int height, + const kpColor &fcolor, int penWidth, + const kpColor &bcolor); +}; + + +#endif // KP_TOOL_ROUNDED_RECTANGLE_H diff --git a/tools/selection/image/kpAbstractImageSelectionTool.cpp b/tools/selection/image/kpAbstractImageSelectionTool.cpp new file mode 100644 index 0000000..e36192a --- /dev/null +++ b/tools/selection/image/kpAbstractImageSelectionTool.cpp @@ -0,0 +1,103 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpAbstractImageSelectionTool.h" + +#include + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "document/kpDocument.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/kpToolSelectionPullFromDocumentCommand.h" + +//--------------------------------------------------------------------- + +kpAbstractImageSelectionTool::kpAbstractImageSelectionTool ( + const QString &text, const QString &description, + int key, + kpToolSelectionEnvironment *environ, QObject *parent, + const QString &name) + : kpAbstractSelectionTool (text, description, + key, environ, parent, name) +{ +} + +//--------------------------------------------------------------------- + +// protected virtual [kpAbstractSelectionTool] +kpAbstractSelectionContentCommand *kpAbstractImageSelectionTool::newGiveContentCommand () const +{ + kpAbstractImageSelection *imageSel = document ()->imageSelection (); + Q_ASSERT (imageSel && !imageSel->hasContent ()); + + if (imageSel->transparency ().isTransparent ()) { + environ ()->flashColorSimilarityToolBarItem (); + } + + return new kpToolSelectionPullFromDocumentCommand ( + *imageSel, + environ ()->backgroundColor (), + QString()/*uninteresting child of macro cmd*/, + environ ()->commandEnvironment ()); +} + +//--------------------------------------------------------------------- +// protected virtual [kpAbstractSelectionTool] + +QString kpAbstractImageSelectionTool::nameOfCreateCommand () const +{ + return i18n ("Selection: Create"); +} + +//--------------------------------------------------------------------- +// protected virtual [kpAbstractSelectionTool] + +QString kpAbstractImageSelectionTool::haventBegunDrawUserMessageCreate () const +{ + // TODO: This is wrong because you can still use RMB. + return i18n ("Left drag to create selection."); +} + +//--------------------------------------------------------------------- +// protected virtual [kpAbstractSelectionTool] + +QString kpAbstractImageSelectionTool::haventBegunDrawUserMessageMove () const +{ + return i18n ("Left drag to move selection."); +} + +//--------------------------------------------------------------------- +// protected virtual [kpAbstractSelectionTool] + +QString kpAbstractImageSelectionTool::haventBegunDrawUserMessageResizeScale () const +{ + return i18n ("Left drag to scale selection."); +} + +//--------------------------------------------------------------------- + diff --git a/tools/selection/image/kpAbstractImageSelectionTool.h b/tools/selection/image/kpAbstractImageSelectionTool.h new file mode 100644 index 0000000..3c615df --- /dev/null +++ b/tools/selection/image/kpAbstractImageSelectionTool.h @@ -0,0 +1,106 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpAbstractImageSelectionTool_H +#define kpAbstractImageSelectionTool_H + + +#include "tools/selection/kpAbstractSelectionTool.h" + + +class kpImageSelectionTransparency; + + +// The only difference between the various subclasses of us is the kind of +// selection that they create e.g. elliptical vs rectangular. +// +// For every other operation, they act identically so, for instance, it is +// possible to move an elliptical selection while using the rectangular +// selection tool (this situation can arise when you paste an elliptical +// selection while using the rectangular selection tool; a tool change +// does not occur out of convenience to the user - see +// kpDocumentEnvironment::switchToCompatibleTool()). +class kpAbstractImageSelectionTool : public kpAbstractSelectionTool +{ +Q_OBJECT + +public: + kpAbstractImageSelectionTool (const QString &text, const QString &description, + int key, + kpToolSelectionEnvironment *environ, QObject *parent, + const QString &name); + + +// +// Drawing +// + +protected: + kpAbstractSelectionContentCommand *newGiveContentCommand () const override; + + QString nameOfCreateCommand () const override; + + +// +// Create, Move, Resize/Scale +// + +protected: + QString haventBegunDrawUserMessageCreate () const override; + QString haventBegunDrawUserMessageMove () const override; + QString haventBegunDrawUserMessageResizeScale () const override; + + +// +// User Changing Selection Transparency +// + +protected: + bool shouldChangeImageSelectionTransparency () const; + // You must derive , the old selection transparency, from the + // one obtained from the user's current settings, as given by the + // kpToolSelectionEnvironment. + // + // You must _not_ simply get the old selection transparency just by + // querying the selection i.e. do _not_ pass in + // "document()->imageSelection().transparency()". The reason is that + // transparency().transparentColor() might not be defined in Opaque + // Mode. + void changeImageSelectionTransparency ( + const QString &name, + const kpImageSelectionTransparency &newTrans, + const kpImageSelectionTransparency &oldTrans); + +protected slots: + void slotIsOpaqueChanged (bool isOpaque) override; + void slotBackgroundColorChanged (const kpColor &color) override; + void slotColorSimilarityChanged (double similarity, int) override; +}; + + +#endif // kpAbstractImageSelectionTool_H diff --git a/tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp b/tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp new file mode 100644 index 0000000..850f848 --- /dev/null +++ b/tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp @@ -0,0 +1,207 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpAbstractImageSelectionTool.h" + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "layers/selections/kpAbstractSelection.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "commands/kpMacroCommand.h" +#include "generic/kpSetOverrideCursorSaver.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "commands/tools/selection/kpToolSelectionDestroyCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/kpToolSelectionMoveCommand.h" +#include "commands/tools/selection/kpToolSelectionResizeScaleCommand.h" +#include "commands/tools/selection/kpToolImageSelectionTransparencyCommand.h" +#include "commands/tools/selection/text/kpToolTextGiveContentCommand.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" +#include "kpLogCategories.h" + +#include + + +// protected +bool kpAbstractImageSelectionTool::shouldChangeImageSelectionTransparency () const +{ + if (environ ()->settingImageSelectionTransparency ()) + { + #if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\trecursion - abort setting selection transparency: " + << environ ()->settingImageSelectionTransparency (); + #endif + return false; + } + + if (!document ()->imageSelection ()) { + return false; + } + + // TODO: Can probably return false if the selection transparency mode + // is Opaque, since neither background color nor color similarity + // would matter. + + return true; +} + +// protected +void kpAbstractImageSelectionTool::changeImageSelectionTransparency ( + const QString &name, + const kpImageSelectionTransparency &newTrans, + const kpImageSelectionTransparency &oldTrans) +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "CALL(" << name << ")"; +#endif + + kpSetOverrideCursorSaver cursorSaver (Qt::WaitCursor); + + if (hasBegunShape ()) { + endShapeInternal (); + } + + kpAbstractImageSelection *imageSel = document ()->imageSelection (); + + if (imageSel->hasContent () && newTrans.isTransparent ()) { + environ ()->flashColorSimilarityToolBarItem (); + } + + imageSel->setTransparency (newTrans); + + // We _must_ add the command even if kpAbstractImageSelection::setTransparency() + // above did not change the selection transparency mask at all. + // Consider the following case: + // + // 0. Ensure that selection transparency is opaque and any + // color other than red is the background color. Ensure that + // the color similarity setting is 0. + // + // 1. Select a solid red rectangle and pull it off. + // + // 2. Switch to transparent and set red as the background color. + // [the selection is now invisible as red is the background + // color, which is the same as the contents of the selection] + // + // 3. Invert Colors. + // [the selection is now cyan, red is still the background color] + // + // 4. Change the background color to green. + // [the selection transparency mask does not change so the + // selection is still cyan; green is the background color] + // + // 5. Undo + // + // If no transparency command were added for Step 4., the Undo + // in Step 5. would take us straight to the state after Step 2., + // where we would expect the red selection to be invisible. However, + // as the background color was changed to green in Step 4. and was not + // undone, the red selection is not invisible when it should be -- Undo + // has moved us to an incorrect state. + // + // KDE3: Copy this comment into the KDE 3 branch. + commandHistory ()->addCommand (new kpToolImageSelectionTransparencyCommand ( + name, + newTrans, oldTrans, + environ ()->commandEnvironment ()), + false/*no exec*/); +} + + +// protected slot virtual [kpAbstractSelectionTool] +void kpAbstractImageSelectionTool::slotIsOpaqueChanged (bool /*isOpaque*/) +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractImageSelectionTool::slotIsOpaqueChanged()"; +#endif + + if (!shouldChangeImageSelectionTransparency ()) { + return; + } + + kpImageSelectionTransparency st = environ ()->imageSelectionTransparency (); + + kpImageSelectionTransparency oldST = st; + oldST.setOpaque (!oldST.isOpaque ()); + + changeImageSelectionTransparency ( + st.isOpaque () ? + i18n ("Selection: Opaque") : + i18n ("Selection: Transparent"), + st, oldST); +} + +// protected slot virtual [base kpTool] +void kpAbstractImageSelectionTool::slotBackgroundColorChanged (const kpColor &) +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractImageSelectionTool::slotBackgroundColorChanged()"; +#endif + + if (!shouldChangeImageSelectionTransparency ()) { + return; + } + + kpImageSelectionTransparency st = environ ()->imageSelectionTransparency (); + + kpImageSelectionTransparency oldST = st; + oldST.setTransparentColor (oldBackgroundColor ()); + + changeImageSelectionTransparency ( + i18n ("Selection: Transparency Color"), + st, oldST); +} + +// protected slot virtual [base kpTool] +void kpAbstractImageSelectionTool::slotColorSimilarityChanged (double, int) +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractImageSelectionTool::slotColorSimilarityChanged()"; +#endif + + if (!shouldChangeImageSelectionTransparency ()) { + return; + } + + kpImageSelectionTransparency st = environ ()->imageSelectionTransparency (); + + kpImageSelectionTransparency oldST = st; + oldST.setColorSimilarity (oldColorSimilarity ()); + + changeImageSelectionTransparency ( + i18n ("Selection: Transparency Color Similarity"), + st, oldST); +} diff --git a/tools/selection/image/kpToolEllipticalSelection.cpp b/tools/selection/image/kpToolEllipticalSelection.cpp new file mode 100644 index 0000000..d74ec66 --- /dev/null +++ b/tools/selection/image/kpToolEllipticalSelection.cpp @@ -0,0 +1,79 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_ELLIPTICAL_SELECTION 0 + + +#include "kpToolEllipticalSelection.h" + +#include "kpLogCategories.h" +#include "document/kpDocument.h" +#include "layers/selections/image/kpEllipticalImageSelection.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" + +#include + +kpToolEllipticalSelection::kpToolEllipticalSelection (kpToolSelectionEnvironment *environ, + QObject *parent) + : kpAbstractImageSelectionTool (i18n ("Selection (Elliptical)"), + i18n ("Makes an elliptical or circular selection"), + Qt::Key_I, + environ, parent, + QStringLiteral("tool_elliptical_selection")) +{ +} + +kpToolEllipticalSelection::~kpToolEllipticalSelection () = default; + + +// protected virtual [base kpAbstractSelectionTool] +bool kpToolEllipticalSelection::drawCreateMoreSelectionAndUpdateStatusBar ( + bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const QRect &normalizedRect) +{ + // Prevent unintentional creation of 1-pixel selections. + if (!dragAccepted && accidentalDragAdjustedPoint == startPoint ()) + { + #if DEBUG_KP_TOOL_ELLIPTICAL_SELECTION && 1 + qCDebug(kpLogTools) << "\tnon-text NOP - return"; + #endif + setUserShapePoints (accidentalDragAdjustedPoint); + return false; + } + + Q_ASSERT (accidentalDragAdjustedPoint == currentPoint ()); + + document ()->setSelection ( + kpEllipticalImageSelection ( + normalizedRect, + environ ()->imageSelectionTransparency ())); + + setUserShapePoints (startPoint (), currentPoint ()); + + return true; +} diff --git a/tools/selection/image/kpToolEllipticalSelection.h b/tools/selection/image/kpToolEllipticalSelection.h new file mode 100644 index 0000000..d62a1ff --- /dev/null +++ b/tools/selection/image/kpToolEllipticalSelection.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_ELLIPTICAL_SELECTION_H +#define KP_TOOL_ELLIPTICAL_SELECTION_H + + +#include "kpAbstractImageSelectionTool.h" + + +class kpToolEllipticalSelection : public kpAbstractImageSelectionTool +{ +public: + kpToolEllipticalSelection (kpToolSelectionEnvironment *environ, QObject *parent); + ~kpToolEllipticalSelection () override; + +protected: + bool drawCreateMoreSelectionAndUpdateStatusBar ( + bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const QRect &normalizedRect) override; +}; + + +#endif // KP_TOOL_ELLIPTICAL_SELECTION_H diff --git a/tools/selection/image/kpToolFreeFormSelection.cpp b/tools/selection/image/kpToolFreeFormSelection.cpp new file mode 100644 index 0000000..9afb1e4 --- /dev/null +++ b/tools/selection/image/kpToolFreeFormSelection.cpp @@ -0,0 +1,139 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_FREE_FROM_SELECTION 0 + + +#include "kpToolFreeFormSelection.h" + +#include "kpLogCategories.h" +#include + +#include "document/kpDocument.h" +#include "layers/selections/image/kpFreeFormImageSelection.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" + +//--------------------------------------------------------------------- + +kpToolFreeFormSelection::kpToolFreeFormSelection (kpToolSelectionEnvironment *environ, + QObject *parent) + : kpAbstractImageSelectionTool (i18n ("Selection (Free-Form)"), + i18n ("Makes a free-form selection"), + Qt::Key_M, + environ, parent, + QStringLiteral("tool_free_form_selection")) +{ +} + +//--------------------------------------------------------------------- + +kpToolFreeFormSelection::~kpToolFreeFormSelection () = default; + +//--------------------------------------------------------------------- + +// protected virtual [base kpAbstractSelectionTool] +bool kpToolFreeFormSelection::drawCreateMoreSelectionAndUpdateStatusBar ( + bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const QRect &/*normalizedRect*/) +{ +#if DEBUG_KP_TOOL_FREE_FROM_SELECTION + qCDebug(kpLogTools) << "kpToolFreeFormSelection::createMoreSelectionAndUpdateStatusBar(" + << "dragAccepted=" << dragAccepted + << ",accidentalDragAdjustedPoint=" << accidentalDragAdjustedPoint + << ")"; +#endif + + // Prevent unintentional creation of 1-pixel selections. + if (!dragAccepted && accidentalDragAdjustedPoint == startPoint ()) + { + #if DEBUG_KP_TOOL_FREE_FROM_SELECTION && 1 + qCDebug(kpLogTools) << "\tnon-text NOP - return"; + #endif + setUserShapePoints (accidentalDragAdjustedPoint); + return false; + } + + Q_ASSERT (accidentalDragAdjustedPoint == currentPoint ()); + Q_ASSERT (dragAccepted == static_cast (document ()->selection ())); + + const kpFreeFormImageSelection *oldPointsSel = nullptr; + if (document ()->selection ()) + { + kpAbstractSelection *sel = document ()->selection (); + Q_ASSERT (dynamic_cast (sel)); + oldPointsSel = dynamic_cast (sel); + } + + + QPolygon points; + + // First point in drag? + if (!dragAccepted) + { + points.append (startPoint ()); + } + // Not first point in drag. + else + { + if ( !oldPointsSel ) { // assert above says we never reach this, but let's make coverity happy + return false; + } + + // Get existing points in selection. + points = oldPointsSel->cardinallyAdjacentPoints (); + } + + +#if DEBUG_KP_TOOL_FREE_FROM_SELECTION + qCDebug(kpLogTools) << "\tlast old point=" << points.last (); +#endif + + // TODO: There should be an upper limit on this before drawing the + // polygon becomes too slow. + points.append (accidentalDragAdjustedPoint); + + + document ()->setSelection ( + kpFreeFormImageSelection (points, environ ()->imageSelectionTransparency ())); + + // Prevent accidental usage of dangling pointer to old selection + // (deleted by kpDocument::setSelection()). + oldPointsSel = nullptr; + +#if DEBUG_KP_TOOL_FREE_FROM_SELECTION && 1 + qCDebug(kpLogTools) << "\t\tfreeform; #points=" + << document ()->selection ()->calculatePoints ().count (); +#endif + + setUserShapePoints (accidentalDragAdjustedPoint); + + return true; +} + +//--------------------------------------------------------------------- diff --git a/tools/selection/image/kpToolFreeFormSelection.h b/tools/selection/image/kpToolFreeFormSelection.h new file mode 100644 index 0000000..6f3fd5c --- /dev/null +++ b/tools/selection/image/kpToolFreeFormSelection.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_FREE_FORM_SELECTION_H +#define KP_TOOL_FREE_FORM_SELECTION_H + + +#include "kpAbstractImageSelectionTool.h" + + +class kpToolFreeFormSelection : public kpAbstractImageSelectionTool +{ +public: + kpToolFreeFormSelection (kpToolSelectionEnvironment *environ, QObject *parent); + ~kpToolFreeFormSelection () override; + +protected: + bool drawCreateMoreSelectionAndUpdateStatusBar ( + bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const QRect &normalizedRect) override; +}; + + +#endif // KP_TOOL_FREE_FORM_SELECTION_H diff --git a/tools/selection/image/kpToolRectSelection.cpp b/tools/selection/image/kpToolRectSelection.cpp new file mode 100644 index 0000000..a6d0732 --- /dev/null +++ b/tools/selection/image/kpToolRectSelection.cpp @@ -0,0 +1,81 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_RECT_SELECTION 0 + +#include "kpToolRectSelection.h" +#include "kpLogCategories.h" +#include "document/kpDocument.h" +#include "layers/selections/image/kpRectangularImageSelection.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" + +#include + +kpToolRectSelection::kpToolRectSelection (kpToolSelectionEnvironment *environ, + QObject *parent) + : kpAbstractImageSelectionTool (i18n ("Selection (Rectangular)"), + i18n ("Makes a rectangular selection"), + Qt::Key_S, + environ, parent, + QStringLiteral("tool_rect_selection")) +{ +} + +kpToolRectSelection::~kpToolRectSelection () = default; + + +// protected virtual [base kpAbstractSelectionTool] +bool kpToolRectSelection::drawCreateMoreSelectionAndUpdateStatusBar ( + bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const QRect &normalizedRect) +{ + // Prevent unintentional creation of 1-pixel selections. + // REFACTOR: This line is duplicated code with other tools. + if (!dragAccepted && accidentalDragAdjustedPoint == startPoint ()) + { + #if DEBUG_KP_TOOL_RECT_SELECTION && 1 + qCDebug(kpLogTools) << "\tnon-text NOP - return"; + #endif + setUserShapePoints (accidentalDragAdjustedPoint); + return false; + } + + Q_ASSERT (accidentalDragAdjustedPoint == currentPoint ()); + + const QRect usefulRect = normalizedRect.intersected (document ()->rect ()); + document ()->setSelection ( + kpRectangularImageSelection ( + usefulRect, + environ ()->imageSelectionTransparency ())); + + setUserShapePoints (startPoint (), + QPoint (qMax (0, qMin (currentPoint ().x (), document ()->width () - 1)), + qMax (0, qMin (currentPoint ().y (), document ()->height () - 1)))); + + return true; +} diff --git a/tools/selection/image/kpToolRectSelection.h b/tools/selection/image/kpToolRectSelection.h new file mode 100644 index 0000000..452ee45 --- /dev/null +++ b/tools/selection/image/kpToolRectSelection.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_RECT_SELECTION_H +#define KP_TOOL_RECT_SELECTION_H + + +#include "kpAbstractImageSelectionTool.h" + + +class kpToolRectSelection : public kpAbstractImageSelectionTool +{ +public: + kpToolRectSelection (kpToolSelectionEnvironment *environ, QObject *parent); + ~kpToolRectSelection () override; + +protected: + bool drawCreateMoreSelectionAndUpdateStatusBar ( + bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const QRect &normalizedRect) override; +}; + + +#endif // KP_TOOL_RECT_SELECTION_H diff --git a/tools/selection/kpAbstractSelectionTool.cpp b/tools/selection/kpAbstractSelectionTool.cpp new file mode 100644 index 0000000..f04aca3 --- /dev/null +++ b/tools/selection/kpAbstractSelectionTool.cpp @@ -0,0 +1,641 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpAbstractSelectionTool.h" +#include "kpAbstractSelectionToolPrivate.h" + +#include +#include +#include + +#include "kpLogCategories.h" +#include "layers/selections/kpAbstractSelection.h" +#include "commands/tools/selection/kpAbstractSelectionContentCommand.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "commands/kpMacroCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" +#include "imagelib/kpPainter.h" + +#include + +//--------------------------------------------------------------------- + +// For either of these timers, they are only active during the "drawing" phase +// of kpTool. +static void AssertAllTimersInactive (struct kpAbstractSelectionToolPrivate *d) +{ + Q_ASSERT (!d->createNOPTimer->isActive ()); + Q_ASSERT (!d->RMBMoveUpdateGUITimer->isActive ()); +} + +//--------------------------------------------------------------------- + +kpAbstractSelectionTool::kpAbstractSelectionTool ( + const QString &text, + const QString &description, + int key, + kpToolSelectionEnvironment *environ, QObject *parent, + const QString &name) + + : kpTool (text, description, key, environ, parent, name), + d (new kpAbstractSelectionToolPrivate ()) +{ + d->drawType = None; + d->currentSelContentCommand = nullptr; + + // d->dragAccepted + // d->hadSelectionBeforeDrag + + // d->cancelledShapeButStillHoldingButtons + + d->toolWidgetOpaqueOrTransparent = nullptr; + + + initCreate (); + initMove (); + initResizeScale (); + + // It would be bad practice to have timers ticking even when this tool + // is not in use. + ::AssertAllTimersInactive (d); +} + +//--------------------------------------------------------------------- + +kpAbstractSelectionTool::~kpAbstractSelectionTool () +{ + uninitCreate (); + uninitMove (); + uninitResizeScale (); + + + // (state must be after construction, or after some time after end()) + Q_ASSERT (d->drawType == None); + Q_ASSERT (!d->currentSelContentCommand); + + // d->dragAccepted + // d->hadSelectionBeforeDraw + + // d->cancelledShapeButStillHoldingButtons + + // d->toolWidgetOpaqueOrTransparent + + + delete d; +} + +//--------------------------------------------------------------------- + +// protected +kpAbstractSelectionTool::DrawType kpAbstractSelectionTool::drawType () const +{ + return d->drawType; +} + +//--------------------------------------------------------------------- + +// protected +bool kpAbstractSelectionTool::hadSelectionBeforeDraw () const +{ + return d->hadSelectionBeforeDraw; +} + +//--------------------------------------------------------------------- + +// protected overrides [base kpTool] +kpToolSelectionEnvironment *kpAbstractSelectionTool::environ () const +{ + kpToolEnvironment *e = kpTool::environ (); + Q_ASSERT (dynamic_cast (e)); + return dynamic_cast (e); +} + +//--------------------------------------------------------------------- + +// protected +bool kpAbstractSelectionTool::controlOrShiftPressed () const +{ + return (controlPressed () || shiftPressed ()); +} + +//--------------------------------------------------------------------- + +// protected +void kpAbstractSelectionTool::pushOntoDocument () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "kpAbstractSelectionTool::pushOntoDocument() selection=" + << document ()->selection (); +#endif + Q_ASSERT (document ()->selection ()); + environ ()->deselectSelection (); +} + +//--------------------------------------------------------------------- + +// protected +void kpAbstractSelectionTool::giveContentIfNeeded () +{ + kpAbstractSelection *sel = document ()->selection (); + Q_ASSERT (sel); + + if (sel->hasContent ()) { + return; + } + + if (d->currentSelContentCommand) { + return; + } + + d->currentSelContentCommand = /*virtual*/newGiveContentCommand (); + d->currentSelContentCommand->execute (); +} + +//--------------------------------------------------------------------- + +// protected +// REFACTOR: sync: Code dup with kpMainWindow::addImageOrSelectionCommand (). +void kpAbstractSelectionTool::addNeedingContentCommand (kpCommand *cmd) +{ + Q_ASSERT (cmd); + + // Did we fill the selection with content? + if (d->currentSelContentCommand) + { + // Make the border creation a command. + #if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\thave currentSelContentCommand"; + #endif + commandHistory ()->addCreateSelectionCommand ( + new kpToolSelectionCreateCommand ( + /*virtual*/nameOfCreateCommand (), + *d->currentSelContentCommand->originalSelection (), + environ ()->commandEnvironment ()), + false/*no exec - user already dragged out sel*/); + } + + // Do we have a content setting command we need to commit? + // (yes, this is the same check as the previous "if") + if (d->currentSelContentCommand) + { + // Put the content command + given command (e.g. movement) together + // as a macro command, in the command history. + kpMacroCommand *macroCmd = new kpMacroCommand ( + cmd->name (), environ ()->commandEnvironment ()); + + macroCmd->addCommand (d->currentSelContentCommand); + d->currentSelContentCommand = nullptr; + + macroCmd->addCommand (cmd); + + commandHistory ()->addCommand (macroCmd, false/*no exec*/); + } + else + { + // Put the given command into the command history. + commandHistory ()->addCommand (cmd, false/*no exec*/); + } +} + +//--------------------------------------------------------------------- + + +// protected virtual +void kpAbstractSelectionTool::setSelectionBorderForHaventBegunDraw () +{ + viewManager ()->setQueueUpdates (); + { + viewManager ()->setSelectionBorderVisible (true); + viewManager ()->setSelectionBorderFinished (true); + } + viewManager ()->restoreQueueUpdates (); +} + +//--------------------------------------------------------------------- + +// private +QString kpAbstractSelectionTool::haventBegunDrawUserMessage () +{ +#if DEBUG_KP_TOOL_SELECTION && 0 + qCDebug(kpLogTools) << "kpAbstractSelectionTool::haventBegunDrawUserMessage()" + " cancelledShapeButStillHoldingButtons=" + << d->cancelledShapeButStillHoldingButtons; +#endif + + if (d->cancelledShapeButStillHoldingButtons) { + return i18n ("Let go of all the mouse buttons."); + } + + return operation (calculateDrawType (), HaventBegunDrawUserMessage).toString (); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpAbstractSelectionTool::begin () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractSelectionTool<" << objectName () << ">::begin()"; +#endif + + ::AssertAllTimersInactive (d); + + // (state must be after construction, or after some time after end()) + Q_ASSERT (d->drawType == None); + Q_ASSERT (!d->currentSelContentCommand); + + d->dragAccepted = false; + // d->hadSelectionBeforeDraw + + d->cancelledShapeButStillHoldingButtons = false; + + + kpToolToolBar *tb = toolToolBar (); + Q_ASSERT (tb); + + d->toolWidgetOpaqueOrTransparent = tb->toolWidgetOpaqueOrTransparent (); + Q_ASSERT (d->toolWidgetOpaqueOrTransparent); + connect (d->toolWidgetOpaqueOrTransparent, + &kpToolWidgetOpaqueOrTransparent::isOpaqueChanged, + this, &kpAbstractSelectionTool::slotIsOpaqueChanged); + d->toolWidgetOpaqueOrTransparent->show (); + + /*virtual*/setSelectionBorderForHaventBegunDraw (); + + + beginCreate (); + beginMove (); + beginResizeScale (); + + + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpAbstractSelectionTool::end () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractSelectionTool<" << objectName () << ">::end()"; +#endif + + if (document ()->selection ()) { + pushOntoDocument (); + } + + + endCreate (); + endMove (); + endResizeScale (); + + + // (should have been killed by cancelShape() or endDraw()) + Q_ASSERT (d->drawType == None); + Q_ASSERT (!d->currentSelContentCommand); + + // d->dragAccepted + // d->hadSelectionBeforeDraw + + // d->cancelledShapeButStillHoldingButtons + + + Q_ASSERT (d->toolWidgetOpaqueOrTransparent); + disconnect (d->toolWidgetOpaqueOrTransparent, + &kpToolWidgetOpaqueOrTransparent::isOpaqueChanged, + this, &kpAbstractSelectionTool::slotIsOpaqueChanged); + d->toolWidgetOpaqueOrTransparent = nullptr; + + + viewManager ()->unsetCursor (); + + ::AssertAllTimersInactive (d); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpAbstractSelectionTool::reselect () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractSelectionTool::reselect()"; +#endif + + if (document ()->selection ()) { + pushOntoDocument (); + } +} + +//--------------------------------------------------------------------- + +// protected virtual +kpAbstractSelectionTool::DrawType kpAbstractSelectionTool::calculateDrawTypeInsideSelection () const +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\t\tis move"; +#endif + return kpAbstractSelectionTool::Move; +} + +//--------------------------------------------------------------------- + +// protected virtual +kpAbstractSelectionTool::DrawType kpAbstractSelectionTool::calculateDrawType () const +{ + kpAbstractSelection *sel = document ()->selection (); + if (!sel) { + return Create; + } +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\thas sel region rect=" << sel->boundingRect (); +#endif + + if (onSelectionResizeHandle () && !controlOrShiftPressed ()) { + return ResizeScale; + } + + if (sel->contains (currentPoint ())) { + return /*virtual*/calculateDrawTypeInsideSelection (); + } + + return Create; +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpAbstractSelectionTool::beginDraw () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractSelectionTool::beginDraw() startPoint ()=" + << startPoint () + << " QCursor::pos() view startPoint=" + << viewUnderStartPoint ()->mapFromGlobal (QCursor::pos ()); +#endif + + // endDraw() and cancelShape() should have taken care of these. + ::AssertAllTimersInactive (d); + + // In case the cursor was wrong to start with + // (forgot to call kpTool::somethingBelowTheCursorChanged()), + // make sure it is correct during this operation. + hover (currentPoint ()); + + // Currently used only to end the current text + if (hasBegunShape ()) + { + endShape(currentPoint(), + kpPainter::normalizedRect(startPoint()/* TODO: wrong */, currentPoint())); + } + + d->drawType = calculateDrawType (); + d->dragAccepted = false; + + kpAbstractSelection *sel = document ()->selection (); + d->hadSelectionBeforeDraw = bool (sel); + + operation (d->drawType, BeginDraw); +} + +//--------------------------------------------------------------------- + + +// public virtual [base kpTool] +void kpAbstractSelectionTool::hover (const QPoint &point) +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "kpAbstractSelectionTool::hover" << point; +#endif + + operation (calculateDrawType (), SetCursor); + + setUserShapePoints (point, KP_INVALID_POINT, false/*don't set size*/); + if (document () && document ()->selection ()) + { + setUserShapeSize (document ()->selection ()->width (), + document ()->selection ()->height ()); + } + else + { + setUserShapeSize (KP_INVALID_SIZE); + } + + QString mess = haventBegunDrawUserMessage (); + if (mess != userMessage ()) { + setUserMessage (mess); + } +} + +//--------------------------------------------------------------------- + + +// public virtual [base kpTool] +void kpAbstractSelectionTool::draw (const QPoint &thisPoint, const QPoint & /*lastPoint*/, + const QRect &normalizedRect) +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "kpAbstractSelectionTool::draw (" << thisPoint + << ",startPoint=" << startPoint () + << ",normalizedRect=" << normalizedRect << ")"; +#else + Q_UNUSED (thisPoint); + Q_UNUSED (normalizedRect); +#endif + + + // OPT: return when thisPoint == lastPoint () so that e.g. when creating + // Points sel, press modifiers doesn't add multiple points in same + // place + + + operation (d->drawType, Draw); +} + +//--------------------------------------------------------------------- + + +// public virtual [base kpTool] +void kpAbstractSelectionTool::cancelShape () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractSelectionTool::cancelShape() mouseButton=" + << mouseButton (); +#endif + + const DrawType oldDrawType = d->drawType; + // kpTool::hasBegunDraw() returns false in this method so be consistent + // and clear "drawType" before dispatching the operation() below. + d->drawType = None; + + + viewManager ()->setQueueUpdates (); + { + operation (oldDrawType, Cancel); + + + if (d->currentSelContentCommand) + { + #if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\t\tundo sel content"; + #endif + d->currentSelContentCommand->unexecute (); + delete d->currentSelContentCommand; + d->currentSelContentCommand = nullptr; + } + + + /*virtual*/setSelectionBorderForHaventBegunDraw (); + } + viewManager ()->restoreQueueUpdates (); + + + d->cancelledShapeButStillHoldingButtons = true; + setUserMessage (i18n ("Let go of all the mouse buttons.")); + + + ::AssertAllTimersInactive (d); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpAbstractSelectionTool::releasedAllButtons () +{ + d->cancelledShapeButStillHoldingButtons = false; + setUserMessage (haventBegunDrawUserMessage ()); +} + +//--------------------------------------------------------------------- + +// protected +void kpAbstractSelectionTool::popupRMBMenu () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "CALL - exec'ing menu"; +#endif + + QMenu *pop = environ ()->selectionToolRMBMenu (); + Q_ASSERT (pop); + + // Blocks until the menu closes. + // WARNING: Enters event loop - may re-enter view/tool event handlers. + pop->exec (QCursor::pos ()); +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "calling somethingBelowTheCursorChanged()"; +#endif + + // Cursor may have moved while the menu was up, triggering QMouseMoveEvents + // for the menu -- but not the view -- so we may have missed cursor moves. + // Update cursor position now. + somethingBelowTheCursorChanged (); +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "DONE"; +#endif +} + +//--------------------------------------------------------------------- + +// public virtual [base kpTool] +void kpAbstractSelectionTool::endDraw (const QPoint & /*thisPoint*/, + const QRect & /*normalizedRect*/) +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "kpAbstractSelectionTool::endDraw()"; +#endif + + const DrawType oldDrawType = d->drawType; + // kpTool::hasBegunDraw() returns false in this method so be consistent + // and clear "drawType" before dispatching the operation() below. + d->drawType = None; + + + viewManager ()->setQueueUpdates (); + { + operation (oldDrawType, EndDraw); + + /*virtual*/setSelectionBorderForHaventBegunDraw (); + } + viewManager ()->restoreQueueUpdates (); + + + setUserMessage (haventBegunDrawUserMessage ()); + + + ::AssertAllTimersInactive (d); + + + if (mouseButton () == 1/*right*/) { + popupRMBMenu (); + } + + + // WARNING: Do not place any code after the popupRMBMenu() call + // (see the popupRMBMenu() API). +} + +//--------------------------------------------------------------------- + +// protected virtual +QVariant kpAbstractSelectionTool::operation (DrawType drawType, Operation op, + const QVariant &data1, const QVariant &data2) +{ + switch (drawType) + { + case None: + // NOP. + return {}; + + case Create: + return operationCreate (op, data1, data2); + + case Move: + return operationMove (op, data1, data2); + + case ResizeScale: + return operationResizeScale (op, data1, data2); + + default: + Q_ASSERT (!"Unhandled draw type"); + return {}; + } +} + +//--------------------------------------------------------------------- + + + diff --git a/tools/selection/kpAbstractSelectionTool.h b/tools/selection/kpAbstractSelectionTool.h new file mode 100644 index 0000000..db88eb6 --- /dev/null +++ b/tools/selection/kpAbstractSelectionTool.h @@ -0,0 +1,600 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpAbstractSelectionTool_H +#define kpAbstractSelectionTool_H + + +#include "tools/kpTool.h" + +#include + + +class QKeyEvent; +class QPoint; +class QRect; + +class kpAbstractSelection; +class kpAbstractSelectionContentCommand; +class kpCommand; +class kpToolSelectionEnvironment; + + +// The abstract base for all selection tools. +// +// +// This provides methods to: +// +// 1. handle selection commands and the command history. +// +// 2. implement the kpTool drawing methods. +// +// 3. implement the "Create", "Move" and "Resize/Scale" selection +// draw types. +// +// "Drags" that consist of a single click generally have no effect in +// order to prevent accidentally creating a 1x1 selection, doing a NOP move +// or doing a NOP resize/scale. However, doing a bigger drag and then +// dragging the mouse back to create a 1x1 selection or the NOP +// effects are allowed and are recorded in the command history. +// +// Additionally, the "Create" draw type is fitted with "accidental drag +// detection" which will not create a selection in response in small and +// quick drags. +// +// +// The internal architecture is as follows and is of interest for subclasses +// and for changing the existing implementation of the above selection +// draw types: +// +// beginDraw() initiates the action by determining the current draw type +// by calling the virtual calculateDrawType(). Later, all of this class' +// implementations of kpTool drawing methods (e.g. beginDraw(), draw(), +// endShape() etc.) call the virtual operation(), which is passed: +// +// 1. the current draw type (e.g. "Create" or "Move") +// +// 2. the operation, corresponding to the calling method (e.g. +// "BeginDraw" of called by beginDraw()). +// +// [Note: the documentation in these source files sometimes uses "operation" +// where "draw type" is meant and vice-versa] +// +// Note that these kpTool drawing methods do some other work before and after +// calling operation(). +// +// The default implementation of operation() is to dispatch the operation +// to draw-type-specific methods e.g. createOperation() handles all +// operations for the "Create" draw type. createOperation() will then +// call the method that corresponds to the operation e.g. beginDrawCreate() +// corresponds to the "BeginDraw" operation. +// +// For each draw type, all methods are grouped in a single source file +// e.g. kpAbstractSelectionTool_Create.cpp. +// +// To introduce a custom draw type, not implemented by code in this +// class (e.g. "SelectText"), you must: +// +// 1. Add it to "enum DrawType" below. +// +// 2. Override calculateDrawType() to determine the situations in which +// the new draw type is active. +// +// 3. Override operation() to catch all situations in which the new draw +// type is being used, and to implement the appropriate logic. +// +class kpAbstractSelectionTool : public kpTool +{ +Q_OBJECT + +public: + kpAbstractSelectionTool (const QString &text, const QString &description, + int key, + kpToolSelectionEnvironment *environ, QObject *parent, + const QString &name); + + ~kpAbstractSelectionTool () override; + + + // Inform kpTool to call draw() when CTRL, SHIFT and friends are + // pressed. CTRL is used for copying, instead of moving, the + // selection. SHIFT is used for sweeping. + bool careAboutModifierState () const override { return true; } + + +// +// Drawing - Subclass Accessors +// + +protected: + friend struct kpAbstractSelectionToolPrivate; + enum DrawType + { + None, Create, Move, SelectText, ResizeScale + }; + + + // The return value is not "None" during a drawing operation. + // + // The returned value is set by beginDraw(), after being determined + // by calculateDrawType(). It is cleared in cancelShape() and endDraw(). + DrawType drawType () const; + + bool hadSelectionBeforeDraw () const; + + +// +// Drawing +// + +protected: + // (overrides non-virtual method in kpTool) + kpToolSelectionEnvironment *environ () const; + + // Returns whether a CTRL or SHIFT key is currently pressed. + // Convenience method. + bool controlOrShiftPressed () const; + + +protected: + // Deselects the current selection: + // + // 1. If it has no content, it is simply deleted. + // 2. If it has content, it pushes it onto the document, adding the + // necessary commands to the command history. + // + // ASSUMPTIONS: + // 1. There is a current selection. + // 2. You have not called giveContentIfNeeded() nor + // addNeedingContentCommand() on the current selection. + void pushOntoDocument (); + + +// +// The command lifecycle is as follows: +// +// 1. Ensure that the document has a selection, with or without content. +// +// 2. Call giveContentIfNeeded(). +// +// 3. Create the command. +// +// 4. Process user input, mutate the selection directly and update the +// command with the user's input. +// +// 5. When the drawing operation is complete, call addNeedingContentCommand() +// with the command created in Step 3. +// +protected: + // Returns a new instance of the give-the-selection-content command + // that matches the current selection type. The command should not be + // executed by this method. + virtual kpAbstractSelectionContentCommand *newGiveContentCommand () const = 0; + + // Before changing a selection (e.g. moving or resizing), you must + // ensure that it has content. Call this method to ensure that. + // + // If the selection has no content, this calls newGiveContentCommand() + // and executes it. If the selection already has content, this does + // nothing. + // + // ASSUMPTION: There is a selection. + void giveContentIfNeeded (); + + // The name that should be given to command that is constructed in + // response to a drag that creates a new selection. + virtual QString nameOfCreateCommand () const = 0; + + // Add a command to the command history. + // The command is not executed. + // + // If the prior call to giveContentIfNeeded() created content, this + // will, in line with KolourPaint selection convention: + // + // 1. Adds a selection border creation command (this is a bit clever + // and may overwrite the last "Undo" command instead -- see + // kpCommandHistory::addCreateSelectionCommand()). + // + // 2. Group the content command created by giveContentIfNeeded() + // with , as a kpMacroCommand also named . + // + // ASSUMPTION: giveContentIfNeeded() must have been called before + // creating . + void addNeedingContentCommand (kpCommand *cmd); + + +protected: + // Sets the selection border mode when no drawing operation is active. + // + // Subclasses may wish to reimplement but should still call the base + // implementation. Reimplementations should wrap the whole + // reimplementation in a kpViewManager::setQueueUpdates() block. + virtual void setSelectionBorderForHaventBegunDraw (); +private: + // Returns the statusbar message from when no draw operation is in + // progress. Calls operation() with "HaventBegunDrawUserMessage". + // + // (not const due to purely syntactic issue: it calls the non-const + // operation(); it really acts like a const method though) + QString haventBegunDrawUserMessage (); + + +public: + void begin () override; + void end () override; + + +public: + void reselect () override; + + +// +// Drawing - Beginning a Drag +// + +protected: + // Called by calculateDrawType() to determine what type of draw type + // is being started in response to a drag inside the bounding rectangle of + // a selection. + // + // This implementation returns "Move". + // + // You are free to reimplement this and may choose to call this base + // implementation or not. + virtual DrawType calculateDrawTypeInsideSelection () const; + + // Called by beginDraw() to determine what type of draw type is + // being started. The returned draw type is passed to operation(). + // + // This implementation behaves according to the first rule that matches: + // + // 1. If the cursor is on top of a selection resize handle and no modifiers + // are held (i.e. not a smearing move draw type), it returns "ResizeScale". + // + // 2. If the cursor is inside the bounding rectangle of a selection, it + // calls calculateDrawTypeInsideSelection(). + // + // 3. Otherwise, it returns "Create". + // + // You are free to reimplement this and may choose to call this base + // implementation or not. Reimplementing allows you to support new + // draw types for different types of selections (e.g. kpToolText + // supports "SelectText"). It also allows you to make certain + // drags (e.g. dragging in the middle of a selection) do nothing by + // returning "None" instead of calling the base implementation. + virtual DrawType calculateDrawType () const; +public: + void beginDraw () override; + + +// +// Drawing - Mouse Movement +// + +public: + void hover (const QPoint &point) override; + void draw (const QPoint &thisPoint, const QPoint &lastPoint, + const QRect &normalizedRect) override; + + +// +// Drawing - Ending a Drag +// + +public: + void cancelShape () override; + void releasedAllButtons () override; + + +protected: + // Displays the right-mouse-button-triggered selection menu, re-entering + // the event loop and blocking until the menu closes. + // + // This menu is a subset of the main window's Edit and Selection menus. + // + // WARNING: This may cause a re-entry of view/tool event handlers. + // If you are calling this from a view/tool event handler, + // either make all your handlers re-entrant or do not put any + // code in your handler after the call. + void popupRMBMenu (); +public: + void endDraw (const QPoint &thisPoint, const QRect &normalizedRect) override; + + +// +// Drawing - Operation Dispatching +// + +protected: + enum Operation + { + // + // These may be called outside of a drawing operation where + // drawType() will return None. + // + + // Returns the message for the given draw type and operation. + HaventBegunDrawUserMessage, + + SetCursor, + + + // + // Called to start, to end, or inside, a drawing operation. + // + + BeginDraw, Draw, Cancel, EndDraw + }; + + // (See the class API Doc for a description). + virtual QVariant operation (DrawType drawType, Operation op, + const QVariant &data1 = QVariant (), const QVariant &data2 = QVariant ()); + + +// +// Create +// + +private: + // Called by constructor to initialize the "Create" draw type. + void initCreate (); + // Called by destructor to uninitialize the "Create" draw type. + void uninitCreate (); + + +private: + void beginCreate (); + void endCreate (); + + +protected: + virtual QString haventBegunDrawUserMessageCreate () const = 0; +private: + void setCursorCreate (); + + +protected: + // Sets the selection border mode when beginning to drag to create a + // selection. + // + // Subclasses may wish to reimplement but should still call the base + // implementation. Reimplementations should wrap the whole + // reimplementation in a kpViewManager::setQueueUpdates() block. + virtual void setSelectionBorderForBeginDrawCreate (); +private: + void beginDrawCreate (); + + +protected: + // + // If the drag has already been substantial enough to be considered as a + // non-NOP drag (), you must return "true". + // + // If it has not, you should return whether you think the drag should + // be started. This criteria usually includes "if + // is not equal to startPoint()". + // + // If you are returning true, you must: + // + // 1. Set the document's selection (which may not have previously + // existed) to the specified size. + // + // 2. Update the status bar by calling kpTool::setUserShapePoints(). + // + // If you return false, you are still permitted to do the above, + // although it would be unusual (kpToolText does the above to allow a + // single click -- with no dragging -- to create a new text box). + // + // The return value will be fed into the next call as . + // + // Arguments: + // + // 1. : + // This is the same as currentPoint() but is set to startPoint() + // if the mouse has not been moved much (6 manhatten length pixels + // from startPoint() within a short period of time (200ms)). + // This provides the accidental drag detection, referred to in the + // class' API Doc. + // + // 2. : + // This is as passed to kpTool::draw(). + // + virtual bool drawCreateMoreSelectionAndUpdateStatusBar ( + bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const QRect &normalizedRect) = 0; + void drawCreate (const QPoint &thisPoint, const QRect &normalizedRect); +private slots: + void delayedDrawCreate (); + + +private: + void cancelCreate (); + void endDrawCreate (); + + +private: + QVariant operationCreate (Operation op, + const QVariant &data1, const QVariant &data2); + + +// +// Move +// + +private: + // Called by constructor to initialize the "Move" draw type. + void initMove (); + // Called by destructor to uninitialize the "Move" draw type. + void uninitMove (); + + +private: + void beginMove (); + void endMove (); + + +protected: + virtual QString haventBegunDrawUserMessageMove () const = 0; +private: + void setCursorMove (); + + +protected: + // Sets the selection border mode when beginning to drag to move a + // selection. + // + // Subclasses may wish to reimplement but should still call the base + // implementation. Reimplementations should wrap the whole + // reimplementation in a kpViewManager::setQueueUpdates() block. + virtual void setSelectionBorderForBeginDrawMove (); +private: + void beginDrawMove (); +private slots: + void slotRMBMoveUpdateGUI (); + + +private: + void drawMove (const QPoint &thisPoint, const QRect &normalizedRect); + + +private: + void cancelMove (); +protected: + // Returns what the name of the command that moves -- but does not smear + // (not holding SHIFT) -- the selection, should be. + virtual QString nonSmearMoveCommandName () const; +private: + void endDrawMove (); + + +private: + QVariant operationMove (Operation op, + const QVariant &data1, const QVariant &data2); + + +// +// Resize/Scale +// + +private: + int onSelectionResizeHandle () const; + + +private: + // Called by constructor to initialize the "Resize/Scale" draw type. + void initResizeScale (); + // Called by destructor to uninitialize the "Resize/Scale" draw type. + void uninitResizeScale (); + + +private: + void beginResizeScale (); + void endResizeScale (); + + +protected: + virtual QString haventBegunDrawUserMessageResizeScale () const = 0; +private: + void setCursorResizeScale (); + + +protected: + // Sets the selection border mode when beginning to drag to resize or + // scale a selection. + // + // Subclasses may wish to reimplement but should still call the base + // implementation. Reimplementations should wrap the whole + // reimplementation in a kpViewManager::setQueueUpdates() block. + virtual void setSelectionBorderForBeginDrawResizeScale (); +private: + void beginDrawResizeScale (); + + +private: + // drawResizeScaleCalculateNewSelectionPosSize() calls us with what the + // x should be, but before any aspect maintenance + // operations. + // + // specifies whether a horizontal grip is being + // dragged. specifies whether a vertical grip is + // being dragged. + // + // The selection before any resizing/scaling (before the sequence of + // drags, where the mouse has been held down) is . + // + // The method should output its attempt at maintaining the aspect ratio. + // We say "attempt" because it is constrained by the minimum allowed + // size of the selection. + void drawResizeScaleTryKeepAspect (int newWidth, int newHeight, + bool horizontalGripDragged, bool verticalGripDragged, + const kpAbstractSelection &originalSelection, + int *newWidthOut, int *newHeightOut); + + void drawResizeScaleCalculateNewSelectionPosSize ( + const kpAbstractSelection &originalSelection, + int *newX, int *newY, + int *newWidth, int *newHeight); + + void drawResizeScale (const QPoint &thisPoint, const QRect &normalizedRect); + + +private: + void cancelResizeScale (); + void endDrawResizeScale (); + + +private: + QVariant operationResizeScale (Operation op, + const QVariant &data1, const QVariant &data2); + + +// +// User Setting Selection Options +// + +protected slots: + virtual void slotIsOpaqueChanged (bool isOpaque) = 0; + + +// +// Keyboard Events +// + +protected: + // Reimplemented to trap Esc presses for deselecting the selection. + // All other keypresses are passed to the base implementation. + void keyPressEvent (QKeyEvent *e) override; + + +private: + struct kpAbstractSelectionToolPrivate * const d; +}; + + +#endif // kpAbstractSelectionTool_H diff --git a/tools/selection/kpAbstractSelectionToolPrivate.h b/tools/selection/kpAbstractSelectionToolPrivate.h new file mode 100644 index 0000000..58e737c --- /dev/null +++ b/tools/selection/kpAbstractSelectionToolPrivate.h @@ -0,0 +1,91 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpAbstractSelectionToolPrivate_H +#define kpAbstractSelectionToolPrivate_H + +#include "kpAbstractSelectionTool.h" + +#include + + +class QTimer; + +class kpAbstractSelectionContentCommand; +class kpToolSelectionMoveCommand; +class kpToolSelectionResizeScaleCommand; +class kpToolWidgetOpaqueOrTransparent; + + +struct kpAbstractSelectionToolPrivate +{ + kpAbstractSelectionTool::DrawType drawType; + kpAbstractSelectionContentCommand *currentSelContentCommand; + + // Whether the drag has been substantial enough to be considered as a + // non-NOP drag. The "substantial enough" criteria is draw-type + // dependent and is usually based on how far the mouse has been + // dragged. See kpAbstractSelectionTool's API Doc for details. + bool dragAccepted; + + bool hadSelectionBeforeDraw; + + bool cancelledShapeButStillHoldingButtons; + + kpToolWidgetOpaqueOrTransparent *toolWidgetOpaqueOrTransparent; + + + // + // Create + // + + QTimer *createNOPTimer; + + + // + // Move + // + + kpToolSelectionMoveCommand *currentMoveCommand; + bool currentMoveCommandIsSmear; + + QPoint startMoveDragFromSelectionTopLeft; + + QTimer *RMBMoveUpdateGUITimer; + + + // + // Resize / Scale + // + + kpToolSelectionResizeScaleCommand *currentResizeScaleCommand; + int resizeScaleType; +}; + + +#endif // kpAbstractSelectionToolPrivate_H diff --git a/tools/selection/kpAbstractSelectionTool_Create.cpp b/tools/selection/kpAbstractSelectionTool_Create.cpp new file mode 100644 index 0000000..f43e605 --- /dev/null +++ b/tools/selection/kpAbstractSelectionTool_Create.cpp @@ -0,0 +1,300 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpAbstractSelectionTool.h" +#include "kpAbstractSelectionToolPrivate.h" + +#include +#include +#include + +#include + +#include "kpLogCategories.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "layers/selections/kpAbstractSelection.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "commands/kpMacroCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "commands/tools/selection/kpToolSelectionDestroyCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/kpToolSelectionMoveCommand.h" +#include "commands/tools/selection/kpToolSelectionResizeScaleCommand.h" +#include "commands/tools/selection/kpToolImageSelectionTransparencyCommand.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + + +// private +void kpAbstractSelectionTool::initCreate () +{ + d->createNOPTimer = new QTimer (this); + d->createNOPTimer->setSingleShot (true); + connect (d->createNOPTimer, &QTimer::timeout, + this, &kpAbstractSelectionTool::delayedDrawCreate); +} + +// private +void kpAbstractSelectionTool::uninitCreate () +{ + // d->createNOPTimer (deleted by QObject mechanism) +} + + +// private +void kpAbstractSelectionTool::beginCreate () +{ + // d->createNOPTimer +} + +// private +void kpAbstractSelectionTool::endCreate () +{ + // d->createNOPTimer +} + +//--------------------------------------------------------------------- +// use a crosshair cursor which is really always exactly 1 pixel wide +// to the contrary of the "themed" crosshair cursors which might look nice +// but does not allow to exactly position the hot-spot. +/* XPM */ +static const char *crosshair[]={ +"17 17 3 1", +". c None", +"x c #FFFFFF", +"# c #000000", +".......xxx.......", +".......x#x.......", +".......x#x.......", +".......x#x.......", +".......x#x.......", +".......x#x.......", +".......x#x.......", +"xxxxxxxx#xxxxxxxx", +"x#######.#######x", +"xxxxxxxx#xxxxxxxx", +".......x#x.......", +".......x#x.......", +".......x#x.......", +".......x#x.......", +".......x#x.......", +".......x#x.......", +".......xxx......."}; + +// private +void kpAbstractSelectionTool::setCursorCreate () +{ + viewManager()->setCursor(QCursor(QPixmap(crosshair), 8, 8)); +} + +//--------------------------------------------------------------------- + +// protected virtual +void kpAbstractSelectionTool::setSelectionBorderForBeginDrawCreate () +{ + viewManager ()->setQueueUpdates (); + { + // LOREFACTOR: I suspect some calls to viewManager() in this + // file (including this) are redundant since any + // code that tweaks such settings, returns them to + // their original state, after the code is complete. + viewManager ()->setSelectionBorderVisible (true); + + viewManager ()->setSelectionBorderFinished (false); + } + viewManager ()->restoreQueueUpdates (); +} + +// private +void kpAbstractSelectionTool::beginDrawCreate () +{ + if (document ()->selection ()) { + pushOntoDocument (); + } + + /*virtual*/setSelectionBorderForBeginDrawCreate (); + + // (single shot) + d->createNOPTimer->start (200/*ms*/); + + setUserMessage (cancelUserMessage ()); +} + + +// private +void kpAbstractSelectionTool::drawCreate (const QPoint &thisPoint, + const QRect &normalizedRect) +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\tnot moving - resizing rect to" << normalizedRect; + qCDebug(kpLogTools) << "\t\tcreateNOPTimer->isActive()=" + << d->createNOPTimer->isActive () + << " viewManhattanLength from startPoint=" + << viewUnderStartPoint ()->transformDocToViewX ((thisPoint - startPoint ()).manhattanLength ()); +#endif + + QPoint accidentalDragAdjustedPoint = thisPoint; + if (d->createNOPTimer->isActive ()) + { + // See below "d->createNOPTimer->stop()". + Q_ASSERT (!d->dragAccepted); + + if (viewUnderStartPoint ()->transformDocToViewX ( + (accidentalDragAdjustedPoint - startPoint ()).manhattanLength ()) <= 6) + { + #if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\t\tsuppress accidental movement"; + #endif + accidentalDragAdjustedPoint = startPoint (); + } + else + { + #if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\t\tit's a \"big\" intended move - stop timer"; + #endif + d->createNOPTimer->stop (); + } + } + + + const bool hadSelection = document ()->selection (); + + const bool oldDrawAcceptedAsDrag = d->dragAccepted; + d->dragAccepted = /*virtual*/drawCreateMoreSelectionAndUpdateStatusBar ( + d->dragAccepted, + accidentalDragAdjustedPoint, + normalizedRect); + if (oldDrawAcceptedAsDrag) { + Q_ASSERT (d->dragAccepted); + } + if (d->dragAccepted) + { + #if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\t\tdrawHasDoneSomething - kill create timer"; + #endif + // No longer a NOP. + d->createNOPTimer->stop (); + } + + // Did we just create a selection? + if (!hadSelection && document ()->selection ()) { + viewManager ()->setSelectionBorderVisible (true); + } +} + +// private slot +void kpAbstractSelectionTool::delayedDrawCreate () +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "kpAbstractSelectionTool::delayedDrawCreate() hasBegunDraw=" + << hasBegunDraw () + << " currentPoint=" << currentPoint () + << " lastPoint=" << lastPoint () + << " startPoint=" << startPoint (); +#endif + + // (just in case not called from single shot) + d->createNOPTimer->stop (); + + if (hasBegunDraw ()) + { + draw (currentPoint (), lastPoint (), normalizedRect ()); + } +} + + +// private +void kpAbstractSelectionTool::cancelCreate () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\twas creating sel - kill"; +#endif + + d->createNOPTimer->stop (); + + // TODO: should we give the user back the selection s/he had before (if any)? + if (document ()->selection ()) { + document ()->selectionDelete (); + } +} + +// private +void kpAbstractSelectionTool::endDrawCreate () +{ + d->createNOPTimer->stop (); +} + + +// private +QVariant kpAbstractSelectionTool::operationCreate (Operation op, + const QVariant &data1, const QVariant &data2) +{ + (void) data1; + (void) data2; + + + switch (op) + { + case HaventBegunDrawUserMessage: + return /*virtual*/haventBegunDrawUserMessageCreate (); + + case SetCursor: + setCursorCreate (); + break; + + case BeginDraw: + beginDrawCreate (); + break; + + case Draw: + drawCreate (currentPoint (), normalizedRect ()); + break; + + case Cancel: + cancelCreate (); + break; + + case EndDraw: + endDrawCreate (); + break; + + default: + Q_ASSERT (!"Unhandled operation"); + break; + } + + + return {}; +} diff --git a/tools/selection/kpAbstractSelectionTool_KeyboardEvents.cpp b/tools/selection/kpAbstractSelectionTool_KeyboardEvents.cpp new file mode 100644 index 0000000..bd6c80f --- /dev/null +++ b/tools/selection/kpAbstractSelectionTool_KeyboardEvents.cpp @@ -0,0 +1,102 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpAbstractSelectionTool.h" +#include "kpAbstractSelectionToolPrivate.h" + +#include "document/kpDocument.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/kpToolSelectionMoveCommand.h" +#include "layers/selections/kpAbstractSelection.h" + +#include + +#include "kpLogCategories.h" + +//--------------------------------------------------------------------- + +// protected virtual [base kpTool] +void kpAbstractSelectionTool::keyPressEvent (QKeyEvent *e) +{ +#if DEBUG_KP_TOOL_SELECTION && 0 + qCDebug(kpLogTools) << "kpAbstractSelectionTool::keyPressEvent(e->text='" + << e->text () << "')"; +#endif + + e->ignore (); + + if (document ()->selection () && + !hasBegunDraw () && + e->key () == Qt::Key_Escape) + { + #if DEBUG_KP_TOOL_SELECTION && 0 + qCDebug(kpLogTools) << "\tescape pressed with sel when not begun draw - deselecting"; + #endif + + pushOntoDocument (); + e->accept (); + } + else + { + #if DEBUG_KP_TOOL_SELECTION && 0 + qCDebug(kpLogTools) << "\tkey processing did not accept (text was '" + << e->text () + << "') - passing on event to kpTool"; + #endif + + if ( document()->selection() && !hasBegunDraw() && + ((e->key() == Qt::Key_Left) || + (e->key() == Qt::Key_Right) || + (e->key() == Qt::Key_Up) || + (e->key() == Qt::Key_Down)) ) + { + // move selection with cursor keys pixel-wise + giveContentIfNeeded(); + + if ( !d->currentMoveCommand ) + { + d->currentMoveCommand = new kpToolSelectionMoveCommand( + QString()/*uninteresting child of macro cmd*/, + environ()->commandEnvironment()); + d->currentMoveCommandIsSmear = false; + } + + int dx, dy; + arrowKeyPressDirection(e, &dx, &dy); + d->currentMoveCommand->moveTo(document()->selection()->topLeft() + QPoint(dx, dy)); + endDrawMove(); + } + else + kpTool::keyPressEvent(e); + } +} + +//--------------------------------------------------------------------- diff --git a/tools/selection/kpAbstractSelectionTool_Move.cpp b/tools/selection/kpAbstractSelectionTool_Move.cpp new file mode 100644 index 0000000..0fc08d7 --- /dev/null +++ b/tools/selection/kpAbstractSelectionTool_Move.cpp @@ -0,0 +1,407 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpAbstractSelectionTool.h" +#include "kpAbstractSelectionToolPrivate.h" +#include "kpLogCategories.h" +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "layers/selections/kpAbstractSelection.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "commands/kpMacroCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "commands/tools/selection/kpToolSelectionDestroyCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/kpToolSelectionMoveCommand.h" +#include "commands/tools/selection/kpToolSelectionResizeScaleCommand.h" +#include "commands/tools/selection/kpToolImageSelectionTransparencyCommand.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include + +#include + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::initMove () +{ + d->currentMoveCommand = nullptr; + + // d->currentMoveCommandIsSmear + + // d->startMoveDragFromSelectionTopLeft + + d->RMBMoveUpdateGUITimer = new QTimer (this); + d->RMBMoveUpdateGUITimer->setSingleShot (true); + connect (d->RMBMoveUpdateGUITimer, &QTimer::timeout, + this, &kpAbstractSelectionTool::slotRMBMoveUpdateGUI); +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::uninitMove () +{ + // (state must be after construction, or after some time after endMove()) + Q_ASSERT (!d->currentMoveCommand); + + // d->currentMoveCommandIsSmear + + // d->startMoveDragFromSelectionTopLeft + + // d->RMBMoveUpdateGUITimer (deleted by QObject mechanism) +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::beginMove () +{ + // (state must be after construction, or after some time after endMove()) + Q_ASSERT (!d->currentMoveCommand); + + // d->currentMoveCommandIsSmear + + // d->startMoveDragFromSelectionTopLeft; + + // d->RMBMoveUpdateGUITimer +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::endMove () +{ + // (should have been killed by cancelMove() or endDrawMove()) + Q_ASSERT (!d->currentMoveCommand); + + // d->currentMoveCommandIsSmear + + // d->startMoveDragFromSelectionTopLeft + + // d->RMBMoveUpdateGUITimer +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::setCursorMove () +{ + viewManager ()->setCursor (Qt::SizeAllCursor); +} + +//--------------------------------------------------------------------- + +// protected virtual +void kpAbstractSelectionTool::setSelectionBorderForBeginDrawMove () +{ + // don't show border while moving + viewManager ()->setQueueUpdates (); + { + viewManager ()->setSelectionBorderVisible (false); + viewManager ()->setSelectionBorderFinished (true); + } + viewManager ()->restoreQueueUpdates (); +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::beginDrawMove () +{ + d->startMoveDragFromSelectionTopLeft = + currentPoint () - document ()->selection ()->topLeft (); + + if (mouseButton () == 0) + { + /*virtual*/setSelectionBorderForBeginDrawMove (); + } + else + { + // Don't hide sel border momentarily if user is just + // right _clicking_ selection. + // (single shot timer) + d->RMBMoveUpdateGUITimer->start (100/*ms*/); + } + + setUserMessage (cancelUserMessage ()); +} + +//--------------------------------------------------------------------- + +// private slot +void kpAbstractSelectionTool::slotRMBMoveUpdateGUI () +{ + // (just in case not called from single shot) + d->RMBMoveUpdateGUITimer->stop (); + + /*virtual*/setSelectionBorderForBeginDrawMove (); + + kpAbstractSelection * const sel = document ()->selection (); + if (sel) { + setUserShapePoints (sel->topLeft ()); + } +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::drawMove (const QPoint &thisPoint, const QRect &/*normalizedRect*/) +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\tmoving selection"; +#endif + + kpAbstractSelection *sel = document ()->selection (); + + QRect targetSelRect (thisPoint.x () - d->startMoveDragFromSelectionTopLeft.x (), + thisPoint.y () - d->startMoveDragFromSelectionTopLeft.y (), + sel->width (), + sel->height ()); + +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\t\tstartPoint=" << startPoint () + << " thisPoint=" << thisPoint + << " startDragFromSel=" << d->startMoveDragFromSelectionTopLeft + << " targetSelRect=" << targetSelRect; +#endif + + // Try to make sure selection still intersects document so that it's + // reachable. + + if (targetSelRect.right () < 0) { + targetSelRect.translate (-targetSelRect.right (), 0); + } + else if (targetSelRect.left () >= document ()->width ()) { + targetSelRect.translate (document ()->width () - targetSelRect.left () - 1, 0); + } + + if (targetSelRect.bottom () < 0) { + targetSelRect.translate (0, -targetSelRect.bottom ()); + } + else if (targetSelRect.top () >= document ()->height ()) { + targetSelRect.translate (0, document ()->height () - targetSelRect.top () - 1); + } + +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\t\t\tafter ensure sel rect clickable=" << targetSelRect; +#endif + + + if (!d->dragAccepted && + targetSelRect.topLeft () + d->startMoveDragFromSelectionTopLeft == startPoint ()) + { + #if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\t\t\t\tnop"; + #endif + + + if (!d->RMBMoveUpdateGUITimer->isActive ()) + { + // (slotRMBMoveUpdateGUI() calls similar line) + setUserShapePoints (sel->topLeft ()); + } + + // Prevent both NOP drag-moves + return; + } + + + if (d->RMBMoveUpdateGUITimer->isActive ()) + { + d->RMBMoveUpdateGUITimer->stop (); + slotRMBMoveUpdateGUI (); + } + + + giveContentIfNeeded (); + + + if (!d->currentMoveCommand) + { + d->currentMoveCommand = new kpToolSelectionMoveCommand ( + QString()/*uninteresting child of macro cmd*/, + environ ()->commandEnvironment ()); + d->currentMoveCommandIsSmear = false; + } + + + //viewManager ()->setQueueUpdates (); + //viewManager ()->setFastUpdates (); + + if (shiftPressed ()) { + d->currentMoveCommandIsSmear = true; + } + + if (!d->dragAccepted && (controlPressed () || shiftPressed ())) { + d->currentMoveCommand->copyOntoDocument (); + } + + d->currentMoveCommand->moveTo (targetSelRect.topLeft ()); + + if (shiftPressed ()) { + d->currentMoveCommand->copyOntoDocument (); + } + + //viewManager ()->restoreFastUpdates (); + //viewManager ()->restoreQueueUpdates (); + + // REFACTOR: yuck, yuck + kpAbstractSelection *orgSel = d->currentMoveCommand->originalSelectionClone (); + QPoint start = orgSel->topLeft (); + delete orgSel; + QPoint end = targetSelRect.topLeft (); + setUserShapePoints (start, end, false/*don't set size*/); + setUserShapeSize (end.x () - start.x (), end.y () - start.y ()); + + + d->dragAccepted = true; +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::cancelMove () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\twas drag moving - undo drag and undo acquire"; +#endif + + d->RMBMoveUpdateGUITimer->stop (); + + // NOP drag? + if (!d->currentMoveCommand) { + return; + } + +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\t\tundo currentMoveCommand"; +#endif + d->currentMoveCommand->finalize (); + d->currentMoveCommand->unexecute (); + delete d->currentMoveCommand; + d->currentMoveCommand = nullptr; +} + +//--------------------------------------------------------------------- + +// protected virtual +QString kpAbstractSelectionTool::nonSmearMoveCommandName () const +{ + return i18n ("Selection: Move"); +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::endDrawMove () +{ + d->RMBMoveUpdateGUITimer->stop (); + + // NOP drag? + if (!d->currentMoveCommand) { + return; + } + + d->currentMoveCommand->finalize (); + + kpMacroCommand *renamedCmd = nullptr; +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\thave moveCommand"; +#endif + if (d->currentMoveCommandIsSmear) + { + renamedCmd = new kpMacroCommand (i18n ("%1: Smear", + document ()->selection ()->name ()), + environ ()->commandEnvironment ()); + } + else + { + renamedCmd = new kpMacroCommand ( + /*virtual*/nonSmearMoveCommandName (), + environ ()->commandEnvironment ()); + } + + renamedCmd->addCommand (d->currentMoveCommand); + d->currentMoveCommand = nullptr; + + addNeedingContentCommand (renamedCmd); +} + +//--------------------------------------------------------------------- + +// private +QVariant kpAbstractSelectionTool::operationMove (Operation op, + const QVariant &data1, const QVariant &data2) +{ + (void) data1; + (void) data2; + + + switch (op) + { + case HaventBegunDrawUserMessage: + return /*virtual*/haventBegunDrawUserMessageMove (); + + case SetCursor: + setCursorMove (); + break; + + case BeginDraw: + beginDrawMove (); + break; + + case Draw: + drawMove (currentPoint (), normalizedRect ()); + break; + + case Cancel: + cancelMove (); + break; + + case EndDraw: + endDrawMove (); + break; + + default: + Q_ASSERT (!"Unhandled operation"); + break; + } + + return {}; +} + +//--------------------------------------------------------------------- diff --git a/tools/selection/kpAbstractSelectionTool_ResizeScale.cpp b/tools/selection/kpAbstractSelectionTool_ResizeScale.cpp new file mode 100644 index 0000000..8fd1a56 --- /dev/null +++ b/tools/selection/kpAbstractSelectionTool_ResizeScale.cpp @@ -0,0 +1,450 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_SELECTION 0 + + +#include "kpAbstractSelectionTool.h" +#include "kpAbstractSelectionToolPrivate.h" +#include "kpLogCategories.h" + +#include + +#include "layers/selections/image/kpAbstractImageSelection.h" +#include "layers/selections/kpAbstractSelection.h" +#include "commands/kpCommandHistory.h" +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "commands/kpMacroCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "commands/tools/selection/kpToolSelectionDestroyCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/kpToolSelectionMoveCommand.h" +#include "commands/tools/selection/kpToolSelectionResizeScaleCommand.h" +#include "commands/tools/selection/kpToolImageSelectionTransparencyCommand.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + + +// private +int kpAbstractSelectionTool::onSelectionResizeHandle () const +{ + kpView *v = viewManager ()->viewUnderCursor (); + if (!v) { + return 0; + } + + return v->mouseOnSelectionResizeHandle (currentViewPoint ()); +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::initResizeScale () +{ + d->currentResizeScaleCommand = nullptr; + + // d->resizeScaleType +} + +// private +void kpAbstractSelectionTool::uninitResizeScale () +{ + // (state must be after construction, or after some time after endResizeScale()) + Q_ASSERT (!d->currentResizeScaleCommand); + + // d->resizeScaleType +} + + +// private +void kpAbstractSelectionTool::beginResizeScale () +{ + // (state must be after construction, or after some time after endResizeScale()) + Q_ASSERT (!d->currentResizeScaleCommand); + + // d->resizeScaleType +} + +// private +void kpAbstractSelectionTool::endResizeScale () +{ + // (should have been killed by cancelResizeScale() or endResizeScale()) + Q_ASSERT (!d->currentResizeScaleCommand); + + // d->resizeScaleType +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::setCursorResizeScale () +{ +#if DEBUG_KP_TOOL_SELECTION && 0 + qCDebug(kpLogTools) << "\tonSelectionResizeHandle=" + << onSelectionResizeHandle (); +#endif + Qt::CursorShape shape = Qt::ArrowCursor; + + switch (onSelectionResizeHandle ()) + { + case (kpView::Top | kpView::Left): + case (kpView::Bottom | kpView::Right): + shape = Qt::SizeFDiagCursor; + break; + + case (kpView::Bottom | kpView::Left): + case (kpView::Top | kpView::Right): + shape = Qt::SizeBDiagCursor; + break; + + case kpView::Top: + case kpView::Bottom: + shape = Qt::SizeVerCursor; + break; + + case kpView::Left: + case kpView::Right: + shape = Qt::SizeHorCursor; + break; + } + + viewManager ()->setCursor (shape); +} + +//--------------------------------------------------------------------- + +// protected virtual +void kpAbstractSelectionTool::setSelectionBorderForBeginDrawResizeScale () +{ + viewManager ()->setQueueUpdates (); + { + viewManager ()->setSelectionBorderVisible (true); + viewManager ()->setSelectionBorderFinished (true); + } + viewManager ()->restoreQueueUpdates (); +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::beginDrawResizeScale () +{ + d->resizeScaleType = onSelectionResizeHandle (); + + /*virtual*/setSelectionBorderForBeginDrawResizeScale (); + + setUserMessage (cancelUserMessage ()); +} + +//--------------------------------------------------------------------- + + +// private +void kpAbstractSelectionTool::drawResizeScaleTryKeepAspect ( + int newWidth, int newHeight, + bool horizontalGripDragged, bool verticalGripDragged, + const kpAbstractSelection &originalSelection, + int *newWidthOut, int *newHeightOut) +{ + const int oldWidth = originalSelection.width (), + oldHeight = originalSelection.height (); + + // Width changed more than height? At equality, favor width. + // Fix width, change height. + // + // We use and to prevent + // e.g. the situation where we've dragged such that newWidth < oldWidth but + // we're not dragging a vertical grip. We certainly don't want this + // code to modify the width - we want to fix the width and change the + // height. + if ((horizontalGripDragged ? double (newWidth) / oldWidth : 0) >= + (verticalGripDragged ? double (newHeight) / oldHeight : 0)) + { + *newHeightOut = newWidth * oldHeight / oldWidth; + *newHeightOut = qMax (originalSelection.minimumHeight (), *newHeightOut); + } + // Height changed more than width? + // Fix height, change width. + else + { + *newWidthOut = newHeight * oldWidth / oldHeight; + *newWidthOut = qMax (originalSelection.minimumWidth (), *newWidthOut); + } +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::drawResizeScaleCalculateNewSelectionPosSize ( + const kpAbstractSelection &originalSelection, + int *newX, int *newY, + int *newWidth, int *newHeight) +{ + // + // Determine new width. + // + + // Dragging left or right grip? + // If left, positive X drags decrease width. + // If right, positive X drags increase width. + int userXSign = 0; + if (d->resizeScaleType & kpView::Left) { + userXSign = -1; + } + else if (d->resizeScaleType & kpView::Right) { + userXSign = +1; + } + + // Calculate new width. + *newWidth = originalSelection.width () + + userXSign * (currentPoint ().x () - startPoint ().x ()); + + // Don't allow new width to be less than that kind of selection type's + // minimum. + *newWidth = qMax (originalSelection.minimumWidth (), *newWidth); + + + // + // Determine new height. + // + + // Dragging top or bottom grip? + // If top, positive Y drags decrease height. + // If bottom, positive Y drags increase height. + int userYSign = 0; + if (d->resizeScaleType & kpView::Top) { + userYSign = -1; + } + else if (d->resizeScaleType & kpView::Bottom) { + userYSign = +1; + } + + // Calculate new height. + *newHeight = originalSelection.height () + + userYSign * (currentPoint ().y () - startPoint ().y ()); + + // Don't allow new height to be less than that kind of selection type's + // minimum. + *newHeight = qMax (originalSelection.minimumHeight (), *newHeight); + + + // Keep aspect ratio? + if (shiftPressed ()) + { + drawResizeScaleTryKeepAspect (*newWidth, *newHeight, + (userXSign != 0)/*X or XY grip dragged*/, + (userYSign != 0)/*Y or XY grip dragged*/, + originalSelection, + newWidth/*ptr*/, newHeight/*ptr*/); + } + + + *newX = originalSelection.x (); + *newY = originalSelection.y (); + + + // + // Adjust x/y to new width/height for left/top resizes. + // + + if (d->resizeScaleType & kpView::Left) + { + *newX -= (*newWidth - originalSelection.width ()); + } + + if (d->resizeScaleType & kpView::Top) + { + *newY -= (*newHeight - originalSelection.height ()); + } + +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\t\tnewX=" << *newX + << " newY=" << *newY + << " newWidth=" << *newWidth + << " newHeight=" << *newHeight; +#endif +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::drawResizeScale ( + const QPoint &thisPoint, + const QRect &/*normalizedRect*/) +{ +#if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\tresize/scale"; +#endif + + kpAbstractSelection *sel = document ()->selection (); + + if (!d->dragAccepted && thisPoint == startPoint ()) + { + #if DEBUG_KP_TOOL_SELECTION && 1 + qCDebug(kpLogTools) << "\t\tnop"; + #endif + + setUserShapePoints (QPoint (sel->width (), sel->height ())); + return; + } + + + giveContentIfNeeded (); + + + if (!d->currentResizeScaleCommand) + { + d->currentResizeScaleCommand + = new kpToolSelectionResizeScaleCommand (environ ()->commandEnvironment ()); + } + + + const kpAbstractSelection *originalSelection = + d->currentResizeScaleCommand->originalSelection (); + + + // There is nothing illegal about position (-1,-1) but why not. + int newX = -1, newY = -1, + newWidth = 0, newHeight = 0; + + // This should change all of the above values. + drawResizeScaleCalculateNewSelectionPosSize ( + *originalSelection, + &newX, &newY, + &newWidth, &newHeight); + + + viewManager ()->setFastUpdates (); + { + d->currentResizeScaleCommand->resizeAndMoveTo ( + newWidth, newHeight, + QPoint (newX, newY), + true/*smooth scale delayed*/); + } + viewManager ()->restoreFastUpdates (); + + setUserShapePoints (QPoint (originalSelection->width (), + originalSelection->height ()), + QPoint (newWidth, + newHeight), + false/*don't set size*/); + setUserShapeSize (newWidth - originalSelection->width (), + newHeight - originalSelection->height ()); + + + d->dragAccepted = true; +} + +//--------------------------------------------------------------------- + + +// private +void kpAbstractSelectionTool::cancelResizeScale () +{ +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\twas resize/scale sel - kill"; +#endif + + // NOP drag? + if (!d->currentResizeScaleCommand) { + return; + } + +#if DEBUG_KP_TOOL_SELECTION + qCDebug(kpLogTools) << "\t\tundo currentResizeScaleCommand"; +#endif + d->currentResizeScaleCommand->finalize (); // (unneeded but let's be safe) + d->currentResizeScaleCommand->unexecute (); + delete d->currentResizeScaleCommand; + d->currentResizeScaleCommand = nullptr; +} + +//--------------------------------------------------------------------- + +// private +void kpAbstractSelectionTool::endDrawResizeScale () +{ + // NOP drag? + if (!d->currentResizeScaleCommand) { + return; + } + + d->currentResizeScaleCommand->finalize (); + + addNeedingContentCommand (d->currentResizeScaleCommand); + d->currentResizeScaleCommand = nullptr; +} + +//--------------------------------------------------------------------- + +// private +QVariant kpAbstractSelectionTool::operationResizeScale (Operation op, + const QVariant &data1, const QVariant &data2) +{ + (void) data1; + (void) data2; + + + switch (op) + { + case HaventBegunDrawUserMessage: + return /*virtual*/haventBegunDrawUserMessageResizeScale (); + + case SetCursor: + setCursorResizeScale (); + break; + + case BeginDraw: + beginDrawResizeScale (); + break; + + case Draw: + drawResizeScale (currentPoint (), normalizedRect ()); + break; + + case Cancel: + cancelResizeScale (); + break; + + case EndDraw: + endDrawResizeScale (); + break; + + default: + Q_ASSERT (!"Unhandled operation"); + break; + } + + + return {}; +} + +//--------------------------------------------------------------------- diff --git a/tools/selection/text/kpToolText.cpp b/tools/selection/text/kpToolText.cpp new file mode 100644 index 0000000..9e0d365 --- /dev/null +++ b/tools/selection/text/kpToolText.cpp @@ -0,0 +1,222 @@ + +// REFACTOR: For all files involved in the class, refactor remaining bits and pieces and add APIDoc + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" +#include "kpLogCategories.h" + +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/tools/selection/text/kpToolTextBackspaceCommand.h" +#include "commands/tools/selection/text/kpToolTextChangeStyleCommand.h" +#include "commands/tools/selection/text/kpToolTextGiveContentCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/text/kpToolTextDeleteCommand.h" +#include "commands/tools/selection/text/kpToolTextEnterCommand.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include + +kpToolText::kpToolText (kpToolSelectionEnvironment *environ, QObject *parent) + : kpAbstractSelectionTool (i18n ("Text"), i18n ("Writes text"), + Qt::Key_T, + environ, parent, QStringLiteral("tool_text")), + d (new kpToolTextPrivate ()) +{ +} + +kpToolText::~kpToolText () +{ + delete d; +} + + +// protected virtual [kpAbstractSelectionTool] +kpAbstractSelectionContentCommand *kpToolText::newGiveContentCommand () const +{ + kpTextSelection *textSel = document ()->textSelection (); +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::newGiveContentCommand()" + << " textSel=" << textSel + << "; hasContent=" << textSel->hasContent (); +#endif + Q_ASSERT (textSel && !textSel->hasContent ()); + + return new kpToolTextGiveContentCommand ( + *textSel, + QString()/*uninteresting child of macro cmd*/, + environ ()->commandEnvironment ()); +} + + +// protected virtual [kpAbstractSelectionTool] +QString kpToolText::nameOfCreateCommand () const +{ + return i18n ("Text: Create Box"); +} + + +// protected virtual [base kpAbstractSelectionTool] +void kpToolText::setSelectionBorderForHaventBegunDraw () +{ + viewManager ()->setQueueUpdates (); + { + kpAbstractSelectionTool::setSelectionBorderForHaventBegunDraw (); + viewManager ()->setTextCursorEnabled (true); + } + viewManager ()->restoreQueueUpdates (); +} + + +// public virtual [base kpAbstractSelectionTool] +void kpToolText::begin () +{ +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogTools) << "kpToolText::begin()"; +#endif + + environ ()->enableTextToolBarActions (true); + + // We don't actually need this since begin() already calls it via + // setSelectionBorderForHaventBegunDraw(). We leave this in for + // consistency with end(). + viewManager ()->setTextCursorEnabled (true); + viewManager()->setInputMethodEnabled (true); + + endTypingCommands (); + + kpAbstractSelectionTool::begin (); +} + +// public virtual [base kpAbstractSelectionTool] +void kpToolText::end () +{ +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogTools) << "kpToolText::end()"; +#endif + + kpAbstractSelectionTool::end (); + + viewManager()->setInputMethodEnabled (false); + viewManager ()->setTextCursorEnabled (false); + environ ()->enableTextToolBarActions (false); +} + + +// public +bool kpToolText::hasBegunText () const +{ + return (d->insertCommand || + d->enterCommand || + d->backspaceCommand || + d->backspaceWordCommand || + d->deleteCommand || + d->deleteWordCommand); +} + +// public virtual [base kpTool] +bool kpToolText::hasBegunShape () const +{ + return (hasBegunDraw () || hasBegunText ()); +} + + +// protected virtual [base kpAbstractSelectionTool] +kpAbstractSelectionTool::DrawType kpToolText::calculateDrawTypeInsideSelection () const +{ + if (onSelectionToSelectText () && !controlOrShiftPressed ()) + { + return kpAbstractSelectionTool::SelectText; + } + + return kpAbstractSelectionTool::calculateDrawTypeInsideSelection (); +} + + +// public virtual [base kpAbstractSelectionTool] +void kpToolText::cancelShape () +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::cancelShape()"; +#endif + + if (drawType () != None) { + kpAbstractSelectionTool::cancelShape (); + } + else if (hasBegunText ()) + { + endTypingCommands (); + + commandHistory ()->undo (); + } + else { + kpAbstractSelectionTool::cancelShape (); + } +} + + +// public virtual [base kpTool] +void kpToolText::endShape (const QPoint &thisPoint, const QRect &normalizedRect) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::endShape()"; +#endif + + if (drawType () != None) { + kpAbstractSelectionTool::endDraw (thisPoint, normalizedRect); + } + else if (hasBegunText ()) { + endTypingCommands (); + } + else { + kpAbstractSelectionTool::endDraw (thisPoint, normalizedRect); + } +} + + +// protected virtual [base kpAbstractSelectionTool] +QVariant kpToolText::operation (DrawType drawType, Operation op, + const QVariant &data1, const QVariant &data2) +{ + if (drawType == SelectText) { + return selectTextOperation (op, data1, data2); + } + + return kpAbstractSelectionTool::operation (drawType, op, data1, data2); +} + + diff --git a/tools/selection/text/kpToolText.h b/tools/selection/text/kpToolText.h new file mode 100644 index 0000000..271abac --- /dev/null +++ b/tools/selection/text/kpToolText.h @@ -0,0 +1,725 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_TEXT_H +#define KP_TOOL_TEXT_H + + +#include "tools/selection/kpAbstractSelectionTool.h" + + +class QKeyEvent; + +class kpColor; +class kpTextStyle; + +class kpToolTextInsertCommand; +class kpToolTextEnterCommand; +class kpToolTextBackspaceCommand; +class kpToolTextDeleteCommand; + + +// +// kpAbstractSelectionTool considers a drawing operation to be a mouse +// drag that creates, moves or resize/scales a selection. +// +// kpToolText also considers any such drawing operation and alternatively, +// any active text command (e.g. inserting text), to be the "current +// shape". kpTool's shape methods (e.g. hasBegunShape() and endShape()) +// have been overloaded to ensure that they operate on whatever operation +// (drawing or text) is active. +// +// It is not possible to have a drawing command and text command active +// simultaneously. However, it is possible to have neither active. +// +// Text commands do not end until a different kind of key is pressed or +// a drawing command commences. For instance, if you were to +// type a character of text, a kpToolTextInsertCommand would be added to +// the command history but stays active so that future typed characters +// would simply be added to this command. As soon as the user presses +// a different kind of key (e.g. arrow key, backspace) or drags the mouse, +// the command is no longer kept active. +// +// +// kpToolText implements a new drawing type, "SelectText", for moving the +// text cursor to the clicked location. +// +// +// As an exception to the standard kpAbstractSelectionTool behavior, +// a single click -- with no dragging -- can be used to create a new text +// box. +// +class kpToolText : public kpAbstractSelectionTool +{ +Q_OBJECT + +public: + kpToolText (kpToolSelectionEnvironment *environ, QObject *parent); + ~kpToolText () override; + + +// +// Text Command Handling +// + +private: + /** + * Indicates that no current text editing command is active. + * You must call this, via endShape(), when ending the current command + * (e.g. changing from backspacing to inserting text + * e.g.2. changing from moving/resizing to inserting text). + * + * It achieves this by zero'ing out all the d->.+Command pointers. + * It does not delete the pointers as they should be owned by the + * commandHistory(). + * + * If you call this excessively, you will break up commands into many + * smaller commands e.g. a text insertion command with 10 characters + * might be split into 10 text insertion commands, each containing 1 + * character. + */ + void endTypingCommands (); + + + /** + * Ends the current text editing command by eventually calling + * endTypingCommands(), returns a new + * kpToolTextBackspaceCommand and adds it to the commandHistory(). + * + * @param cmd A Pointer to one of the d->backspace.*Command pointers. + * On function return, the pointed-to d->backspace.*Command + * pointer will point to a new kpToolTextBackspaceCommand. + */ + void addNewBackspaceCommand (kpToolTextBackspaceCommand **cmd); + + /** + * Ends the current text editing command by eventually calling + * endTypingCommands(), returns a new + * kpToolTextDeleteCommand and adds it to the commandHistory(). + * + * @param cmd A Pointer to one of the d->delete.*Command pointers. On + * function return, the pointed-to d->delete.*Command pointer + * will point to a new kpToolTextDeleteCommand. + */ + void addNewDeleteCommand (kpToolTextDeleteCommand **cmd); + + void addNewEnterCommand (kpToolTextEnterCommand **cmd); + + void addNewInsertCommand (kpToolTextInsertCommand **cmd); + + +// +// Drawing +// + +protected: + kpAbstractSelectionContentCommand *newGiveContentCommand () const override; + + QString nameOfCreateCommand () const override; + + +protected: + void setSelectionBorderForHaventBegunDraw () override; + + +public: + void begin () override; + void end () override; + + +public: + bool hasBegunText () const; + bool hasBegunShape () const override; + + +// +// Drawing - Beginning a Drag +// + +protected: + DrawType calculateDrawTypeInsideSelection () const override; + + +public: + void cancelShape () override; + + +public: + void endShape (const QPoint &thisPoint, const QRect &normalizedRect) override; + + +// +// Drawing - Operation Dispatching +// + +protected: + QVariant operation (DrawType drawType, Operation op, + const QVariant &data1 = QVariant (), const QVariant &data2 = QVariant ()) override; + + +// +// Create +// + +protected: + QString haventBegunDrawUserMessageCreate () const override; + + +protected: + void setSelectionBorderForBeginDrawCreate () override; + + +private: + // Returns the suggested width/height of a click-created text box: + // + // = starting X/Y of the entire drag + // = current ending X/Y of the entire drag + // + // = the preferred minimum width/height of the selection + // = the legal minimum width/height of the selection + // + // = the width/height of the document + int calcClickCreateDimension (int mouseStart, int mouseEnd, + int preferredMin, int smallestMin, + int docSize); + bool shouldCreate ( + bool drawAcceptedAsDrag, + const QPoint &accidentalDragAdjustedPoint, + const kpTextStyle &textStyle, + int *minimumWidthOut, int *minimumHeightOut, + bool *newDragHasBegun); +protected: + bool drawCreateMoreSelectionAndUpdateStatusBar ( + bool drawAcceptedAsDrag, + const QPoint &accidentalDragAdjustedPoint, + const QRect &normalizedRectIn) override; + + +// +// Move +// + +protected: + QString haventBegunDrawUserMessageMove () const override; + + +protected: + void setSelectionBorderForBeginDrawMove () override; + + +protected: + QString nonSmearMoveCommandName () const override; + + +// +// Resize/Scale +// + +protected: + QString haventBegunDrawUserMessageResizeScale () const override; + + +protected: + void setSelectionBorderForBeginDrawResizeScale () override; + + +// +// Select Text +// + +private: + bool onSelectionToSelectText () const; + + +private: + QString haventBegunDrawUserMessageSelectText () const; + + void setCursorSelectText (); + + +private: + void beginDrawSelectText (); + + +protected: + virtual QVariant selectTextOperation (Operation op, + const QVariant &data1 = QVariant (), const QVariant &data2 = QVariant ()); + + +// +// User Changing Text Style Elements +// + +protected: + bool shouldChangeTextStyle () const; + + /** + * Adds a kpToolTextChangeStyleCommand to commandHistory(). + * + * Call this when an element of the text style changes (e.g. user + * changes font size, boldness, color etc.). + * + * @param name Name of the command in the command history. + * @param newTextStyle The new and current text style. + * @param oldTextStyle The old and previous text style. + * + * You should only call this if shouldChangeTextStyle() returns true. + */ + void changeTextStyle (const QString &name, + const kpTextStyle &newTextStyle, + const kpTextStyle &oldTextStyle); + +protected slots: + void slotIsOpaqueChanged (bool isOpaque) override; + + +protected: + /** + * Asks kpTool to call slotColorsSwapped() when the foreground and + * background color are swapped. + * + * Re-implemented from kpTool. + */ + bool careAboutColorsSwapped () const override { return true; } + +protected slots: + void slotColorsSwapped (const kpColor &newForegroundColor, + const kpColor &newBackgroundColor) override; + + void slotForegroundColorChanged (const kpColor &color) override; + void slotBackgroundColorChanged (const kpColor &color) override; + void slotColorSimilarityChanged (double, int) override; + +public slots: + void slotFontFamilyChanged (const QString &fontFamily, const QString &oldFontFamily); + void slotFontSizeChanged (int fontSize, int oldFontSize); + void slotBoldChanged (bool isBold); + void slotItalicChanged (bool isItalic); + void slotUnderlineChanged (bool isUnderline); + void slotStrikeThruChanged (bool isStrikeThru); + + +// +// Text Cursor Calculations (all static, no mutations) +// + +protected: + /** + * @param textLines One or more lines of text. + * @param cursorRow Current row of the cursor. + * @param cursorCol Current column of the cursor. + * + * @returns whether the cursor is currently on a word character + * (not a space). + */ + static bool CursorIsOnWordChar (const QList &textLines, + int cursorRow, int cursorCol); + + + /** + * @param textLines One or more lines of text. + * @param cursorRow Current row of the cursor. + * @param cursorCol Current column of the cursor. + * + * @returns whether the given cursor position is at the start of + * textLines (on the first character of the first line) + * i.e. when moveCursorLeft() won't do anything. + */ + static bool CursorIsAtStart (const QList &textLines, + int cursorRow, int cursorCol); + + /** + * @param textLines One or more lines of text. + * @param cursorRow Current row of the cursor. + * @param cursorCol Current column of the cursor. + * + * @returns whether the given cursor position is at the end of + * textLines (after the last character of the last line) + * i.e. when moveCursorRight() won't do anything. + */ + static bool CursorIsAtEnd (const QList &textLines, + int cursorRow, int cursorCol); + + + /** + * Moves the given cursor position one character to the left, if + * this is possible (i.e. if not cursorIsAtStart()). This may move the + * cursor one line up. + * + * @param textLines One or more lines of text. + * @param cursorRow Value-result parameter, initially containing + * the current row of the cursor and modified on + * return to indicate the new row. + * @param cursorCol Value-result parameter, initially containing + * the current column of the cursor and modified on + * return to indicate the new column. + */ + static void MoveCursorLeft (const QList &textLines, + int *cursorRow, int *cursorCol); + + /** + * Moves the given cursor position one character to the right, if + * this is possible (i.e. if not cursorIsAtEnd()). This may move the + * cursor one line down. + * + * @param textLines One or more lines of text. + * @param cursorRow Value-result parameter, initially containing + * the current row of the cursor and modified on + * return to indicate the new row. + * @param cursorCol Value-result parameter, initially containing + * the current column of the cursor and modified on + * return to indicate the new column. + */ + static void MoveCursorRight (const QList &textLines, + int *cursorRow, int *cursorCol); + + + /** + * Moves the row and column values, representing the current cursor + * location, to the start of the current word. If the cursor is + * on a space, it will move to the start of the previous word. + * + * This is normally used for a CTRL+Left or CTRL+Backspace behaviour. + * + * @param textLines One or more lines of text. + * @param cursorRow Value-result parameter, initially containing + * the current row of the cursor and modified on + * return to indicate the new row. + * @param cursorCol Value-result parameter, initially containing + * the current column of the cursor and modified on + * return to indicate the new column. + * + * @returns the number of times, it attempted to move left. + * Note: Attempting to moving left when cursorIsAtStart() + * may still be counted as a move. + */ + static int MoveCursorToWordStart (const QList &textLines, + int *cursorRow, int *cursorCol); + + /** + * Moves the row and column values, representing the current cursor + * location, to the start of the next word. This is regardless of + * whether the cursor starts on a space or not. + * + * This is normally used for a CTRL+Right or CTRL+Delete behaviour. + * + * @param textLines One or more lines of text. + * @param cursorRow Value-result parameter, initially containing + * the current row of the cursor and modified on + * return to indicate the new row. + * @param cursorCol Value-result parameter, initially containing + * the current column of the cursor and modified on + * return to indicate the new column. + * + * @returns the number of times, it attempted to move right. + * Note: Attempting to moving right when cursorIsAtEnd() + * may still be counted as a move. + */ + static int MoveCursorToNextWordStart (const QList &textLines, + int *cursorRow, int *cursorCol); + + +// +// Keyboard Events - Handling Arrow Keys +// +// These methods always: +// +// 1. Before doing anything, end the current shape (e.g. a text editing command or +// selection move command). This is done for 2 reasons: +// +// a) The user has interrupted the current command e.g. if I were to +// type some text, press an arrow key and then type text again, the two +// periods of text typing should be separate commands due to the arrow +// key interruption. +// +// b) To simplify the code by avoiding interference with the current command +// esp. since commands do not expect the cursor to move in the middle. +// +// 2. Accept the event as it is always intended for the method. This is even +// if the operation could not complete e.g. an attempt to move the cursor +// left when it is already at column 0. +// +protected: + /** + * Moves the text cursor up one character. Accepts the key event @p e. + * + * If there was an active text editing or selection command, it ends it first. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleUpKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + /** + * Moves the text cursor down one character. Accepts the key event @p e. + * + * If there was an active text editing or selection command, it ends it first. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleDownKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + /** + * Moves the text cursor left one character or if CTRL is held, one + * word. Accepts the key event @p e. + * + * If there was an active text editing or selection command, it ends it first. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleLeftKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + /** + * Moves the text cursor right one character or if CTRL is held, one + * word. Accepts the key event @p e. + * + * If there was an active text editing or selection command, it ends it first. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleRightKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + + /** + * Moves the text cursor to the start of the line and if CTRL is held, + * to the first line. Accepts the key event @p e. + * + * If there was an active text editing or selection command, it ends it first. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleHomeKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + /** + * Moves the text cursor to after the last character of the current + * text line or if CTRL is held, after the last character of the last + * line. Accepts the key event @p e. + * + * If there was an active text editing or selection command, it ends it first. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleEndKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + +// +// Keyboard Events - Handling Typing Keys +// +// For each method, if the respective event was actually intended for the +// method: +// +// 1. If the event will not be a NOP: +// +// If the current command is not the same as what this method would produce, +// it starts a new one, ending the current one (using the addNew*Command() +// methods). If the current command is the same, it simply extends the +// current command e.g. if the current command was a kpToolTextInsertCommand +// and the user typed another character of text, that character would just be +// added to that command. +// +// 2. Accept the event. This is even if the operation could not complete e.g. +// an attempt backspace when the cursor is at column 0. +// +// If the event was not intended for the method (e.g. pressing CTRL, Caps Lock +// or any other key that does not produce text, in handleTextTyped()), nothing +// happens. +// +protected: + /** + * Backspaces and if the active text editing command is not + * d->backspaceCommand, it calls addNewBackspaceCommand() on + * d->backspaceCommand first. + * + * If CTRL is held, it backspaces to the start of the active word + * and if the current text editing command was not + * d->backspaceWordCommand, it calls addNewBackspaceCommand() on + * d->backspaceWordCommand first. + * + * In this way, Backspace and CTRL+Backspace are separate entries + * in the commandHistory(). + * + * Accepts the key event @p e. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleBackspaceKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + /** + * Deletes and if the active text editing command is not + * d->deleteCommand, it calls addNewDeleteCommand() on + * d->deleteCommand first. + * + * If CTRL is held, it deletes to the start of the next word + * and if the active text editing command was not + * d->deleteWordCommand, it calls addNewDeleteCommand() on + * d->deleteWordCommand first. + * + * In this way, Delete and CTRL+Delete are separate entries + * in the commandHistory(). + * + * Accepts the key event @p e. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleDeleteKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + + /** + * Enters and if the active text editing command is not + * d->enterCommand, it ends the command, constructs d->enterCommand adding + * it to commandHistory(), first. + * + * Accepts the key event @p e. + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleEnterKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + + /** + * Inserts the printable characters of e->text() and accepts the key + * event @p e. If the active text editing command is not + * d->insertCommand, it ends the command, constructs d->insertCommand + * adding it to commandHistory(), first. + * + * If e->text() does not contain any printable characters, it does not + * do anything. As a result, it would not accept the key event @e. + * This printability restriction prevents control characters from being + * typed when they should be trapped by a keyPressEvent() that is lower + * in the call chain (for e.g. CTRL+Z for Undo). + * + * @param e Mutable key event information. + * @param textLines One or more lines of text (convenience parameter). + * @param cursorRow Current row of the cursor (convenience parameter). + * @param cursorCol Current column of the cursor (convenience parameter). + * + * Called by keyPressEvent(). + */ + void handleTextTyped (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol); + + +// +// Keyboard Events +// + +protected: + // Prevents actions with single letter/number shortcuts from eating + // keystrokes while a text selection is active. This is important + // because the Tool Box actions default to single letter/number + // shortcuts. + bool viewEvent (QEvent *e) override; + + /** + * Handles key press events. + * + * If the user is currently drawing/resizing something or if the + * document doesn't have a text selection, it passes control to the + * otherwise overridden kpAbstractSelectionTool::keyPressEvent(). + * + * Else, for a recognised key it calls handle.*Press(). If a + * recognised key was not pressed, it assumes that one or more text + * characters was typed, and calls handleTextTyped(). If none of the + * handle.*() methods call e->accept(), it passes control to the + * otherwise overridden kpAbstractSelectionTool::keyPressEvent(). + * + * @param e Mutable key event information. + * + * Re-implemented from kpAbstractSelectionTool. + */ + + void keyPressEvent (QKeyEvent *e) override; + + +// +// Input Method Text Entry +// + +protected: + void inputMethodEvent (QInputMethodEvent *e) override; + + +private: + struct kpToolTextPrivate * const d; +}; + + +#endif // KP_TOOL_TEXT_H diff --git a/tools/selection/text/kpToolTextPrivate.h b/tools/selection/text/kpToolTextPrivate.h new file mode 100644 index 0000000..4a74e25 --- /dev/null +++ b/tools/selection/text/kpToolTextPrivate.h @@ -0,0 +1,51 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpToolTextPrivate_H +#define kpToolTextPrivate_H + + +#include + + +class kpToolTextInsertCommand; +class kpToolTextEnterCommand; +class kpToolTextBackspaceCommand; +class kpToolTextDeleteCommand; + + +struct kpToolTextPrivate +{ + kpToolTextInsertCommand *insertCommand; + kpToolTextEnterCommand *enterCommand; + kpToolTextBackspaceCommand *backspaceCommand, *backspaceWordCommand; + kpToolTextDeleteCommand *deleteCommand, *deleteWordCommand; +}; + + +#endif // kpToolTextPrivate_H diff --git a/tools/selection/text/kpToolText_Commands.cpp b/tools/selection/text/kpToolText_Commands.cpp new file mode 100644 index 0000000..55bac2d --- /dev/null +++ b/tools/selection/text/kpToolText_Commands.cpp @@ -0,0 +1,125 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "kpToolText.h" +#include "kpToolTextPrivate.h" +#include "kpLogCategories.h" + +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/text/kpToolTextBackspaceCommand.h" +#include "commands/tools/selection/text/kpToolTextDeleteCommand.h" +#include "commands/tools/selection/text/kpToolTextEnterCommand.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" +#include "views/manager/kpViewManager.h" + +#include + +// private +void kpToolText::endTypingCommands () +{ + d->insertCommand = nullptr; + d->enterCommand = nullptr; + + d->backspaceCommand = nullptr; + d->backspaceWordCommand = nullptr; + + d->deleteCommand = nullptr; + d->deleteWordCommand = nullptr; +} + + +// private +void kpToolText::addNewBackspaceCommand (kpToolTextBackspaceCommand **cmd) +{ + // TODO: why not endShapeInternal(); ditto for everywhere else in kpToolText*.cpp? + if (hasBegunShape ()) + { + endShape (currentPoint (), normalizedRect ()); + } + + giveContentIfNeeded (); + + *cmd = new kpToolTextBackspaceCommand (i18n ("Text: Backspace"), + viewManager ()->textCursorRow (), viewManager ()->textCursorCol (), + kpToolTextBackspaceCommand::DontAddBackspaceYet, + environ ()->commandEnvironment ()); + addNeedingContentCommand (*cmd); +} + +// private +void kpToolText::addNewDeleteCommand (kpToolTextDeleteCommand **cmd) +{ + if (hasBegunShape ()) + { + endShape (currentPoint (), normalizedRect ()); + } + + giveContentIfNeeded (); + + *cmd = new kpToolTextDeleteCommand (i18n ("Text: Delete"), + viewManager ()->textCursorRow (), viewManager ()->textCursorCol (), + kpToolTextDeleteCommand::DontAddDeleteYet, + environ ()->commandEnvironment ()); + addNeedingContentCommand (*cmd); +} + +// private +void kpToolText::addNewEnterCommand (kpToolTextEnterCommand **cmd) +{ + if (hasBegunShape ()) + { + endShape (currentPoint (), normalizedRect ()); + } + + giveContentIfNeeded (); + + *cmd = new kpToolTextEnterCommand (i18n ("Text: New Line"), + viewManager ()->textCursorRow (), viewManager ()->textCursorCol (), + kpToolTextEnterCommand::DontAddEnterYet, + environ ()->commandEnvironment ()); + addNeedingContentCommand (*cmd); +} + +// private +void kpToolText::addNewInsertCommand (kpToolTextInsertCommand **cmd) +{ + if (hasBegunShape ()) + { + endShape (currentPoint (), normalizedRect ()); + } + + giveContentIfNeeded (); + + *cmd = new kpToolTextInsertCommand (i18n ("Text: Write"), + viewManager ()->textCursorRow (), viewManager ()->textCursorCol (), + QString (), + environ ()->commandEnvironment ()); + addNeedingContentCommand (*cmd); +} diff --git a/tools/selection/text/kpToolText_Create.cpp b/tools/selection/text/kpToolText_Create.cpp new file mode 100644 index 0000000..0e2feb7 --- /dev/null +++ b/tools/selection/text/kpToolText_Create.cpp @@ -0,0 +1,293 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" + +#include + +#include +#include "kpLogCategories.h" + +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "views/manager/kpViewManager.h" + + +// protected virtual [kpAbstractSelectionTool] +QString kpToolText::haventBegunDrawUserMessageCreate () const +{ + return i18n ("Left drag to create text box."); +} + + +// protected virtual [base kpAbstractSelectionTool] +void kpToolText::setSelectionBorderForBeginDrawCreate () +{ + viewManager ()->setQueueUpdates (); + { + kpAbstractSelectionTool::setSelectionBorderForBeginDrawCreate (); + viewManager ()->setTextCursorEnabled (false); + } + viewManager ()->restoreQueueUpdates (); +} + + +// private +int kpToolText::calcClickCreateDimension (int mouseStart, int mouseEnd, + int preferredMin, int smallestMin, + int docSize) +{ + Q_ASSERT (preferredMin >= smallestMin); + Q_ASSERT (docSize > 0); + + // Get reasonable width/height for a text box. + int ret = preferredMin; + + // X or Y increasing? + if (mouseEnd >= mouseStart) + { + // Text box extends past document width/height? + if (mouseStart + ret - 1 >= docSize) + { + // Cap width/height to not extend past but not below smallest + // possible selection width/height + ret = qMax (smallestMin, docSize - mouseStart); + } + } + // X or Y decreasing + else + { + // Text box extends past document start? + // TODO: I doubt this code can be invoked for a click. + // Maybe very tricky interplay with accidental drag detection? + if (mouseStart - ret + 1 < 0) + { + // Cap width/height to not extend past but not below smallest + // possible selection width/height. + ret = qMax (smallestMin, mouseStart + 1); + } + } + + return ret; +} + +// private +bool kpToolText::shouldCreate (bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const kpTextStyle &textStyle, + int *minimumWidthOut, int *minimumHeightOut, + bool *newDragAccepted) +{ +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogTools) << "CALL(dragAccepted=" << dragAccepted + << ",accidentalDragAdjustedPoint=" << accidentalDragAdjustedPoint + << ")"; +#endif + *newDragAccepted = dragAccepted; + + // Is the drag so short that we're essentially just clicking? + // Basically, we're trying to prevent unintentional creation of 1-pixel + // selections. + if (!dragAccepted && accidentalDragAdjustedPoint == startPoint ()) + { + // We had an existing text box before the click? + if (hadSelectionBeforeDraw ()) + { + #if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogTools) << "\ttext box deselect - NOP - return"; + #endif + // We must be attempting to deselect the text box. + // This deselection has already been done by kpAbstractSelectionTool::beginDraw(). + // Therefore, we are not doing a drag. + return false; + } + // We are probably creating a new box. + + + // This drag is currently a click -- not a drag. + // As a special case, allow user to create a text box, + // of reasonable ("preferred minimum") size, using a single + // click. + // + // If the user drags further, the normal drag-to-create-a-textbox + // branch [x] will execute and the size will be determined based on + // the size of the drag instead. + +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogTools) << "\tclick creating text box"; +#endif + + // (Click creating text box with RMB would not be obvious + // since RMB menu most likely hides text box immediately + // afterwards) + // TODO: I suspect this logic is simply too late + // TODO: We setUserShapePoints() on return but didn't before. + if (mouseButton () == 1) { + return false/*do not create text box*/; + } + + + // Calculate suggested width. + *minimumWidthOut = calcClickCreateDimension ( + startPoint ().x (), + accidentalDragAdjustedPoint.x (), + kpTextSelection::PreferredMinimumWidthForTextStyle (textStyle), + kpTextSelection::MinimumWidthForTextStyle (textStyle), + document ()->width ()); + + // Calculate suggested height. + *minimumHeightOut = calcClickCreateDimension ( + startPoint ().y (), + accidentalDragAdjustedPoint.y (), + kpTextSelection::PreferredMinimumHeightForTextStyle (textStyle), + kpTextSelection::MinimumHeightForTextStyle (textStyle), + document ()->height ()); + + + // Do _not_ set "newDragAccepted" to true as we want + // this text box to remain at the click-given size, in the absence + // of any dragging. In other words, if draw() is called again + // and therefore, we are called again, but the mouse has not + // moved, we do want this branch to execute again, not + // Branch [x]. + return true/*do create text box*/; + } + // Dragging to create a text box [x]. + // + // The size will be determined based on the size of the drag. + + +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogTools) << "\tdrag creating text box"; +#endif + *minimumWidthOut = kpTextSelection::MinimumWidthForTextStyle (textStyle); + *minimumHeightOut = kpTextSelection::MinimumHeightForTextStyle (textStyle); + + *newDragAccepted = true; + return true/*do create text box*/; +} + +// protected virtual [kpAbstractSelectionTool] +bool kpToolText::drawCreateMoreSelectionAndUpdateStatusBar ( + bool dragAccepted, + const QPoint &accidentalDragAdjustedPoint, + const QRect &normalizedRectIn) +{ + // (will mutate this) + QRect normalizedRect = normalizedRectIn; + + const kpTextStyle textStyle = environ ()->textStyle (); + + + // + // Calculate Text Box Rectangle. + // + + bool newDragAccepted = dragAccepted; + + // (will set both variables) + int minimumWidth = 0, minimumHeight = 0; + if (!shouldCreate (dragAccepted, accidentalDragAdjustedPoint, textStyle, + &minimumWidth, &minimumHeight, &newDragAccepted)) + { + setUserShapePoints (accidentalDragAdjustedPoint); + return newDragAccepted; + } + + + // Make sure the dragged out rectangle is of the minimum width we just + // calculated. + if (normalizedRect.width () < minimumWidth) + { + if (accidentalDragAdjustedPoint.x () >= startPoint ().x ()) { + normalizedRect.setWidth (minimumWidth); + } + else { + normalizedRect.setX (normalizedRect.right () - minimumWidth + 1); + } + } + + // Make sure the dragged out rectangle is of the minimum height we just + // calculated. + if (normalizedRect.height () < minimumHeight) + { + if (accidentalDragAdjustedPoint.y () >= startPoint ().y ()) { + normalizedRect.setHeight (minimumHeight); + } + else { + normalizedRect.setY (normalizedRect.bottom () - minimumHeight + 1); + } + } + +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogTools) << "\t\tnormalizedRect=" << normalizedRect + << " kpTextSelection::preferredMinimumSize=" + << QSize (minimumWidth, minimumHeight); +#endif + + + // + // Construct and Deploy Text Box. + // + + // Create empty text box. + QList textLines; + kpTextSelection textSel (normalizedRect, textLines, textStyle); + + // Render. + viewManager ()->setTextCursorPosition (0, 0); + document ()->setSelection (textSel); + + + // + // Update Status Bar. + // + + QPoint actualEndPoint = KP_INVALID_POINT; + if (startPoint () == normalizedRect.topLeft ()) { + actualEndPoint = normalizedRect.bottomRight (); + } + else if (startPoint () == normalizedRect.bottomRight ()) { + actualEndPoint = normalizedRect.topLeft (); + } + else if (startPoint () == normalizedRect.topRight ()) { + actualEndPoint = normalizedRect.bottomLeft (); + } + else if (startPoint () == normalizedRect.bottomLeft ()) { + actualEndPoint = normalizedRect.topRight (); + } + + setUserShapePoints (startPoint (), actualEndPoint); + + return newDragAccepted; +} + diff --git a/tools/selection/text/kpToolText_CursorCalc.cpp b/tools/selection/text/kpToolText_CursorCalc.cpp new file mode 100644 index 0000000..2860bcd --- /dev/null +++ b/tools/selection/text/kpToolText_CursorCalc.cpp @@ -0,0 +1,220 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpLogCategories.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/tools/selection/text/kpToolTextBackspaceCommand.h" +#include "commands/tools/selection/text/kpToolTextChangeStyleCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/text/kpToolTextDeleteCommand.h" +#include "commands/tools/selection/text/kpToolTextEnterCommand.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include + +#include + +// protected static +bool kpToolText::CursorIsOnWordChar (const QList &textLines, + int cursorRow, int cursorCol) +{ + return (cursorRow >= 0 && cursorRow < textLines.size () && + cursorCol >= 0 && cursorCol < textLines [cursorRow].length () && + !textLines [cursorRow][cursorCol].isSpace ()); +} + + +// protected static +bool kpToolText::CursorIsAtStart (const QList &, + int cursorRow, int cursorCol) +{ + return (cursorRow == 0 && cursorCol == 0); +} + +// protected static +bool kpToolText::CursorIsAtEnd (const QList &textLines, + int cursorRow, int cursorCol) +{ + if (textLines.isEmpty ()) { + return (cursorRow == 0 && cursorCol == 0); + } + + return (cursorRow == textLines.size () - 1 && + cursorCol == textLines [cursorRow].length ()); +} + + +// protected static +void kpToolText::MoveCursorLeft (const QList &textLines, + int *cursorRow, int *cursorCol) +{ + if (textLines.isEmpty ()) { + return; + } + + (*cursorCol)--; + + if (*cursorCol < 0) + { + (*cursorRow)--; + if (*cursorRow < 0) + { + *cursorRow = 0; + *cursorCol = 0; + } + else { + *cursorCol = textLines [*cursorRow].length (); + } + } +} + +// protected static +void kpToolText::MoveCursorRight (const QList &textLines, + int *cursorRow, int *cursorCol) +{ + if (textLines.isEmpty ()) { + return; + } + + (*cursorCol)++; + + if (*cursorCol > textLines [*cursorRow].length ()) + { + (*cursorRow)++; + if (*cursorRow > textLines.size () - 1) + { + *cursorRow = textLines.size () - 1; + *cursorCol = textLines [*cursorRow].length (); + } + else { + *cursorCol = 0; + } + } +} + + +#define IS_ON_SPACE_OR_EOL() !CursorIsOnWordChar (textLines, *cursorRow, *cursorCol) + +// protected static +int kpToolText::MoveCursorToWordStart (const QList &textLines, + int *cursorRow, int *cursorCol) +{ + if (textLines.isEmpty ()) { + return 0; + } + + int numMoves = 0; + +#define IS_ON_ANCHOR() \ + (CursorIsOnWordChar (textLines, *cursorRow, *cursorCol) && \ + (cursorCol == nullptr || \ + !CursorIsOnWordChar (textLines, *cursorRow, *cursorCol - 1))) +#define MOVE_CURSOR_LEFT() \ + (MoveCursorLeft (textLines, cursorRow, cursorCol), ++numMoves) + + + // (these comments will exclude the row=0,col=0 boundary case) + + if (IS_ON_ANCHOR ()) { + MOVE_CURSOR_LEFT (); + } + + // --- now we're not on an anchor point (start of word) --- + + // End up on a letter... + while (!(*cursorRow == 0 && *cursorCol == 0) && + (IS_ON_SPACE_OR_EOL ())) + { + MOVE_CURSOR_LEFT (); + } + + // --- now we're on a letter --- + + // Find anchor point + while (!(*cursorRow == 0 && *cursorCol == 0) && !IS_ON_ANCHOR ()) + { + MOVE_CURSOR_LEFT (); + } + + +#undef IS_ON_ANCHOR +#undef MOVE_CURSOR_LEFT + + return numMoves; +} + +// protected static +int kpToolText::MoveCursorToNextWordStart (const QList &textLines, + int *cursorRow, int *cursorCol) +{ + if (textLines.isEmpty ()) { + return 0; + } + + int numMoves = 0; + +#define IS_AT_END() CursorIsAtEnd (textLines, *cursorRow, *cursorCol) +#define MOVE_CURSOR_RIGHT() \ + (MoveCursorRight (textLines, cursorRow, cursorCol), ++numMoves) + + + // (these comments will exclude the last row,end col boundary case) + + // Find space + while (!IS_AT_END () && !IS_ON_SPACE_OR_EOL ()) + { + MOVE_CURSOR_RIGHT (); + } + + // --- now we're on a space --- + + // Find letter + while (!IS_AT_END () && IS_ON_SPACE_OR_EOL ()) + { + MOVE_CURSOR_RIGHT (); + } + + // --- now we're on a letter --- + + +#undef IS_AT_END +#undef MOVE_CURSOR_RIGHT + + return numMoves; +} + +#undef IS_ON_SPACE_OR_EOL + diff --git a/tools/selection/text/kpToolText_InputMethodEvents.cpp b/tools/selection/text/kpToolText_InputMethodEvents.cpp new file mode 100644 index 0000000..878d2d1 --- /dev/null +++ b/tools/selection/text/kpToolText_InputMethodEvents.cpp @@ -0,0 +1,96 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2005 Kazuki Ohta + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" + +#include + +#include "kpLogCategories.h" + +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +//--------------------------------------------------------------------- + +void kpToolText::inputMethodEvent (QInputMethodEvent *e) +{ +#if DEBUG_KP_TOOL_TEXT && 1 + qCDebug(kpLogTools) << "kpToolText::inputMethodEvent() preeditString='" << e->preeditString () + << "commitString = " << e->commitString () + << " replacementStart=" << e->replacementStart () + << " replacementLength=" << e->replacementLength (); +#endif + kpTextSelection *textSel = document ()->textSelection (); + if (hasBegunDraw() || !textSel) + { + e->ignore(); + return; + } + + kpPreeditText previous = textSel->preeditText (); + kpPreeditText next (e); + + int textCursorRow = viewManager ()->textCursorRow (); + int textCursorCol = viewManager ()->textCursorCol (); + if (!next.isEmpty ()) + { + if (previous.position().x () < 0 && previous.position().y () < 0) + { + next.setPosition (QPoint(textCursorCol, textCursorRow)); + } + else + { + next.setPosition(previous.position ()); + } + } + textSel->setPreeditText (next); + textCursorCol = textCursorCol - previous.cursorPosition () + next.cursorPosition (); + viewManager ()->setTextCursorPosition (textCursorRow, textCursorCol); + + QString commitString = e->commitString (); + if (!commitString.isEmpty ()) + { + // commit string + if (!d->insertCommand) { + addNewInsertCommand (&d->insertCommand); + } + + d->insertCommand->addText (commitString); + } + e->accept (); +} + +//--------------------------------------------------------------------- diff --git a/tools/selection/text/kpToolText_KeyboardEvents.cpp b/tools/selection/text/kpToolText_KeyboardEvents.cpp new file mode 100644 index 0000000..7b80cda --- /dev/null +++ b/tools/selection/text/kpToolText_KeyboardEvents.cpp @@ -0,0 +1,212 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" + +#include +#include + +#include "kpLogCategories.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/tools/selection/text/kpToolTextBackspaceCommand.h" +#include "commands/tools/selection/text/kpToolTextChangeStyleCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/text/kpToolTextDeleteCommand.h" +#include "commands/tools/selection/text/kpToolTextEnterCommand.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include + +// protected virtual [base kpTool] +bool kpToolText::viewEvent (QEvent *e) +{ + const bool isShortcutOverrideEvent = + (e->type () == QEvent::ShortcutOverride); + const bool haveTextSelection = document ()->textSelection (); + +#if DEBUG_KP_TOOL_TEXT && 0 + qCDebug(kpLogTools) << "kpToolText::viewEvent() type=" << e->type () + << " isShortcutOverrideEvent=" << isShortcutOverrideEvent + << " haveTextSel=" << haveTextSelection; +#endif + + if (!isShortcutOverrideEvent || !haveTextSelection) { + return kpAbstractSelectionTool::viewEvent (e); + } + + auto *ke = dynamic_cast (e); +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::viewEvent() key=" << ke->key () + << " modifiers=" << ke->modifiers () + << " QChar.isPrint()=" << QChar (ke->key ()).isPrint (); +#endif + + // Can't be shortcut? + if (ke->key () == 0 && ke->key () == Qt::Key_unknown) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tcan't be shortcut - safe to not react"; + #endif + } + // Normal letter (w/ or w/o shift, keypad button ok)? + // TODO: don't like this check + else if ((ke->modifiers () & + (Qt::ControlModifier | Qt::AltModifier | Qt::MetaModifier)) == 0 && + !( ke->text ().isEmpty ())) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tis text - grab"; + #endif + e->accept (); + } + else + { + // Strictly speaking, we should grab stuff like the arrow keys + // and enter. In any case, should be done down in kpTool (as that + // uses arrow keys too). + } + + return kpAbstractSelectionTool::event (e); +} + + +// protected virtual [base kpAbstractSelectionTool] +void kpToolText::keyPressEvent (QKeyEvent *e) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::keyPressEvent(e->text='" << e->text () << "')"; +#endif + + + e->ignore (); + + + if (hasBegunDraw ()) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\talready began draw with mouse - passing on event to kpTool"; + #endif + kpAbstractSelectionTool::keyPressEvent (e); + return; + } + + + kpTextSelection * const textSel = document ()->textSelection (); + + if (!textSel) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tno text sel - passing on event to kpTool"; + #endif + //if (hasBegunShape ()) + // endShape (currentPoint (), normalizedRect ()); + + kpAbstractSelectionTool::keyPressEvent (e); + return; + } + + + // (All handle.+()'s require this info) + const QList textLines = textSel->textLines (); + const int cursorRow = viewManager ()->textCursorRow (); + const int cursorCol = viewManager ()->textCursorCol (); + + + // TODO: KTextEdit::keyPressEvent() uses KStandardShortcut instead of hardcoding; same fix for kpTool? + switch (e->key ()) + { + case Qt::Key_Up: + handleUpKeyPress (e, textLines, cursorRow, cursorCol); + break; + + case Qt::Key_Down: + handleDownKeyPress (e, textLines, cursorRow, cursorCol); + break; + + case Qt::Key_Left: + handleLeftKeyPress (e, textLines, cursorRow, cursorCol); + break; + + case Qt::Key_Right: + handleRightKeyPress (e, textLines, cursorRow, cursorCol); + break; + + + case Qt::Key_Home: + handleHomeKeyPress (e, textLines, cursorRow, cursorCol); + break; + + case Qt::Key_End: + handleEndKeyPress (e, textLines, cursorRow, cursorCol); + break; + + + case Qt::Key_Backspace: + handleBackspaceKeyPress (e, textLines, cursorRow, cursorCol); + break; + + case Qt::Key_Delete: + handleDeleteKeyPress (e, textLines, cursorRow, cursorCol); + break; + + + case Qt::Key_Enter: + case Qt::Key_Return: + handleEnterKeyPress (e, textLines, cursorRow, cursorCol); + break; + + + default: + handleTextTyped (e, textLines, cursorRow, cursorCol); + break; + } + + + if (!e->isAccepted ()) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tkey processing did not accept (text was '" + << e->text () + << "') - passing on event to kpAbstractSelectionTool"; + #endif + //if (hasBegunShape ()) + // endShape (currentPoint (), normalizedRect ()); + + kpAbstractSelectionTool::keyPressEvent (e); + return; + } +} diff --git a/tools/selection/text/kpToolText_KeyboardEvents_HandleArrowKeys.cpp b/tools/selection/text/kpToolText_KeyboardEvents_HandleArrowKeys.cpp new file mode 100644 index 0000000..2eaefeb --- /dev/null +++ b/tools/selection/text/kpToolText_KeyboardEvents_HandleArrowKeys.cpp @@ -0,0 +1,221 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" + +#include +#include + +#include "kpLogCategories.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/tools/selection/text/kpToolTextBackspaceCommand.h" +#include "commands/tools/selection/text/kpToolTextChangeStyleCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/text/kpToolTextDeleteCommand.h" +#include "commands/tools/selection/text/kpToolTextEnterCommand.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +// protected +void kpToolText::handleUpKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tup pressed"; +#endif + + if (hasBegunShape ()) { + endShape (currentPoint (), normalizedRect ()); + } + + if (!textLines.isEmpty () && cursorRow > 0) + { + cursorRow--; + cursorCol = qMin (cursorCol, textLines [cursorRow].length ()); + viewManager ()->setTextCursorPosition (cursorRow, cursorCol); + } + + e->accept (); +} + +// protected +void kpToolText::handleDownKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tdown pressed"; +#endif + + if (hasBegunShape ()) { + endShape (currentPoint (), normalizedRect ()); + } + + if (!textLines.isEmpty () && cursorRow < textLines.size () - 1) + { + cursorRow++; + cursorCol = qMin (cursorCol, textLines [cursorRow].length ()); + viewManager ()->setTextCursorPosition (cursorRow, cursorCol); + } + + e->accept (); +} + +// protected +void kpToolText::handleLeftKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tleft pressed"; +#endif + + if (hasBegunShape ()) { + endShape (currentPoint (), normalizedRect ()); + } + + if (!textLines.isEmpty ()) + { + if ((e->modifiers () & Qt::ControlModifier) == 0) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tmove single char"; + #endif + + MoveCursorLeft (textLines, &cursorRow, &cursorCol); + viewManager ()->setTextCursorPosition (cursorRow, cursorCol); + } + else + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tmove to start of word"; + #endif + + MoveCursorToWordStart (textLines, &cursorRow, &cursorCol); + viewManager ()->setTextCursorPosition (cursorRow, cursorCol); + } + } + + e->accept (); +} + +// protected +void kpToolText::handleRightKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tright pressed"; +#endif + + if (hasBegunShape ()) { + endShape (currentPoint (), normalizedRect ()); + } + + if (!textLines.isEmpty ()) + { + if ((e->modifiers () & Qt::ControlModifier) == 0) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tmove single char"; + #endif + + MoveCursorRight (textLines, &cursorRow, &cursorCol); + viewManager ()->setTextCursorPosition (cursorRow, cursorCol); + } + else + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tmove to start of next word"; + #endif + + MoveCursorToNextWordStart (textLines, &cursorRow, &cursorCol); + viewManager ()->setTextCursorPosition (cursorRow, cursorCol); + } + } + + e->accept (); +} + + +// protected +void kpToolText::handleHomeKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\thome pressed"; +#endif + + if (hasBegunShape ()) { + endShape (currentPoint (), normalizedRect ()); + } + + if (!textLines.isEmpty ()) + { + if (e->modifiers () & Qt::ControlModifier) { + cursorRow = 0; + } + + cursorCol = 0; + + viewManager ()->setTextCursorPosition (cursorRow, cursorCol); + } + + e->accept (); +} + +// protected +void kpToolText::handleEndKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tend pressed"; +#endif + + if (hasBegunShape ()) { + endShape (currentPoint (), normalizedRect ()); + } + + if (!textLines.isEmpty ()) + { + if (e->modifiers () & Qt::ControlModifier) { + cursorRow = textLines.size () - 1; + } + + cursorCol = textLines [cursorRow].length (); + + viewManager ()->setTextCursorPosition (cursorRow, cursorCol); + } + + e->accept (); +} diff --git a/tools/selection/text/kpToolText_KeyboardEvents_HandleTypingKeys.cpp b/tools/selection/text/kpToolText_KeyboardEvents_HandleTypingKeys.cpp new file mode 100644 index 0000000..6bcba13 --- /dev/null +++ b/tools/selection/text/kpToolText_KeyboardEvents_HandleTypingKeys.cpp @@ -0,0 +1,201 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" +#include "kpLogCategories.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/tools/selection/text/kpToolTextBackspaceCommand.h" +#include "commands/tools/selection/text/kpToolTextChangeStyleCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/text/kpToolTextDeleteCommand.h" +#include "commands/tools/selection/text/kpToolTextEnterCommand.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include + +//--------------------------------------------------------------------- + +// protected +void kpToolText::handleBackspaceKeyPress (QKeyEvent *e, + const QList &textLines, int cursorRow, int cursorCol) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tbackspace pressed"; +#endif + + if (!textLines.isEmpty ()) + { + if ((e->modifiers () & Qt::ControlModifier) == 0) + { + if (!d->backspaceCommand) { + addNewBackspaceCommand (&d->backspaceCommand); + } + + d->backspaceCommand->addBackspace (); + } + else + { + if (!d->backspaceWordCommand) { + addNewBackspaceCommand (&d->backspaceWordCommand); + } + + const int numMoves = MoveCursorToWordStart (textLines, + &cursorRow, &cursorCol); + + viewManager ()->setQueueUpdates (); + { + for (int i = 0; i < numMoves; i++) { + d->backspaceWordCommand->addBackspace (); + } + } + viewManager ()->restoreQueueUpdates (); + + Q_ASSERT (cursorRow == viewManager ()->textCursorRow ()); + Q_ASSERT (cursorCol == viewManager ()->textCursorCol ()); + } + } + + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected +void kpToolText::handleDeleteKeyPress (QKeyEvent *e, + const QList & textLines, int cursorRow, int cursorCol) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tdelete pressed"; +#endif + + if (!textLines.isEmpty ()) + { + if ((e->modifiers () & Qt::ControlModifier) == 0) + { + if (!d->deleteCommand) { + addNewDeleteCommand (&d->deleteCommand); + } + + d->deleteCommand->addDelete (); + } + else + { + if (!d->deleteWordCommand) { + addNewDeleteCommand (&d->deleteWordCommand); + } + + // We don't want to know the cursor pos of the next word start + // as delete should keep cursor in same pos. + int cursorRowThrowAway = cursorRow, + cursorColThrowAway = cursorCol; + const int numMoves = MoveCursorToNextWordStart (textLines, + &cursorRowThrowAway, &cursorColThrowAway); + + viewManager ()->setQueueUpdates (); + { + for (int i = 0; i < numMoves; i++) { + d->deleteWordCommand->addDelete (); + } + } + viewManager ()->restoreQueueUpdates (); + + // Assert unchanged as delete should keep cursor in same pos. + Q_ASSERT (cursorRow == viewManager ()->textCursorRow ()); + Q_ASSERT (cursorCol == viewManager ()->textCursorCol ()); + } + } + + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected +void kpToolText::handleEnterKeyPress (QKeyEvent *e, + const QList & /*textLines*/, int /*cursorRow*/, int /*cursorCol*/) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tenter pressed"; +#endif + + // It's OK for to be empty. + + if (!d->enterCommand) { + addNewEnterCommand (&d->enterCommand); + } + + d->enterCommand->addEnter (); + + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected +void kpToolText::handleTextTyped (QKeyEvent *e, + const QList & /*textLines*/, int /*cursorRow*/, int /*cursorCol*/) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\ttext=" << e->text(); +#endif + QString usableText; + for (int i = 0; i < e->text ().length (); i++) + { + if ( e->text().at(i).category() != QChar::Other_Control ) + usableText += e->text().at(i); + } +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tusableText=" << usableText; +#endif + + if (usableText.isEmpty ()) + { + // Don't end the current shape nor accept the event -- the event + // wasn't for us. + return; + } + + // --- It's OK for to be empty. --- + + if (!d->insertCommand) { + addNewInsertCommand (&d->insertCommand); + } + + d->insertCommand->addText (usableText); + + e->accept (); +} diff --git a/tools/selection/text/kpToolText_Move.cpp b/tools/selection/text/kpToolText_Move.cpp new file mode 100644 index 0000000..91f6149 --- /dev/null +++ b/tools/selection/text/kpToolText_Move.cpp @@ -0,0 +1,63 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" + +#include + +#include "views/manager/kpViewManager.h" + + +// protected virtual [kpAbstractSelectionTool] +QString kpToolText::haventBegunDrawUserMessageMove () const +{ + return i18n ("Left drag to move text box."); +} + + +// protected virtual [base kpAbstractSelectionTool] +void kpToolText::setSelectionBorderForBeginDrawMove () +{ + viewManager ()->setQueueUpdates (); + { + kpAbstractSelectionTool::setSelectionBorderForBeginDrawMove (); + viewManager ()->setTextCursorEnabled (false); + } + viewManager ()->restoreQueueUpdates (); +} + + +// protected virtual [kpAbstractSelectionTool] +QString kpToolText::nonSmearMoveCommandName () const +{ + return i18n ("Text: Move Box"); +} + diff --git a/tools/selection/text/kpToolText_ResizeScale.cpp b/tools/selection/text/kpToolText_ResizeScale.cpp new file mode 100644 index 0000000..fb32255 --- /dev/null +++ b/tools/selection/text/kpToolText_ResizeScale.cpp @@ -0,0 +1,55 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" + +#include + +#include "views/manager/kpViewManager.h" + + +// protected virtual [kpAbstractSelectionTool] +QString kpToolText::haventBegunDrawUserMessageResizeScale () const +{ + return i18n ("Left drag to resize text box."); +} + + +// protected virtual [base kpAbstractSelectionTool] +void kpToolText::setSelectionBorderForBeginDrawResizeScale () +{ + viewManager ()->setQueueUpdates (); + { + kpAbstractSelectionTool::setSelectionBorderForBeginDrawResizeScale (); + viewManager ()->setTextCursorEnabled (false); + } + viewManager ()->restoreQueueUpdates (); +} diff --git a/tools/selection/text/kpToolText_SelectText.cpp b/tools/selection/text/kpToolText_SelectText.cpp new file mode 100644 index 0000000..6a0f92d --- /dev/null +++ b/tools/selection/text/kpToolText_SelectText.cpp @@ -0,0 +1,137 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" + +#include "kpLogCategories.h" + +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + + +// private +bool kpToolText::onSelectionToSelectText () const +{ + kpView *v = viewManager ()->viewUnderCursor (); + if (!v) { + return false; + } + + return v->mouseOnSelectionToSelectText (currentViewPoint ()); +} + + +// private +QString kpToolText::haventBegunDrawUserMessageSelectText () const +{ + return i18n ("Left click to change cursor position."); +} + +// private +void kpToolText::setCursorSelectText () +{ + viewManager ()->setCursor (Qt::IBeamCursor); +} + + +// private +void kpToolText::beginDrawSelectText () +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\t\tis select cursor pos"; +#endif + kpTextSelection *textSel = document ()->textSelection (); + Q_ASSERT (textSel); + + int newRow, newCol; + + if (textSel->hasContent ()) + { + newRow = textSel->closestTextRowForPoint (currentPoint ()); + newCol = textSel->closestTextColForPoint (currentPoint ()); + } + else + { + newRow = newCol = 0; + } + +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\t\t\told: row=" << viewManager ()->textCursorRow () + << "col=" << viewManager ()->textCursorCol (); + qCDebug(kpLogTools) << "\t\t\tnew: row=" << newRow << "col=" << newCol; +#endif + viewManager ()->setTextCursorPosition (newRow, newCol); +} + + +// protected virtual +QVariant kpToolText::selectTextOperation (Operation op, + const QVariant &data1, const QVariant &data2) +{ + (void) data1; + (void) data2; + + + switch (op) + { + case HaventBegunDrawUserMessage: + return haventBegunDrawUserMessageSelectText (); + + case SetCursor: + setCursorSelectText (); + break; + + case BeginDraw: + beginDrawSelectText (); + break; + + case Draw: + // Do nothing. + break; + + case Cancel: + // Not called. REFACTOR: Change this? + break; + + case EndDraw: + // Do nothing. + break; + + default: + Q_ASSERT (!"Unhandled operation"); + break; + } + + + return {}; +} diff --git a/tools/selection/text/kpToolText_TextStyle.cpp b/tools/selection/text/kpToolText_TextStyle.cpp new file mode 100644 index 0000000..ef1fcae --- /dev/null +++ b/tools/selection/text/kpToolText_TextStyle.cpp @@ -0,0 +1,334 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_TEXT 0 + + +#include "tools/selection/text/kpToolText.h" +#include "kpToolTextPrivate.h" +#include "kpLogCategories.h" +#include "commands/kpCommandHistory.h" +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "commands/tools/selection/text/kpToolTextBackspaceCommand.h" +#include "commands/tools/selection/text/kpToolTextChangeStyleCommand.h" +#include "commands/tools/selection/text/kpToolTextGiveContentCommand.h" +#include "commands/tools/selection/kpToolSelectionCreateCommand.h" +#include "environments/tools/selection/kpToolSelectionEnvironment.h" +#include "commands/tools/selection/text/kpToolTextDeleteCommand.h" +#include "commands/tools/selection/text/kpToolTextEnterCommand.h" +#include "commands/tools/selection/text/kpToolTextInsertCommand.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "views/kpView.h" +#include "views/manager/kpViewManager.h" + +#include + +// protected +bool kpToolText::shouldChangeTextStyle () const +{ + if (environ ()->settingTextStyle ()) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\trecursion - abort setting text style: " + << environ ()->settingTextStyle (); + #endif + return false; + } + + if (!document ()->textSelection ()) + { + #if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "\tno text selection - abort setting text style"; + #endif + return false; + } + + return true; +} + +// protected +void kpToolText::changeTextStyle (const QString &name, + const kpTextStyle &newTextStyle, + const kpTextStyle &oldTextStyle) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::changeTextStyle(" << name << ")"; +#endif + + if (hasBegunShape ()) { + endShape (currentPoint (), normalizedRect ()); + } + + commandHistory ()->addCommand ( + new kpToolTextChangeStyleCommand ( + name, + newTextStyle, + oldTextStyle, + environ ()->commandEnvironment ())); +} + + +// protected slot virtual [base kpAbstractSelectionTool] +void kpToolText::slotIsOpaqueChanged (bool isOpaque) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotIsOpaqueChanged()"; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setBackgroundOpaque (!isOpaque); + + changeTextStyle (newTextStyle.isBackgroundOpaque () ? + i18n ("Text: Opaque Background") : + i18n ("Text: Transparent Background"), + newTextStyle, + oldTextStyle); +} + +// protected slot virtual [base kpTool] +void kpToolText::slotColorsSwapped (const kpColor &newForegroundColor, + const kpColor &newBackgroundColor) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotColorsSwapped()"; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setForegroundColor (newBackgroundColor); + oldTextStyle.setBackgroundColor (newForegroundColor); + + changeTextStyle (i18n ("Text: Swap Colors"), + newTextStyle, + oldTextStyle); +} + +// protected slot virtual [base kpTool] +void kpToolText::slotForegroundColorChanged (const kpColor & /*color*/) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotForegroundColorChanged()"; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setForegroundColor (oldForegroundColor ()); + + changeTextStyle (i18n ("Text: Foreground Color"), + newTextStyle, + oldTextStyle); +} + +// protected slot virtual [base kpAbstractSelectionTool] +void kpToolText::slotBackgroundColorChanged (const kpColor & /*color*/) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotBackgroundColorChanged()"; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setBackgroundColor (oldBackgroundColor ()); + + changeTextStyle (i18n ("Text: Background Color"), + newTextStyle, + oldTextStyle); +} + +// protected slot virtual [base kpAbstractSelectionTool] +void kpToolText::slotColorSimilarityChanged (double, int) +{ + // --- don't pass on event to kpAbstractSelectionTool which would have set the + // SelectionTransparency - not relevant to the Text Tool --- +} + + +// public slot +void kpToolText::slotFontFamilyChanged (const QString &fontFamily, + const QString &oldFontFamily) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotFontFamilyChanged() new=" + << fontFamily + << " old=" + << oldFontFamily; +#else + (void) fontFamily; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + // Figure out old text style. + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setFontFamily (oldFontFamily); + + changeTextStyle (i18n ("Text: Font"), + newTextStyle, + oldTextStyle); +} + +// public slot +void kpToolText::slotFontSizeChanged (int fontSize, int oldFontSize) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotFontSizeChanged() new=" + << fontSize + << " old=" + << oldFontSize; +#else + (void) fontSize; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + // Figure out old text style. + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setFontSize (oldFontSize); + + changeTextStyle (i18n ("Text: Font Size"), + newTextStyle, + oldTextStyle); +} + + +// public slot +void kpToolText::slotBoldChanged (bool isBold) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotBoldChanged(" << isBold << ")"; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + // Figure out old text style. + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setBold (!isBold); + + changeTextStyle (i18n ("Text: Bold"), + newTextStyle, + oldTextStyle); +} + +// public slot +void kpToolText::slotItalicChanged (bool isItalic) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotItalicChanged(" << isItalic << ")"; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + // Figure out old text style. + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setItalic (!isItalic); + + changeTextStyle (i18n ("Text: Italic"), + newTextStyle, + oldTextStyle); +} + +// public slot +void kpToolText::slotUnderlineChanged (bool isUnderline) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotUnderlineChanged(" << isUnderline << ")"; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + // Figure out old text style. + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setUnderline (!isUnderline); + + changeTextStyle (i18n ("Text: Underline"), + newTextStyle, + oldTextStyle); +} + +// public slot +void kpToolText::slotStrikeThruChanged (bool isStrikeThru) +{ +#if DEBUG_KP_TOOL_TEXT + qCDebug(kpLogTools) << "kpToolText::slotStrikeThruChanged(" << isStrikeThru << ")"; +#endif + + if (!shouldChangeTextStyle ()) { + return; + } + + kpTextStyle newTextStyle = environ ()->textStyle (); + + // Figure out old text style. + kpTextStyle oldTextStyle = newTextStyle; + oldTextStyle.setStrikeThru (!isStrikeThru); + + changeTextStyle (i18n ("Text: Strike Through"), + newTextStyle, + oldTextStyle); +} diff --git a/views/kpThumbnailView.cpp b/views/kpThumbnailView.cpp new file mode 100644 index 0000000..e001aba --- /dev/null +++ b/views/kpThumbnailView.cpp @@ -0,0 +1,96 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_THUMBNAIL_VIEW 0 + + +#include "views/kpThumbnailView.h" + +#include "kpLogCategories.h" + + +kpThumbnailView::kpThumbnailView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent) + + : kpView (document, toolToolBar, viewManager, + buddyView, + scrollableContainer, + parent) +{ +} + +kpThumbnailView::~kpThumbnailView () = default; + + +// protected +void kpThumbnailView::setMaskToCoverDocument () +{ +#if DEBUG_KP_THUMBNAIL_VIEW + qCDebug(kpLogViews) << "kpThumbnailView::setMaskToCoverDocument()" + << " origin=" << origin () + << " zoomedDoc: width=" << zoomedDocWidth () + << " height=" << zoomedDocHeight () + << endl; +#endif + + setMask (QRegion (QRect (origin ().x (), origin ().y (), + zoomedDocWidth (), zoomedDocHeight ()))); +} + + +// protected virtual [base kpView] +void kpThumbnailView::resizeEvent (QResizeEvent *e) +{ +#if DEBUG_KP_THUMBNAIL_VIEW + qCDebug(kpLogViews) << "kpThumbnailView(" << name () << ")::resizeEvent()" + << endl; +#endif + + // For QResizeEvent's, Qt already throws an entire widget repaint into + // the event loop. So eat useless update() calls that can only slow + // things down. + // TODO: this doesn't seem to work. + // Later: In Qt4, setUpdatesEnabled(true) calls update(). + const bool oldIsUpdatesEnabled = updatesEnabled (); + setUpdatesEnabled (false); + + { + kpView::resizeEvent (e); + + adjustToEnvironment (); + } + + setUpdatesEnabled (oldIsUpdatesEnabled); +} + + + diff --git a/views/kpThumbnailView.h b/views/kpThumbnailView.h new file mode 100644 index 0000000..a997796 --- /dev/null +++ b/views/kpThumbnailView.h @@ -0,0 +1,90 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_THUMBNAIL_VIEW_H +#define KP_THUMBNAIL_VIEW_H + + +#include "views/kpView.h" + + +/** + * @short Abstract base class for all thumbnail views. + * + * @author Clarence Dang + */ +class kpThumbnailView : public kpView +{ +Q_OBJECT + +public: + /** + * Constructs a thumbnail view. + * + * You must call adjustEnvironment() at the end of your constructor. + */ + kpThumbnailView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent); + + /** + * Destructs this thumbnail view. + */ + ~kpThumbnailView () override; + + + /** + * @returns the caption to display in an enclosing thumbnail window. + */ + virtual QString caption () const = 0; + + +protected: + /** + * Sets the mask to cover the rectangle with top-left, origin() and + * dimensions equal to or slightly less than (in case of rounding + * error) the size of the document in view coordinates. This ensures + * that all pixels are initialised with either document pixels or the + * standard widget background. + */ + void setMaskToCoverDocument (); + + + /** + * Calls adjustToEnvironment() in response to a resize event. + * + * Extends @ref kpView. + */ + void resizeEvent (QResizeEvent *e) override; +}; + + +#endif // KP_THUMBNAIL_VIEW_H diff --git a/views/kpUnzoomedThumbnailView.cpp b/views/kpUnzoomedThumbnailView.cpp new file mode 100644 index 0000000..ee31f43 --- /dev/null +++ b/views/kpUnzoomedThumbnailView.cpp @@ -0,0 +1,222 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_UNZOOMED_THUMBNAIL_VIEW 0 + + +#include "views/kpUnzoomedThumbnailView.h" + +#include "kpLogCategories.h" +#include "document/kpDocument.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" + +#include + +#include + +//--------------------------------------------------------------------- + +struct kpUnzoomedThumbnailViewPrivate +{ +}; + + +kpUnzoomedThumbnailView::kpUnzoomedThumbnailView ( + kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent) + + : kpThumbnailView (document, toolToolBar, viewManager, + buddyView, + scrollableContainer, + parent), + d (new kpUnzoomedThumbnailViewPrivate ()) +{ + if (buddyViewScrollableContainer ()) + { + connect (buddyViewScrollableContainer(), &kpViewScrollableContainer::contentsMoved, + this, &kpUnzoomedThumbnailView::adjustToEnvironment); + } + + // Call to virtual function - this is why the class is sealed + adjustToEnvironment (); +} + +//--------------------------------------------------------------------- + +kpUnzoomedThumbnailView::~kpUnzoomedThumbnailView () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// public virtual [base kpThumbnailView] +QString kpUnzoomedThumbnailView::caption () const +{ + return i18n ("Unzoomed Mode - Thumbnail"); +} + +//--------------------------------------------------------------------- + +// public slot virtual [base kpView] +void kpUnzoomedThumbnailView::adjustToEnvironment () +{ + if (!buddyView () || !buddyViewScrollableContainer () || !document ()) { + return; + } + + const int scrollViewContentsX = + buddyViewScrollableContainer()->horizontalScrollBar()->value(); + const int scrollViewContentsY = + buddyViewScrollableContainer ()->verticalScrollBar()->value(); + +#if DEBUG_KP_UNZOOMED_THUMBNAIL_VIEW + qCDebug(kpLogViews) << "kpUnzoomedThumbnailView(" << name () + << ")::adjustToEnvironment(" + << scrollViewContentsX + << "," + << scrollViewContentsY + << ") width=" << width () + << " height=" << height () + << endl; +#endif + + +#if 1 + int x; + if (document ()->width () > width ()) + { + x = static_cast (buddyView ()->transformViewToDocX (scrollViewContentsX)); + const int rightMostAllowedX = qMax (0, document ()->width () - width ()); + #if DEBUG_KP_UNZOOMED_THUMBNAIL_VIEW + qCDebug(kpLogViews) << "\tdocX=" << x + << " docWidth=" << document ()->width () + << " rightMostAllowedX=" << rightMostAllowedX; + #endif + if (x > rightMostAllowedX) { + x = rightMostAllowedX; + } + } + // Thumbnail width <= doc width + else + { + // Center X (rather than flush left to be consistent with + // kpZoomedThumbnailView) + x = -(width () - document ()->width ()) / 2; + } + + + int y; + if (document ()->height () > height ()) + { + y = static_cast (buddyView ()->transformViewToDocY (scrollViewContentsY)); + const int bottomMostAllowedY = qMax (0, document ()->height () - height ()); + #if DEBUG_KP_UNZOOMED_THUMBNAIL_VIEW + qCDebug(kpLogViews) << "\tdocY=" << y + << " docHeight=" << document ()->height () + << " bottomMostAllowedY=" << bottomMostAllowedY; + #endif + if (y > bottomMostAllowedY) { + y = bottomMostAllowedY; + } + } + // Thumbnail height <= doc height + else + { + // Center Y (rather than flush top to be consistent with + // kpZoomedThumbnailView) + y = -(height () - document ()->height ()) / 2; + } +// Prefer to keep visible area centred in thumbnail instead of flushed left. +// Gives more editing context to the left and top. +// But feels awkward for left-to-right users. So disabled for now. +// Not totally tested. +#else + if (!buddyViewScrollableContainer ()) { + return; + } + + QRect docRect = buddyView ()->transformViewToDoc ( + QRect (buddyViewScrollableContainer ()->horizontalScrollBar()->value(), + buddyViewScrollableContainer ()->verticalScrollBar()->value(), + qMin (buddyView ()->width (), buddyViewScrollableContainer ()->viewport()->width ()), + qMin (buddyView ()->height (), buddyViewScrollableContainer ()->viewport()->height ()))); + + x = docRect.x () - (width () - docRect.width ()) / 2; + qCDebug(kpLogViews) << "\tnew suggest x=" << x; + const int rightMostAllowedX = qMax (0, document ()->width () - width ()); + if (x < 0) { + x = 0; + } + if (x > rightMostAllowedX) { + x = rightMostAllowedX; + } + + y = docRect.y () - (height () - docRect.height ()) / 2; + qCDebug(kpLogViews) << "\tnew suggest y=" << y; + const int bottomMostAllowedY = qMax (0, document ()->height () - height ()); + if (y < 0) { + y = 0; + } + if (y > bottomMostAllowedY) { + y = bottomMostAllowedY; + } +#endif + + + if (viewManager ()) + { + viewManager ()->setFastUpdates (); + viewManager ()->setQueueUpdates (); + } + + { + // OPT: scrollView impl would be much, much faster + setOrigin (QPoint (-x, -y)); + setMaskToCoverDocument (); + + // Above might be a NOP even if e.g. doc size changed so force + // update + if (viewManager ()) { + viewManager ()->updateView (this); + } + } + + if (viewManager ()) + { + viewManager ()->restoreQueueUpdates (); + viewManager ()->restoreFastUpdates (); + } +} + + diff --git a/views/kpUnzoomedThumbnailView.h b/views/kpUnzoomedThumbnailView.h new file mode 100644 index 0000000..5307936 --- /dev/null +++ b/views/kpUnzoomedThumbnailView.h @@ -0,0 +1,106 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_UNZOOMED_THUMBNAIL_VIEW_H +#define KP_UNZOOMED_THUMBNAIL_VIEW_H + + +#include "views/kpThumbnailView.h" + + +class kpViewScrollableContainer; + + +/** + * @short Unzoomed thumbnail view of a document. + * + * This is an unzoomed thumbnail view of a document. Unlike + * @ref kpZoomedThumbnailView, it never changes the zoom level. And unlike + * @ref kpZoomedView, it never resizes itself. Instead, it changes its + * origin according to the main view's scrollable container so that the + * top-left most document pixel displayed in the scrollable container will + * be visible. + * + * Do not call setZoomLevel() nor setOrigin(). + * + * This class is sealed. Do not derive from it. + * + * @author Clarence Dang + */ +/*sealed*/ class kpUnzoomedThumbnailView : public kpThumbnailView +{ +Q_OBJECT + +public: + /** + * Constructs an unzoomed thumbnail view. + */ + kpUnzoomedThumbnailView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent); + + /** + * Destructs an unzoomed thumbnail view. + */ + ~kpUnzoomedThumbnailView () override; + + + /** + * Implements @ref kpThumbnailView. + */ + QString caption () const override; + + +public slots: + /** + * Changes its origin according to the main view's scrollable container + * so that the top-left most document pixel displayed in the scrollable + * container will be visible. + * + * It tries to maximise the used area of this view. Unused areas will + * be set to the widget background thanks to the mask. + * + * Call this if the size of the document changes. + * Already connected to buddyViewScrollableContainer()'s + * contentsMoved() signal. + * Already called by @ref kpThumbnailView resizeEvent(). + * + * Implements @ref kpView. + */ + void adjustToEnvironment () override; + + +private: + struct kpUnzoomedThumbnailViewPrivate *d; +}; + + +#endif // KP_UNZOOMED_THUMBNAIL_VIEW_H diff --git a/views/kpView.cpp b/views/kpView.cpp new file mode 100644 index 0000000..d28ad25 --- /dev/null +++ b/views/kpView.cpp @@ -0,0 +1,687 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2005 Kazuki Ohta + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_VIEW 0 +#define DEBUG_KP_VIEW_RENDERER ((DEBUG_KP_VIEW && 1) || 0) + + +#include "kpView.h" +#include "kpViewPrivate.h" + +#include + +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include "document/kpDocument.h" +#include "layers/selections/text/kpTextSelection.h" +#include "tools/kpTool.h" +#include "widgets/toolbars/kpToolToolBar.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" + +//--------------------------------------------------------------------- + +// public static +const int kpView::MinZoomLevel = 1; +const int kpView::MaxZoomLevel = 3200; + +//--------------------------------------------------------------------- + +kpView::kpView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent) + : QWidget (parent), + d (new kpViewPrivate ()) +{ + d->document = document; + d->toolToolBar = toolToolBar; + d->viewManager = viewManager; + d->buddyView = buddyView; + d->scrollableContainer = scrollableContainer; + + d->hzoom = 100; + d->vzoom = 100; + d->origin = QPoint (0, 0); + d->showGrid = false; + d->isBuddyViewScrollableContainerRectangleShown = false; + + // Don't waste CPU drawing default background since its overridden by + // our fully opaque drawing. In reality, this seems to make no + // difference in performance. + setAttribute(Qt::WA_OpaquePaintEvent, true); + + setFocusPolicy (Qt::WheelFocus); + setMouseTracking (true); // mouseMoveEvent's even when no mousebtn down + setAttribute (Qt::WA_KeyCompression, true); +} + +//--------------------------------------------------------------------- + +kpView::~kpView () +{ + setHasMouse (false); + + delete d; +} + +//--------------------------------------------------------------------- + +// public +kpDocument *kpView::document () const +{ + return d->document; +} + +//--------------------------------------------------------------------- + +// protected +kpAbstractSelection *kpView::selection () const +{ + return document () ? document ()->selection () : nullptr; +} + +//--------------------------------------------------------------------- + +// protected +kpTextSelection *kpView::textSelection () const +{ + return document () ? document ()->textSelection () : nullptr; +} + +//--------------------------------------------------------------------- + +// public +kpToolToolBar *kpView::toolToolBar () const +{ + return d->toolToolBar; +} + +// protected +kpTool *kpView::tool () const +{ + return toolToolBar () ? toolToolBar ()->tool () : nullptr; +} + +// public +kpViewManager *kpView::viewManager () const +{ + return d->viewManager; +} + +// public +kpView *kpView::buddyView () const +{ + return d->buddyView; +} + +// public +kpViewScrollableContainer *kpView::buddyViewScrollableContainer () const +{ + return (buddyView () ? buddyView ()->scrollableContainer () : nullptr); +} + +// public +kpViewScrollableContainer *kpView::scrollableContainer () const +{ + return d->scrollableContainer; +} + + +// public +int kpView::zoomLevelX () const +{ + return d->hzoom; +} + +// public +int kpView::zoomLevelY () const +{ + return d->vzoom; +} + +// public virtual +void kpView::setZoomLevel (int hzoom, int vzoom) +{ + hzoom = qBound (MinZoomLevel, hzoom, MaxZoomLevel); + vzoom = qBound (MinZoomLevel, vzoom, MaxZoomLevel); + + if (hzoom == d->hzoom && vzoom == d->vzoom) { + return; + } + + d->hzoom = hzoom; + d->vzoom = vzoom; + + if (viewManager ()) { + viewManager ()->updateView (this); + } + + emit zoomLevelChanged (hzoom, vzoom); +} + + +// public +QPoint kpView::origin () const +{ + return d->origin; +} + +// public virtual +void kpView::setOrigin (const QPoint &origin) +{ +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::setOrigin" << origin; +#endif + + if (origin == d->origin) + { + #if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tNOP"; + #endif + return; + } + + d->origin = origin; + + if (viewManager ()) { + viewManager ()->updateView (this); + } + + emit originChanged (origin); +} + + +// public +bool kpView::canShowGrid () const +{ + // (minimum zoom level < 400% would probably be reported as a bug by + // users who thought that the grid was a part of the image!) + return ((zoomLevelX () >= 400 && zoomLevelX () % 100 == 0) && + (zoomLevelY () >= 400 && zoomLevelY () % 100 == 0)); +} + +// public +bool kpView::isGridShown () const +{ + return d->showGrid; +} + +// public +void kpView::showGrid (bool yes) +{ + if (d->showGrid == yes) { + return; + } + + if (yes && !canShowGrid ()) { + return; + } + + d->showGrid = yes; + + if (viewManager ()) { + viewManager ()->updateView (this); + } +} + + +// public +bool kpView::isBuddyViewScrollableContainerRectangleShown () const +{ + return d->isBuddyViewScrollableContainerRectangleShown; +} + +// public +void kpView::showBuddyViewScrollableContainerRectangle (bool yes) +{ + if (yes == d->isBuddyViewScrollableContainerRectangleShown) { + return; + } + + d->isBuddyViewScrollableContainerRectangleShown = yes; + + if (d->isBuddyViewScrollableContainerRectangleShown) + { + // Got these connect statements by analysing deps of + // updateBuddyViewScrollableContainerRectangle() rect update code. + + connect (this, &kpView::zoomLevelChanged, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + connect (this, &kpView::originChanged, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + if (buddyViewScrollableContainer ()) + { + connect (buddyViewScrollableContainer (), + &kpViewScrollableContainer::contentsMoved, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + connect (buddyViewScrollableContainer (), &kpViewScrollableContainer::resized, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + } + + if (buddyView ()) + { + connect (buddyView (), &kpView::zoomLevelChanged, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + connect (buddyView (), &kpView::originChanged, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + connect (buddyView (), + static_cast(&kpView::sizeChanged), + this, &kpView::updateBuddyViewScrollableContainerRectangle); + } + + } + else + { + disconnect (this, &kpView::zoomLevelChanged, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + disconnect (this, &kpView::originChanged, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + if (buddyViewScrollableContainer ()) + { + disconnect (buddyViewScrollableContainer (), + &kpViewScrollableContainer::contentsMoved, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + disconnect (buddyViewScrollableContainer (), &kpViewScrollableContainer::resized, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + } + + if (buddyView ()) + { + disconnect (buddyView (), &kpView::zoomLevelChanged, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + disconnect (buddyView (), &kpView::originChanged, + this, &kpView::updateBuddyViewScrollableContainerRectangle); + + disconnect (buddyView (), + static_cast(&kpView::sizeChanged), + this, &kpView::updateBuddyViewScrollableContainerRectangle); + } + + } + + updateBuddyViewScrollableContainerRectangle (); +} + + +// protected +QRect kpView::buddyViewScrollableContainerRectangle () const +{ + return d->buddyViewScrollableContainerRectangle; +} + +// protected slot +void kpView::updateBuddyViewScrollableContainerRectangle () +{ + if (viewManager ()) { + viewManager ()->setQueueUpdates (); + } + + { + if (d->buddyViewScrollableContainerRectangle.isValid ()) + { + if (viewManager ()) + { + // Erase last + viewManager ()->updateViewRectangleEdges (this, + d->buddyViewScrollableContainerRectangle); + } + } + + + QRect newRect; + if (isBuddyViewScrollableContainerRectangleShown () && + buddyViewScrollableContainer () && buddyView ()) + { + QRect docRect = buddyView ()->transformViewToDoc ( + QRect (buddyViewScrollableContainer ()->horizontalScrollBar()->value(), + buddyViewScrollableContainer ()->verticalScrollBar()->value(), + qMin (buddyView ()->width (), + buddyViewScrollableContainer ()->viewport()->width ()), + qMin (buddyView ()->height (), + buddyViewScrollableContainer ()->viewport()->height ()))); + + + QRect viewRect = this->transformDocToView (docRect); + + + // (Surround the area of interest by moving outwards by 1 pixel in each + // direction - don't overlap area) + newRect = QRect (viewRect.x () - 1, + viewRect.y () - 1, + viewRect.width () + 2, + viewRect.height () + 2); + } + else + { + newRect = QRect (); + } + + if (newRect != d->buddyViewScrollableContainerRectangle) + { + // (must set before updateView() for paintEvent() to see new + // rect) + d->buddyViewScrollableContainerRectangle = newRect; + + if (newRect.isValid ()) + { + if (viewManager ()) + { + viewManager ()->updateViewRectangleEdges (this, + d->buddyViewScrollableContainerRectangle); + } + } + } + } + + if (viewManager ()) { + viewManager ()->restoreQueueUpdates (); + } +} + +//--------------------------------------------------------------------- + +// public +double kpView::transformViewToDocX (double viewX) const +{ + return (viewX - origin ().x ()) * 100.0 / zoomLevelX (); +} + +//--------------------------------------------------------------------- + +// public +double kpView::transformViewToDocY (double viewY) const +{ + return (viewY - origin ().y ()) * 100.0 / zoomLevelY (); +} + +//--------------------------------------------------------------------- + +// public +QPoint kpView::transformViewToDoc (const QPoint &viewPoint) const +{ + return {static_cast (transformViewToDocX (viewPoint.x ())), + static_cast (transformViewToDocY (viewPoint.y ()))}; +} + +//--------------------------------------------------------------------- + +// public +QRect kpView::transformViewToDoc (const QRect &viewRect) const +{ + if (zoomLevelX () == 100 && zoomLevelY () == 100) + { + return {viewRect.x () - origin ().x (), viewRect.y () - origin ().y (), + viewRect.width (), viewRect.height ()}; + } + + const QPoint docTopLeft = transformViewToDoc (viewRect.topLeft ()); + + // (don't call transformViewToDoc[XY]() - need to round up dimensions) + const auto docWidth = qRound (double (viewRect.width ()) * 100.0 / double (zoomLevelX ())); + const auto docHeight = qRound (double (viewRect.height ()) * 100.0 / double (zoomLevelY ())); + + // (like QWMatrix::Areas) + return {docTopLeft.x (), docTopLeft.y (), docWidth, docHeight}; + +} + +//--------------------------------------------------------------------- + +// public +double kpView::transformDocToViewX (double docX) const +{ + return (docX * zoomLevelX () / 100.0) + origin ().x (); +} + +// public +double kpView::transformDocToViewY (double docY) const +{ + return (docY * zoomLevelY () / 100.0) + origin ().y (); +} + +// public +QPoint kpView::transformDocToView (const QPoint &docPoint) const +{ + return {static_cast (transformDocToViewX (docPoint.x ())), + static_cast (transformDocToViewY (docPoint.y ()))}; +} + +// public +QRect kpView::transformDocToView (const QRect &docRect) const +{ + if (zoomLevelX () == 100 && zoomLevelY () == 100) + { + return {docRect.x () + origin ().x (), docRect.y () + origin ().y (), + docRect.width (), docRect.height ()}; + } + + const QPoint viewTopLeft = transformDocToView (docRect.topLeft ()); + + // (don't call transformDocToView[XY]() - need to round up dimensions) + const int viewWidth = qRound (double (docRect.width ()) * double (zoomLevelX ()) / 100.0); + const int viewHeight = qRound (double (docRect.height ()) * double (zoomLevelY ()) / 100.0); + + // (like QWMatrix::Areas) + return QRect (viewTopLeft.x (), viewTopLeft.y (), viewWidth, viewHeight); +} + + +// public +QPoint kpView::transformViewToOtherView (const QPoint &viewPoint, + const kpView *otherView) +{ + if (this == otherView) { + return viewPoint; + } + + const double docX = transformViewToDocX (viewPoint.x ()); + const double docY = transformViewToDocY (viewPoint.y ()); + + const double otherViewX = otherView->transformDocToViewX (docX); + const double otherViewY = otherView->transformDocToViewY (docY); + + return {static_cast (otherViewX), static_cast (otherViewY)}; +} + + +// public +int kpView::zoomedDocWidth () const +{ + return document () ? document ()->width () * zoomLevelX () / 100 : 0; +} + +// public +int kpView::zoomedDocHeight () const +{ + return document () ? document ()->height () * zoomLevelY () / 100 : 0; +} + + +// public +void kpView::setHasMouse (bool yes) +{ + kpViewManager *vm = viewManager (); + if (!vm) { + return; + } + +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () + << ")::setHasMouse(" << yes + << ") existing viewUnderCursor=" + << (vm->viewUnderCursor () ? vm->viewUnderCursor ()->objectName () : "(none)"); +#endif + if (yes && vm->viewUnderCursor () != this) { + vm->setViewUnderCursor (this); + } + else if (!yes && vm->viewUnderCursor () == this) { + vm->setViewUnderCursor (nullptr); + } +} + +//--------------------------------------------------------------------- + +// public +void kpView::addToQueuedArea (const QRegion ®ion) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () + << ")::addToQueuedArea() already=" << d->queuedUpdateArea + << " - plus - " << region + << endl; +#endif + d->queuedUpdateArea += region; +} + +//--------------------------------------------------------------------- + +// public +void kpView::addToQueuedArea (const QRect &rect) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () + << ")::addToQueuedArea() already=" << d->queuedUpdateArea + << " - plus - " << rect + << endl; +#endif + d->queuedUpdateArea += rect; +} + +//--------------------------------------------------------------------- + +// public +void kpView::invalidateQueuedArea () +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView::invalidateQueuedArea()"; +#endif + + d->queuedUpdateArea = QRegion (); +} + +//--------------------------------------------------------------------- + +// public +void kpView::updateQueuedArea () +{ + kpViewManager *vm = viewManager (); +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () + << ")::updateQueuedArea() vm=" << (bool) vm + << " queueUpdates=" << (vm && vm->queueUpdates ()) + << " fastUpdates=" << (vm && vm->fastUpdates ()) + << " area=" << d->queuedUpdateArea + << endl; +#endif + + if (!vm) { + return; + } + + if (vm->queueUpdates ()) { + return; + } + + if (!d->queuedUpdateArea.isEmpty ()) { + vm->updateView (this, d->queuedUpdateArea); + } + + invalidateQueuedArea (); +} + +//--------------------------------------------------------------------- + +// public +QPoint kpView::mouseViewPoint (const QPoint &returnViewPoint) const +{ + if (returnViewPoint != KP_INVALID_POINT) { + return returnViewPoint; + } + + // TODO: I don't think this is right for the main view since that's + // inside the scrollview (which can scroll). + return mapFromGlobal (QCursor::pos ()); +} + +//--------------------------------------------------------------------- + +// public virtual +QVariant kpView::inputMethodQuery (Qt::InputMethodQuery query) const +{ +#if DEBUG_KP_VIEW && 1 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::inputMethodQuery()"; +#endif + QVariant ret; + switch (query) + { + case Qt::ImCursorRectangle: + { + QRect r = d->viewManager->textCursorRect (); + r.setTopLeft (r.topLeft () + origin ()); + r.setHeight (r.height() + 2); + r = transformDocToView (r); + ret = r; + break; + } + case Qt::ImFont: + { + if (textSelection ()) + { + ret = textSelection ()->textStyle ().font (); + } + break; + } + default: + break; + } + return ret; +} + +//--------------------------------------------------------------------- + + diff --git a/views/kpView.h b/views/kpView.h new file mode 100644 index 0000000..d831a8f --- /dev/null +++ b/views/kpView.h @@ -0,0 +1,602 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_VIEW_H +#define KP_VIEW_H + + +#include + +#include "kpDefs.h" + + +class QDragEnterEvent; +class QDragLeaveEvent; +class QEvent; +class QFocusEvent; +class QKeyEvent; +class QMouseEvent; +class QPaintEvent; +class QResizeEvent; + +class kpAbstractSelection; +class kpDocument; +class kpTextSelection; +class kpTool; +class kpToolToolBar; +class kpViewManager; +class kpViewScrollableContainer; + + +/** + * @short Abstract base class for all views. + * + * This is the abstract base class for all views. A view is a widget that + * renders a possibly zoomed onscreen representation of a document. + * + * 1 view corresponds to 1 document. + * 1 document corresponds to 0 or more views. + * + * @see kpViewManager + * + * @author Clarence Dang + */ +class kpView : public QWidget +{ +Q_OBJECT + +public: + /** + * Constructs a view. + * + * @param document The document this view is representing. + * @param toolToolBar The tool tool bar. + * @param viewManager The view manager. + * @param buddyView The view this view watches over (e.g. a thumbnail + * view would watch over the main view). May be 0. + * See for example, highlightBuddyViewRectangle(). + * @param scrollableContainer This view's scrollable container. + * May be 0. + * + * You must call adjustEnvironment() at the end of your constructor. + */ + kpView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent); + + /** + * Destructs this view. Informs the viewManager() that the mouse + * cursor is no longer above this view. + */ + ~kpView () override; + + + // + // Constants (enforced by methods) + // + static const int MinZoomLevel, MaxZoomLevel; + + + /** + * @returns the document. + */ + kpDocument *document () const; + +protected: + /** + * @returns the document's selection. + */ + kpAbstractSelection *selection () const; + + kpTextSelection *textSelection () const; + +public: + /** + * @returns the tool tool bar. + */ + kpToolToolBar *toolToolBar () const; + +protected: + /** + * @returns the currently selected tool. + */ + kpTool *tool () const; + +public: + /** + * @returns the view manager. + */ + kpViewManager *viewManager () const; + + /** + * @returns the buddy view. + */ + kpView *buddyView () const; + + /** + * @returns the buddyView()'s scrollable container. + */ + kpViewScrollableContainer *buddyViewScrollableContainer () const; + + /** + * @returns this view's scrollable container. + */ + kpViewScrollableContainer *scrollableContainer () const; + + + /** + * @returns the horizontal zoom level (100 is unzoomed). + */ + int zoomLevelX (void) const; + + /** + * @returns the vertical zoom level (100 is unzoomed). + */ + int zoomLevelY (void) const; + + /** + * Sets the horizontal and vertical zoom levels. + * + * @param hzoom Horizontal zoom level. + * @param vzoom Vertical zoom level. + * + * This method automatically bounds and to be between + * MinZoomLevel and MaxZoomLevel inclusive. + * + * If reimplementing, you must call this base implementation. + */ + virtual void setZoomLevel (int hzoom, int vzoom); + + + /** + * @returns in views coordinates, where the top-left document() pixel + * will be rendered (default: (0,0)). + */ + QPoint origin () const; + + /** + * Sets the origin. + * + * @param origin New origin. + * + * If reimplementing, you must call this base implementation. + */ + virtual void setOrigin (const QPoint &origin); + + + /** + * @returns whether at this zoom level, the grid can be enabled. + * This is based on whether the grid can be sensibly rendered. + */ + bool canShowGrid () const; + + /** + * @returns whether the grid is currently shown. + */ + bool isGridShown () const; + + /** + * Turns on/off the grid. + * + * @param yes Whether to enable the grid. + */ + void showGrid (bool yes = true); + + + /** + * @returns whether to draw a rectangle highlighting the area of + * buddyView() visible through buddyViewScrollableContainer(). + */ + bool isBuddyViewScrollableContainerRectangleShown () const; + + /** + * Turns on/off the rectangle highlighting the area of buddyView() + * visible through buddyViewScrollableContainer() and redraws. + * + * @param yes Whether to turn on the rectangle. + */ + void showBuddyViewScrollableContainerRectangle (bool yes = true); + +protected: + /** + * @returns the current rectangle highlighting the area of buddyView() + * visible through buddyViewScrollableContainer(), that is being + * rendered by this view. + */ + QRect buddyViewScrollableContainerRectangle () const; + +protected slots: + /** + * Updates the buddyViewScrollableContainerRectangle() and redraws + * appropriately. + * + * This is already connected to zoomLevelChanged() and originChanged(); + * buddyView() and buddyViewScrollableContainer() signals. There is probably no + * need to call this function directly. + */ + void updateBuddyViewScrollableContainerRectangle (); + + +public: + + /** + * @param viewX Horizontal position in view coordinates. + * + * @returns viewX transformed to document coordinates, based on the + * origin() and zoomLevelX(). + */ + double transformViewToDocX (double viewX) const; + + /** + * @param viewY Vertical position in view coordinates. + * + * @returns viewY transformed to document coordinates, based on the + * origin() and zoomLevelY(). + */ + double transformViewToDocY (double viewY) const; + + /** + * @param viewPoint Position in view coordinates. + * + * @returns viewPoint transformed to document coordinates, based on the + * origin(), zoomLevelX() and zoomLevelY(). + */ + QPoint transformViewToDoc (const QPoint &viewPoint) const; + + /** + * @param viewRect Rectangle in view coordinates. + * + * @returns viewRect transformed to document coordinates based on the + * origin(), zoomLevelX() and zoomLevelY(). + * + * For bounding rectangles, you should use this function instead of + * transformViewToDocX(), transformViewToDocY() or + * transformViewToDoc(const QPoint &) which act on coordinates only. + */ + QRect transformViewToDoc (const QRect &viewRect) const; + + + /** + * @param docX Horizontal position in document coordinates. + * + * @returns docX transformed to view coordinates, based on the origin() + * and zoomLevelX(). + */ + double transformDocToViewX (double docX) const; + + /** + * @param docY Vertical position in document coordinates. + * + * @returns docY transformed to view coordinates, based on the origin() + * and zoomLevelY(). + */ + double transformDocToViewY (double docY) const; + + /** + * @param docPoint Position in document coordinates. + * + * @returns docPoint transformed to view coordinates, based on the + * origin(), zoomLevelX(), zoomLevelY(). + */ + QPoint transformDocToView (const QPoint &docPoint) const; + + /** + * @param docRect Rectangle in document coordinates. + * + * @return docRect transformed to view coordinates, based on the + * origin(), zoomLevelX() and zoomLevelY(). + * + * For bounding rectangles, you should use this function instead of + * transformDocToViewX(), transformDocToViewY() or + * transformDocToView(const QPoint &) which act on coordinates only. + */ + QRect transformDocToView (const QRect &docRect) const; + + + /** + * @param viewPoint Position in view coordinates. + * @param otherView View whose coordinate system the return value will + * be in. + * + * @returns viewPoint transformed to the coordinate system of + * @param otherView based on this and otherView's origin(), + * zoomLevelX() and zoomLevelY(). This has less rounding + * error than otherView->transformDocToView (transformViewToDoc (viewPoint)). + */ + QPoint transformViewToOtherView (const QPoint &viewPoint, + const kpView *otherView); + + + /** + * @returns the approximate view width required to display the entire + * document(), based on the zoom level only. + */ + int zoomedDocWidth () const; + + /** + * @returns the approximate view height required to display the entire + * document(), based on the zoom level only. + */ + int zoomedDocHeight () const; + + +protected: + /** + * Updates the viewManager() on whether or not the mouse is directly + * above this view. Among other things, this ensures the brush cursor + * is updated. + * + * This should be called in event handlers. + * + * @param yes Whether the mouse is directly above this view. + */ + void setHasMouse (bool yes = true); + + +public: + /** + * Adds a region (in view coordinates) to the dirty area that is + * repainted when the parent @ref kpViewManager is set not to queue + * updates. + * + * @param region Region (in view coordinates) that needs repainting. + */ + void addToQueuedArea (const QRegion ®ion); + + /** + * Convenience function. Same as above. + * + * Adds a rectangle (in view coordinates) to the dirty area that is + * repainted when the parent @ref kpViewManager is set not to queue + * updates. + * + * @param rect Rectangle (in view coordinates) that needs repainting. + */ + void addToQueuedArea (const QRect &rect); + + /** + * Removes the dirty region that has been queued for updating. + * Does not update the view. + */ + void invalidateQueuedArea (); + + /** + * Updates the part of the view described by dirty region and then + * calls invalidateQueuedArea(). Does nothing if @ref kpViewManager + * is set to queue updates. + */ + void updateQueuedArea (); + + QVariant inputMethodQuery (Qt::InputMethodQuery query) const override; + +public slots: + /** + * Call this when the "environment" (e.g. document size) changes. The + * environment is defined by the caller and should be based on the type + * of view. For instance, an unzoomed thumbnail view would also + * include in its environment the contents position of an associated + * scrollable container. + * + * This is never called by the kpView base class. + * + * Implementors should change whatever state is necessary for their + * type of view. For instance, an unzoomed view would resize itself; + * a zoomed thumbnail would change the zoom level. + */ + virtual void adjustToEnvironment () = 0; + + +public: + // If is not KP_INVALID_POINT, it spits it back. + // Else, it returns the current mouse position in view coordinates. + // REFACTOR: Seems like a bad API. + QPoint mouseViewPoint (const QPoint &returnViewPoint = KP_INVALID_POINT) const; + + +signals: + /** + * Emitted after all zooming code has been executed. + * + * @param zoomLevelX New zoomLevelX() + * @param zoomLevelY New zoomLevelY() + */ + void zoomLevelChanged (int zoomLevelX, int zoomLevelY); + + /** + * Emitted after all resizing code has been executed. + * + * @param size New view size. + */ + void sizeChanged (const QSize &size); + + /** + * Convenience signal - same as above. + * + * Emitted after all resizing code has been executed. + * + * @param width New view width. + * @param height New view height. + */ + void sizeChanged (int width, int height); + + /** + * Emitted after all origin changing code has been executed. + * + * @param origin The new origin. + */ + void originChanged (const QPoint &origin); + + + +// +// Selections +// + +public: + QRect selectionViewRect () const; + + // (if is KP_INVALID_POINT, it uses QCursor::pos()) + + QPoint mouseViewPointRelativeToSelection (const QPoint &viewPoint = KP_INVALID_POINT) const; + bool mouseOnSelection (const QPoint &viewPoint = KP_INVALID_POINT) const; + + int textSelectionMoveBorderAtomicSize () const; + bool mouseOnSelectionToMove (const QPoint &viewPoint = KP_INVALID_POINT) const; + +protected: + bool selectionLargeEnoughToHaveResizeHandlesIfAtomicSize (int atomicSize) const; +public: + int selectionResizeHandleAtomicSize () const; + bool selectionLargeEnoughToHaveResizeHandles () const; + + QRegion selectionResizeHandlesViewRegion (bool forRenderer = false) const; + + enum SelectionResizeType + { + None = 0, + Left = 1, + Right = 2, + Top = 4, + Bottom = 8 + }; + + // Returns a bitwise OR of the SelectionResizeType's + int mouseOnSelectionResizeHandle (const QPoint &viewPoint = KP_INVALID_POINT) const; + + bool mouseOnSelectionToSelectText (const QPoint &viewPoint = KP_INVALID_POINT) const; + + +// +// Events +// + +protected: + void mouseMoveEvent (QMouseEvent *e) override; + void mousePressEvent (QMouseEvent *e) override; + void mouseReleaseEvent (QMouseEvent *e) override; +public: + // (needs to be public as it may also get event from + // QScrollView::contentsWheelEvent()) + void wheelEvent (QWheelEvent *e) override; + + +protected: + void keyPressEvent (QKeyEvent *e) override; + void keyReleaseEvent (QKeyEvent *e) override; + +protected: + void inputMethodEvent (QInputMethodEvent *e) override; + +protected: + bool event (QEvent *e) override; + + +protected: + void focusInEvent (QFocusEvent *e) override; + void focusOutEvent (QFocusEvent *e) override; + + +protected: +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + void enterEvent (QEnterEvent *e) override; +#else + void enterEvent (QEvent *e) override; +#endif + void leaveEvent (QEvent *e) override; + + +protected: + void dragEnterEvent (QDragEnterEvent *) override; + void dragLeaveEvent (QDragLeaveEvent *) override; + + +protected: + void resizeEvent (QResizeEvent *e) override; + + +// +// Painting +// + +protected: + // Returns the document rectangle that, when scaled to the view, + // is "guaranteed" to at least cover and possibly more + // ("guaranteed" in quotes because it doesn't seem so reliable for + // zoom levels that aren't multiples of 100%). + QRect paintEventGetDocRect (const QRect &viewRect) const; +public: + /** + * Draws an opaque background representing transparency. + * + * Currently, it draws a checkerboard which, if it were to be drawn + * in its entirety, is tiled from . + * + * @param painter Painter. + * @param patternOrigin Logical top-left point of the checkerboard, + * relative to the painter, if it were to be + * drawn in its entirety. + * @param viewRect Rectangle to paint in relative to the painter. + * @param isPreview Whether the view is for a preview as opposed to + * e.g. editing. If set, this function may render + * slightly differently. + */ + static void drawTransparentBackground (QPainter *painter, + const QPoint &patternOrigin, + const QRect &viewRect, + bool isPreview = false); +protected: + // Draws a checkerboard that looks static even if the view is scrollable. + void paintEventDrawCheckerBoard (QPainter *painter, + const QRect &viewRect); + + // Draws the selection and its border onto . + // is the part of the document given by . + void paintEventDrawSelection (QImage *destPixmap, const QRect &docRect); + + // Draws the parts of the selection's resize handles that are inside + // onto the view + void paintEventDrawSelectionResizeHandles (const QRect &clipRect); + void paintEventDrawTempImage (QImage *destPixmap, const QRect &docRect); + + // Draws the parts of the grid lines that are inside on + // . + void paintEventDrawGridLines (QPainter *painter, const QRect &viewRect); + + void paintEventDrawDoc_Unclipped (const QRect &viewRect); + void paintEvent (QPaintEvent *e) override; + + +private: + struct kpViewPrivate *d; +}; + + +#endif // KP_VIEW_H diff --git a/views/kpViewPrivate.h b/views/kpViewPrivate.h new file mode 100644 index 0000000..565f039 --- /dev/null +++ b/views/kpViewPrivate.h @@ -0,0 +1,77 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpViewPrivate_H +#define kpViewPrivate_H + + +#include +#include +#include +#include + + +class kpDocument; +class kpToolToolBar; +class kpView; +class kpViewScrollableContainer; + + +struct kpViewPrivate +{ + // sync: kpView::paintEvent() + // + // Normally, these pointers must be valid while the kpView is alive. + // Generally, the objects they point to are deleted only after kpView + // is deleted. + // + // However, sometimes we use deleteLater() for the kpView. + // Before the delayed deletion is executed, those objects are deleted + // and then our paintEvent() is called. paintEvent() must therefore + // have some way of realising that those objects have been deleted so + // we use guarded pointers. + // + // For more details, see SVN commit: + // "r385274 | dang | 2005-02-02 22:08:27 +1100 (Wed, 02 Feb 2005) | 21 lines". + QPointer document; + QPointer toolToolBar; + QPointer viewManager; + QPointer buddyView; + QPointer scrollableContainer; + + int hzoom, vzoom; + QPoint origin; + bool showGrid; + bool isBuddyViewScrollableContainerRectangleShown; + QRect buddyViewScrollableContainerRectangle; + + QRegion queuedUpdateArea; +}; + + +#endif // kpViewPrivate_H diff --git a/views/kpView_Events.cpp b/views/kpView_Events.cpp new file mode 100644 index 0000000..de3a743 --- /dev/null +++ b/views/kpView_Events.cpp @@ -0,0 +1,285 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2005 Kazuki Ohta + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_VIEW 0 +#define DEBUG_KP_VIEW_RENDERER ((DEBUG_KP_VIEW && 1) || 0) + + +#include "views/kpView.h" +#include "kpViewPrivate.h" + +#if DEBUG_KP_VIEW +#include "kpLogCategories.h" +#endif + +#include +#include + +#include "tools/kpTool.h" + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpView::mouseMoveEvent (QMouseEvent *e) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::mouseMoveEvent (" + << e->x () << "," << e->y () << ")" + << endl; +#endif + + // TODO: This is wrong if you leaveEvent the mainView by mouseMoving on the + // mainView, landing on top of the thumbnailView cleverly put on top + // of the mainView. + setHasMouse (rect ().contains (e->pos ())); + + if (tool ()) { + tool ()->mouseMoveEvent (e); + } + + e->accept (); +} + +// protected virtual [base QWidget] +void kpView::mousePressEvent (QMouseEvent *e) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::mousePressEvent (" + << e->x () << "," << e->y () << ")" + << endl; +#endif + + setHasMouse (true); + + if (tool ()) { + tool ()->mousePressEvent (e); + } + + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpView::mouseReleaseEvent (QMouseEvent *e) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::mouseReleaseEvent (" + << e->x () << "," << e->y () << ")" + << endl; +#endif + + setHasMouse (rect ().contains (e->pos ())); + + if (tool ()) { + tool ()->mouseReleaseEvent (e); + } + + e->accept (); +} + +//--------------------------------------------------------------------- + +// public virtual [base QWidget] +void kpView::wheelEvent (QWheelEvent *e) +{ + if (tool ()) { + tool ()->wheelEvent (e); + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpView::keyPressEvent (QKeyEvent *e) +{ +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::keyPressEvent()" << e->text(); +#endif + + if (tool ()) { + tool ()->keyPressEvent (e); + } + + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpView::keyReleaseEvent (QKeyEvent *e) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::keyReleaseEvent()"; +#endif + + if (tool ()) { + tool ()->keyReleaseEvent (e); + } + + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpView::inputMethodEvent (QInputMethodEvent *e) +{ +#if DEBUG_KP_VIEW && 1 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::inputMethodEvent()"; +#endif + + if (tool ()) { + tool ()->inputMethodEvent (e); + } + e->accept (); +} + +// protected virtual [base QWidget] +bool kpView::event (QEvent *e) +{ +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "kpView::event() invoking kpTool::event()"; +#endif + if (tool () && tool ()->viewEvent (e)) + { + #if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tkpView::event() - tool said eat event, ret true"; + #endif + return true; + } + +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tkpView::event() - no tool or said false, call QWidget::event()"; +#endif + return QWidget::event (e); +} + + +// protected virtual [base QWidget] +void kpView::focusInEvent (QFocusEvent *e) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::focusInEvent()"; +#endif + if (tool ()) { + tool ()->focusInEvent (e); + } +} + +// protected virtual [base QWidget] +void kpView::focusOutEvent (QFocusEvent *e) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::focusOutEvent()"; +#endif + if (tool ()) { + tool ()->focusOutEvent (e); + } +} + + +// protected virtual [base QWidget] +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +void kpView::enterEvent (QEnterEvent *e) +#else +void kpView::enterEvent (QEvent *e) +#endif +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::enterEvent()"; +#endif + + // Don't call setHasMouse(true) as it displays the brush cursor (if + // active) when dragging open a menu and then dragging + // past the extents of the menu due to Qt sending us an EnterEvent. + // We're already covered by MouseMoveEvent anyway. + // + // But disabling this causes a more serious problem: RMB on a text + // box and Esc. We have no other reliable way to determine if the + // mouse is still above the view (user could have moved mouse out + // while RMB menu was up) and hence the cursor is not updated. + setHasMouse (true); + + if (tool ()) { + tool ()->enterEvent (e); + } +} + +// protected virtual [base QWidget] +void kpView::leaveEvent (QEvent *e) +{ +#if DEBUG_KP_VIEW && 0 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::leaveEvent()"; +#endif + + setHasMouse (false); + if (tool ()) { + tool ()->leaveEvent (e); + } +} + + +// protected virtual [base QWidget] +void kpView::dragEnterEvent (QDragEnterEvent *) +{ +#if DEBUG_KP_VIEW && 1 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::dragEnterEvent()"; +#endif + + setHasMouse (true); +} + +// protected virtual [base QWidget] +void kpView::dragLeaveEvent (QDragLeaveEvent *) +{ +#if DEBUG_KP_VIEW && 1 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::dragLeaveEvent"; +#endif + + setHasMouse (false); +} + + +// protected virtual [base QWidget] +void kpView::resizeEvent (QResizeEvent *e) +{ +#if DEBUG_KP_VIEW && 1 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::resizeEvent(" + << e->size () + << " vs actual=" << size () + << ") old=" << e->oldSize () << endl; +#endif + + QWidget::resizeEvent (e); + + emit sizeChanged (width (), height ()); + emit sizeChanged (size ()); +} diff --git a/views/kpView_Paint.cpp b/views/kpView_Paint.cpp new file mode 100644 index 0000000..6bf6de0 --- /dev/null +++ b/views/kpView_Paint.cpp @@ -0,0 +1,637 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_VIEW 0 +#define DEBUG_KP_VIEW_RENDERER ((DEBUG_KP_VIEW && 1) || 0) + + +#include "views/kpView.h" +#include "kpViewPrivate.h" + +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "imagelib/kpColor.h" +#include "document/kpDocument.h" +#include "layers/tempImage/kpTempImage.h" +#include "layers/selections/text/kpTextSelection.h" +#include "views/manager/kpViewManager.h" +#include "kpViewScrollableContainer.h" + +//--------------------------------------------------------------------- + +// protected +QRect kpView::paintEventGetDocRect (const QRect &viewRect) const +{ +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "kpView::paintEventGetDocRect(" << viewRect << ")"; +#endif + + QRect docRect; + + // From the "we aren't sure whether to round up or round down" department: + + if (zoomLevelX () < 100 || zoomLevelY () < 100) { + docRect = transformViewToDoc (viewRect); + } + else + { + // think of a grid - you need to fully cover the zoomed-in pixels + // when docRect is zoomed back to the view later + docRect = QRect (transformViewToDoc (viewRect.topLeft ()), // round down + transformViewToDoc (viewRect.bottomRight ())); // round down + } + + if (zoomLevelX () % 100 || zoomLevelY () % 100) + { + // at least round up the bottom-right point and deal with matrix weirdness: + // - helpful because it ensures we at least cover the required area + // at e.g. 67% or 573% + docRect.setBottomRight (docRect.bottomRight () + QPoint (2, 2)); + } + +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tdocRect=" << docRect; +#endif + kpDocument *doc = document (); + if (doc) + { + docRect = docRect.intersected (doc->rect ()); + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tintersected with doc=" << docRect; + #endif + } + + return docRect; +} + +//--------------------------------------------------------------------- + +// public static +void kpView::drawTransparentBackground (QPainter *painter, + const QPoint &patternOrigin, + const QRect &viewRect, + bool isPreview) +{ +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "kpView::drawTransparentBackground() patternOrigin=" + << patternOrigin + << " viewRect=" << viewRect + << " isPreview=" << isPreview + << endl; +#endif + + const int cellSize = !isPreview ? 16 : 10; + + // TODO: % is unpredictable with negatives. + + int starty = viewRect.y (); + if ((starty - patternOrigin.y ()) % cellSize) { + starty -= ((starty - patternOrigin.y ()) % cellSize); + } + + int startx = viewRect.x (); + if ((startx - patternOrigin.x ()) % cellSize) { + startx -= ((startx - patternOrigin.x ()) % cellSize); + } + +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tstartXY=" << QPoint (startx, starty); +#endif + + painter->save (); + + // Clip to as we may draw outside it on all sides. + painter->setClipRect (viewRect, Qt::IntersectClip/*honor existing clip*/); + + for (int y = starty; y <= viewRect.bottom (); y += cellSize) + { + for (int x = startx; x <= viewRect.right (); x += cellSize) + { + bool parity = ((x - patternOrigin.x ()) / cellSize + + (y - patternOrigin.y ()) / cellSize) % 2; + QColor col; + + if (parity) + { + if (!isPreview) { + col = QColor (213, 213, 213); + } + else { + col = QColor (224, 224, 224); + } + } + else { + col = Qt::white; + } + + painter->fillRect (x, y, cellSize, cellSize, col); + } + } + + painter->restore (); +} + +//--------------------------------------------------------------------- + +// protected +void kpView::paintEventDrawCheckerBoard (QPainter *painter, const QRect &viewRect) +{ +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "kpView(" << objectName () + << ")::paintEventDrawCheckerBoard(viewRect=" << viewRect + << ") origin=" << origin (); +#endif + + kpDocument *doc = document (); + if (!doc) { + return; + } + + QPoint patternOrigin = origin (); + + if (scrollableContainer ()) + { + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tscrollableContainer: contents[XY]=" + << QPoint (scrollableContainer ()->horizontalScrollBar()->value (), + scrollableContainer ()->verticalScrollBar()->value ()) + << endl; + #endif + // Make checkerboard appear static relative to the scroll view. + // This makes it more obvious that any visible bits of the + // checkboard represent transparent pixels and not gray and white + // squares. + patternOrigin = QPoint (scrollableContainer ()->horizontalScrollBar()->value(), + scrollableContainer ()->verticalScrollBar()->value()); + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\t\tpatternOrigin=" << patternOrigin; + #endif + } + + // TODO: this static business doesn't work yet + patternOrigin = QPoint (0, 0); + + drawTransparentBackground (painter, patternOrigin, viewRect); +} + +//--------------------------------------------------------------------- + +// protected +void kpView::paintEventDrawSelection (QImage *destPixmap, const QRect &docRect) +{ +#if DEBUG_KP_VIEW_RENDERER && 1 || 0 + qCDebug(kpLogViews) << "kpView::paintEventDrawSelection() docRect=" << docRect; +#endif + + kpDocument *doc = document (); + if (!doc) + { + #if DEBUG_KP_VIEW_RENDERER && 1 || 0 + qCDebug(kpLogViews) << "\tno doc - abort"; + #endif + return; + } + + kpAbstractSelection *sel = doc->selection (); + if (!sel) + { + #if DEBUG_KP_VIEW_RENDERER && 1 || 0 + qCDebug(kpLogViews) << "\tno sel - abort"; + #endif + return; + } + + + // + // Draw selection pixmap (if there is one) + // +#if DEBUG_KP_VIEW_RENDERER && 1 || 0 + qCDebug(kpLogViews) << "\tdraw sel pixmap @ " << sel->topLeft (); +#endif + sel->paint (destPixmap, docRect); + + + // + // Draw selection border + // + + kpViewManager *vm = viewManager (); +#if DEBUG_KP_VIEW_RENDERER && 1 || 0 + qCDebug(kpLogViews) << "\tsel border visible=" + << vm->selectionBorderVisible (); +#endif + if (vm->selectionBorderVisible ()) + { + sel->paintBorder (destPixmap, docRect, vm->selectionBorderFinished ()); + } + + + // + // Draw text cursor + // + + // TODO: It would be nice to display the text cursor even if it's not + // within the text box (this can happen if the text box is too + // small for the text it contains). + // + // However, too much selection repaint code assumes that it + // only paints inside its kpAbstractSelection::boundingRect(). + auto *textSel = dynamic_cast (sel); + if (textSel && + vm->textCursorEnabled () && + (vm->textCursorBlinkState () || + // For the current main window: + // As long as _any_ view has focus, blink _all_ views not just the + // one with focus. + !vm->hasAViewWithFocus ())) // sync: call will break when vm is not held by 1 mainWindow + { + QRect rect = vm->textCursorRect (); + rect = rect.intersected (textSel->textAreaRect ()); + if (!rect.isEmpty ()) + { + kpPixmapFX::fillRect(destPixmap, + rect.x () - docRect.x (), rect.y () - docRect.y (), + rect.width (), rect.height (), + kpColor::LightGray, kpColor::DarkGray); + } + } +} + +//--------------------------------------------------------------------- + +// protected +void kpView::paintEventDrawSelectionResizeHandles (const QRect &clipRect) +{ +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "kpView::paintEventDrawSelectionResizeHandles(" + << clipRect << ")"; +#endif + + if (!selectionLargeEnoughToHaveResizeHandles ()) + { + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tsel not large enough to have resize handles"; + #endif + return; + } + + kpViewManager *vm = viewManager (); + if (!vm || !vm->selectionBorderVisible () || !vm->selectionBorderFinished ()) + { + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tsel border not visible or not finished"; + #endif + + return; + } + + const QRect selViewRect = selectionViewRect (); +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tselViewRect=" << selViewRect; +#endif + if (!selViewRect.intersects (clipRect)) + { + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tdoesn't intersect viewRect"; + #endif + return; + } + + QRegion selResizeHandlesRegion = selectionResizeHandlesViewRegion (true/*for renderer*/); +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tsel resize handles view region=" + << selResizeHandlesRegion << endl; +#endif + + QPainter painter(this); + painter.setPen(Qt::black); + painter.setBrush(Qt::cyan); + + for (const QRect &r : selResizeHandlesRegion) + painter.drawRect(r); +} + +//--------------------------------------------------------------------- + +// protected +void kpView::paintEventDrawTempImage (QImage *destPixmap, const QRect &docRect) +{ + kpViewManager *vm = viewManager (); + if (!vm) { + return; + } + + const kpTempImage *tpi = vm->tempImage (); +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "kpView::paintEventDrawTempImage() tempImage=" + << tpi + << " isVisible=" + << (tpi ? tpi->isVisible (vm) : false) + << endl; +#endif + + if (!tpi || !tpi->isVisible (vm)) { + return; + } + + tpi->paint (destPixmap, docRect); +} + +//--------------------------------------------------------------------- + +// protected +void kpView::paintEventDrawGridLines (QPainter *painter, const QRect &viewRect) +{ + int hzoomMultiple = zoomLevelX () / 100; + int vzoomMultiple = zoomLevelY () / 100; + + painter->setPen(Qt::gray); + + // horizontal lines + int starty = viewRect.top(); + if (starty % vzoomMultiple) { + starty = (starty + vzoomMultiple) / vzoomMultiple * vzoomMultiple; + } + + for (int y = starty; y <= viewRect.bottom(); y += vzoomMultiple) { + painter->drawLine(viewRect.left(), y, viewRect.right(), y); + } + + // vertical lines + int startx = viewRect.left(); + if (startx % hzoomMultiple) { + startx = (startx + hzoomMultiple) / hzoomMultiple * hzoomMultiple; + } + + for (int x = startx; x <= viewRect.right(); x += hzoomMultiple) { + painter->drawLine(x, viewRect.top (), x, viewRect.bottom()); + } +} + +//--------------------------------------------------------------------- + +// This is called "_Unclipped" because it may draw outside of +// . +// +// There are 2 reasons for doing so: +// +// A. If, for instance: +// +// 1. = QRect (0, 0, 2, 3) [top-left of the view] +// 2. zoomLevelX() == 800 +// 3. zoomLevelY() == 800 +// +// Then, the local variable will be QRect (0, 0, 1, 1). +// When the part of the document corresponding to +// (a single document pixel) is drawn with QPainter::scale(), the +// view rectangle QRect (0, 0, 7, 7) will be overwritten due to the +// 8x zoom. This view rectangle is bigger than . +// +// We can't use QPainter::setClipRect() since it is buggy in Qt 4.3.1 +// and clips too many pixels when used in combination with scale() +// [qt-bugs@trolltech.com issue N181038]. ==> MK 10.2.2011 - fixed since Qt-4.4.4 +// +// B. paintEventGetDocRect() may, by design, return a larger document +// rectangle than what corresponds to, if the zoom levels +// are not perfectly divisible by 100. +// +// This over-drawing is dangerous -- see the comments in paintEvent(). +// This over-drawing is only safe from Qt's perspective since Qt +// automatically clips all drawing in paintEvent() (which calls us) to +// QPaintEvent::region(). +void kpView::paintEventDrawDoc_Unclipped (const QRect &viewRect) +{ +#if DEBUG_KP_VIEW_RENDERER + QTime timer; + timer.start (); + qCDebug(kpLogViews) << "\tviewRect=" << viewRect; +#endif + + kpViewManager *vm = viewManager (); + const kpDocument *doc = document (); + + Q_ASSERT (vm); + Q_ASSERT (doc); + + if (viewRect.isEmpty ()) { + return; + } + + QRect docRect = paintEventGetDocRect (viewRect); + +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tdocRect=" << docRect; +#endif + + QPainter painter (this); + //painter.setCompositionMode(QPainter::CompositionMode_Source); + + QImage docPixmap; + bool tempImageWillBeRendered = false; + + // LOTODO: I think being empty would be a bug. + if (!docRect.isEmpty ()) + { + docPixmap = doc->getImageAt (docRect); + + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tdocPixmap.hasAlphaChannel()=" + << docPixmap.hasAlphaChannel (); + #endif + + tempImageWillBeRendered = + (!doc->selection () && + vm->tempImage () && + vm->tempImage ()->isVisible (vm) && + docRect.intersects (vm->tempImage ()->rect ())); + + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\ttempImageWillBeRendered=" << tempImageWillBeRendered + << " (sel=" << doc->selection () + << " tempImage=" << vm->tempImage () + << " tempImage.isVisible=" << (vm->tempImage () ? vm->tempImage ()->isVisible (vm) : false) + << " docRect.intersects(tempImage.rect)=" << (vm->tempImage () ? docRect.intersects (vm->tempImage ()->rect ()) : false) + << ")" + << endl; + #endif + } + + + // + // Draw checkboard for transparent images and/or views with borders + // + + if (docPixmap.hasAlphaChannel() || + (tempImageWillBeRendered && vm->tempImage ()->paintMayAddMask ())) + { + paintEventDrawCheckerBoard (&painter, viewRect); + } + + if (!docRect.isEmpty ()) + { + // + // Draw docPixmap + tempImage + // + + if (doc->selection ()) + { + paintEventDrawSelection (&docPixmap, docRect); + } + else if (tempImageWillBeRendered) + { + paintEventDrawTempImage (&docPixmap, docRect); + } + + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\torigin=" << origin (); + #endif + // Blit scaled version of docPixmap + tempImage. + #if DEBUG_KP_VIEW_RENDERER && 1 + QTime scaleTimer; scaleTimer.start (); + #endif + // This is the only troublesome part of the method that draws unclipped. + painter.translate (origin ().x (), origin ().y ()); + painter.scale (double (zoomLevelX ()) / 100.0, + double (zoomLevelY ()) / 100.0); + painter.drawImage (docRect, docPixmap); + //painter.resetMatrix (); // back to 1-1 scaling + #if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tscale time=" << scaleTimer.elapsed (); + #endif + + } // if (!docRect.isEmpty ()) { + +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tdrawDocRect done in: " << timer.restart () << "ms"; +#endif +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpView::paintEvent (QPaintEvent *e) +{ + // sync: kpViewPrivate + // WARNING: document(), viewManager() and friends might be 0 in this method. + // TODO: I'm not 100% convinced that we always check if their friends are 0. + +#if DEBUG_KP_VIEW_RENDERER && 1 + QTime timer; + timer.start (); +#endif + + kpViewManager *vm = viewManager (); + +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "kpView(" << objectName () << ")::paintEvent() vm=" << (bool) vm + << " queueUpdates=" << (vm && vm->queueUpdates ()) + << " fastUpdates=" << (vm && vm->fastUpdates ()) + << " viewRect=" << e->rect () + << " topLeft=" << QPoint (x (), y ()) + << endl; +#endif + + if (!vm) { + return; + } + + if (vm->queueUpdates ()) + { + // OPT: if this update was due to the document, + // use document coordinates (in case of a zoom change in + // which view coordinates become out of date) + addToQueuedArea (e->region ()); + return; + } + + kpDocument *doc = document (); + if (!doc) { + return; + } + + + // It seems that e->region() is already clipped by Qt to the visible + // part of the view (which could be quite small inside a scrollview). + const QRegion viewRegion = e->region (); + + // Draw all of the requested regions of the document _before_ drawing + // the grid lines, buddy rectangle and selection resize handles. + // This ordering is important since paintEventDrawDoc_Unclipped() + // may draw outside of the view rectangle passed to it. + // + // To illustrate this, suppose we changed each iteration of the loop + // to call paintEventDrawDoc_Unclipped() _and_ then, + // paintEventDrawGridLines(). If there are 2 or more iterations of this + // loop, paintEventDrawDoc_Unclipped() in one iteration may draw over + // parts of nearby grid lines (which were drawn in a previous iteration) + // with document pixels. Those grid line parts are probably not going to + // be redrawn, so will appear to be missing. + for (const QRect &r : viewRegion) + paintEventDrawDoc_Unclipped (r); + + // + // Draw Grid Lines + // + + if ( isGridShown() ) + { + QPainter painter(this); + for (const QRect &r : viewRegion) + paintEventDrawGridLines(&painter, r); + } + + const QRect r = buddyViewScrollableContainerRectangle(); + if ( !r.isEmpty() ) + { + QPainter painter(this); + + painter.setPen(QPen(Qt::lightGray, 1/*width*/, Qt::DotLine)); + painter.setBackground(Qt::darkGray); + painter.setBackgroundMode(Qt::OpaqueMode); + + painter.drawRect(r.x(), r.y(), r.width() - 1, r.height() - 1); + } + + if (doc->selection ()) + { + // Draw resize handles on top of possible grid lines + paintEventDrawSelectionResizeHandles (e->rect ()); + } + +#if DEBUG_KP_VIEW_RENDERER && 1 + qCDebug(kpLogViews) << "\tall done in: " << timer.restart () << "ms"; +#endif +} + +//--------------------------------------------------------------------- diff --git a/views/kpView_Selections.cpp b/views/kpView_Selections.cpp new file mode 100644 index 0000000..669c79d --- /dev/null +++ b/views/kpView_Selections.cpp @@ -0,0 +1,381 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_VIEW 0 +#define DEBUG_KP_VIEW_RENDERER ((DEBUG_KP_VIEW && 1) || 0) + + +#include "views/kpView.h" +#include "kpViewPrivate.h" + +#include "layers/selections/kpAbstractSelection.h" +#include "layers/selections/text/kpTextSelection.h" +#include "tools/kpTool.h" + + +// public +QRect kpView::selectionViewRect () const +{ + return selection () ? + transformDocToView (selection ()->boundingRect ()) : + QRect (); + +} + + +// public +QPoint kpView::mouseViewPointRelativeToSelection (const QPoint &viewPoint) const +{ + if (!selection ()) { + return KP_INVALID_POINT; + } + + return mouseViewPoint (viewPoint) - transformDocToView (selection ()->topLeft ()); +} + +// public +bool kpView::mouseOnSelection (const QPoint &viewPoint) const +{ + const QRect selViewRect = selectionViewRect (); + if (!selViewRect.isValid ()) { + return false; + } + + return selViewRect.contains (mouseViewPoint (viewPoint)); +} + + +// public +int kpView::textSelectionMoveBorderAtomicSize () const +{ + if (!textSelection ()) { + return 0; + } + + return qMax (4, zoomLevelX () / 100); +} + +// public +bool kpView::mouseOnSelectionToMove (const QPoint &viewPoint) const +{ + if (!mouseOnSelection (viewPoint)) { + return false; + } + + if (!textSelection ()) { + return true; + } + + if (mouseOnSelectionResizeHandle (viewPoint)) { + return false; + } + + + const QPoint viewPointRelSel = mouseViewPointRelativeToSelection (viewPoint); + + // Middle point should always be selectable + const QPoint selCenterDocPoint = selection ()->boundingRect ().center (); + if (tool () && + tool ()->calculateCurrentPoint () == selCenterDocPoint) + { + return false; + } + + + const int atomicSize = textSelectionMoveBorderAtomicSize (); + const QRect selViewRect = selectionViewRect (); + + return (viewPointRelSel.x () < atomicSize || + viewPointRelSel.x () >= selViewRect.width () - atomicSize || + viewPointRelSel.y () < atomicSize || + viewPointRelSel.y () >= selViewRect.height () - atomicSize); +} + +//--------------------------------------------------------------------- + +// protected +bool kpView::selectionLargeEnoughToHaveResizeHandlesIfAtomicSize (int atomicSize) const +{ + if (!selection ()) { + return false; + } + + const QRect selViewRect = selectionViewRect (); + + return (selViewRect.width () >= atomicSize * 5 || + selViewRect.height () >= atomicSize * 5); +} + +//--------------------------------------------------------------------- + +// public +int kpView::selectionResizeHandleAtomicSize () const +{ + int atomicSize = qMin (13, qMax (9, zoomLevelX () / 100)); + while (atomicSize > 0 && + !selectionLargeEnoughToHaveResizeHandlesIfAtomicSize (atomicSize)) + { + atomicSize--; + } + + return atomicSize; +} + +//--------------------------------------------------------------------- + +// public +bool kpView::selectionLargeEnoughToHaveResizeHandles () const +{ + return (selectionResizeHandleAtomicSize () > 0); +} + +//--------------------------------------------------------------------- + +// public +QRegion kpView::selectionResizeHandlesViewRegion (bool forRenderer) const +{ + const int atomicLength = selectionResizeHandleAtomicSize (); + if (atomicLength <= 0) { + return {}; + } + + + // HACK: At low zoom (e.g. 100%), resize handles will probably be too + // big and overlap text / cursor / too much of selection. + // + // So limit the _visual_ size of handles at low zoom. The + // handles' grab area remains the same for usability; so yes, + // there are a few pixels that don't look grabable but they are. + // + // The real solution is to be able to partially render the + // handles outside of the selection view rect. If not possible, + // at least for text boxes, render text on top of handles. + int normalAtomicLength = atomicLength; + int vertEdgeAtomicLength = atomicLength; + if (forRenderer && selection ()) + { + if (zoomLevelX () <= 150) + { + if (normalAtomicLength > 1) { + normalAtomicLength--; + } + + if (vertEdgeAtomicLength > 1) { + vertEdgeAtomicLength--; + } + } + + // 1 line of text? + if (textSelection () && textSelection ()->textLines ().size () == 1) + { + if (zoomLevelX () <= 150) { + vertEdgeAtomicLength = qMin (vertEdgeAtomicLength, qMax (2, zoomLevelX () / 100)); + } + else if (zoomLevelX () <= 250) { + vertEdgeAtomicLength = qMin (vertEdgeAtomicLength, qMax (3, zoomLevelX () / 100)); + } + } + } + + + const QRect selViewRect = selectionViewRect (); + QRegion ret; + + // top left + ret += QRect(0, 0, normalAtomicLength, normalAtomicLength); + + // top middle + ret += QRect((selViewRect.width() - normalAtomicLength) / 2, 0, + normalAtomicLength, normalAtomicLength); + + // top right + ret += QRect(selViewRect.width() - normalAtomicLength - 1, 0, + normalAtomicLength, normalAtomicLength); + + // left middle + ret += QRect(0, (selViewRect.height() - vertEdgeAtomicLength) / 2, + vertEdgeAtomicLength, vertEdgeAtomicLength); + + // right middle + ret += QRect(selViewRect.width() - vertEdgeAtomicLength - 1, (selViewRect.height() - vertEdgeAtomicLength) / 2, + vertEdgeAtomicLength, vertEdgeAtomicLength); + + // bottom left + ret += QRect(0, selViewRect.height() - normalAtomicLength - 1, + normalAtomicLength, normalAtomicLength); + + // bottom middle + ret += QRect((selViewRect.width() - normalAtomicLength) / 2, selViewRect.height() - normalAtomicLength - 1, + normalAtomicLength, normalAtomicLength); + + // bottom right + ret += QRect(selViewRect.width() - normalAtomicLength - 1, selViewRect.height() - normalAtomicLength - 1, + normalAtomicLength, normalAtomicLength); + + ret.translate (selViewRect.x (), selViewRect.y ()); + ret = ret.intersected (selViewRect); + + return ret; +} + +//--------------------------------------------------------------------- + +// public +// REFACTOR: use QFlags as the return type for better type safety. +int kpView::mouseOnSelectionResizeHandle (const QPoint &viewPoint) const +{ +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "kpView::mouseOnSelectionResizeHandle(viewPoint=" + << viewPoint << ")" << endl; +#endif + + if (!mouseOnSelection (viewPoint)) + { + #if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tmouse not on sel"; + #endif + return 0; + } + + + const QRect selViewRect = selectionViewRect (); +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tselViewRect=" << selViewRect; +#endif + + + const int atomicLength = selectionResizeHandleAtomicSize (); +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tatomicLength=" << atomicLength; +#endif + + if (atomicLength <= 0) + { + #if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tsel not large enough to have resize handles"; + #endif + // Want to make it possible to move a small selection + return 0; + } + + + const QPoint viewPointRelSel = mouseViewPointRelativeToSelection (viewPoint); +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tviewPointRelSel=" << viewPointRelSel; +#endif + + +#define LOCAL_POINT_IN_BOX_AT(x,y) \ + QRect ((x), (y), atomicLength, atomicLength).contains (viewPointRelSel) + + // Favour the bottom & right and the corners. + if (LOCAL_POINT_IN_BOX_AT (selViewRect.width () - atomicLength, + selViewRect.height () - atomicLength)) + { + return kpView::Bottom | kpView::Right; + } + + if (LOCAL_POINT_IN_BOX_AT (selViewRect.width () - atomicLength, 0)) + { + return kpView::Top | kpView::Right; + } + + if (LOCAL_POINT_IN_BOX_AT (0, selViewRect.height () - atomicLength)) + { + return kpView::Bottom | kpView::Left; + } + + if (LOCAL_POINT_IN_BOX_AT (0, 0)) + { + return kpView::Top | kpView::Left; + } + + if (LOCAL_POINT_IN_BOX_AT (selViewRect.width () - atomicLength, + (selViewRect.height () - atomicLength) / 2)) + { + return kpView::Right; + } + + if (LOCAL_POINT_IN_BOX_AT ((selViewRect.width () - atomicLength) / 2, + selViewRect.height () - atomicLength)) + { + return kpView::Bottom; + } + + if (LOCAL_POINT_IN_BOX_AT ((selViewRect.width () - atomicLength) / 2, 0)) + { + return kpView::Top; + } + + if (LOCAL_POINT_IN_BOX_AT (0, (selViewRect.height () - atomicLength) / 2)) + { + return kpView::Left; + } + else + { + #if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tnot on sel resize handle"; + #endif + return 0; + } +#undef LOCAL_POINT_IN_BOX_AT +} + +// public +bool kpView::mouseOnSelectionToSelectText (const QPoint &viewPoint) const +{ +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "kpView::mouseOnSelectionToSelectText(viewPoint=" + << viewPoint << ")" << endl; +#endif + + if (!mouseOnSelection (viewPoint)) + { + #if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tmouse non on sel"; + #endif + return false; + } + + if (!textSelection ()) + { + #if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tsel not text"; + #endif + return false; + } + +#if DEBUG_KP_VIEW + qCDebug(kpLogViews) << "\tmouse on sel: to move=" << mouseOnSelectionToMove () + << " to resize=" << mouseOnSelectionResizeHandle () + << endl; +#endif + + return (!mouseOnSelectionToMove (viewPoint) && + !mouseOnSelectionResizeHandle (viewPoint)); +} diff --git a/views/kpZoomedThumbnailView.cpp b/views/kpZoomedThumbnailView.cpp new file mode 100644 index 0000000..8a4b749 --- /dev/null +++ b/views/kpZoomedThumbnailView.cpp @@ -0,0 +1,144 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_ZOOMED_THUMBNAIL_VIEW 0 + + +#include "views/kpZoomedThumbnailView.h" + +#include "kpLogCategories.h" +#include "document/kpDocument.h" +#include "views/manager/kpViewManager.h" + +#include + +//-------------------------------------------------------------------------------- + +kpZoomedThumbnailView::kpZoomedThumbnailView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent ) + + : kpThumbnailView (document, toolToolBar, viewManager, + buddyView, + scrollableContainer, + parent) +{ + // Call to virtual function - this is why the class is sealed + adjustToEnvironment (); +} + + +kpZoomedThumbnailView::~kpZoomedThumbnailView () = default; + + +// public virtual [base kpThumbnailView] +QString kpZoomedThumbnailView::caption () const +{ + return i18n ("%1% - Thumbnail", zoomLevelX ()); +} + + +// public slot virtual [base kpView] +void kpZoomedThumbnailView::adjustToEnvironment () +{ +#if DEBUG_KP_ZOOMED_THUMBNAIL_VIEW + qCDebug(kpLogViews) << "kpZoomedThumbnailView(" << name () + << ")::adjustToEnvironment()" + << " width=" << width () + << " height=" << height () + << endl; +#endif + + if (!document ()) { + return; + } + +#if DEBUG_KP_ZOOMED_THUMBNAIL_VIEW + qCDebug(kpLogViews) << "\tdoc: width=" << document ()->width () + << " height=" << document ()->height () + << endl; +#endif + + if (document ()->width () <= 0 || document ()->height () <= 0) + { + qCCritical(kpLogViews) << "kpZoomedThumbnailView::adjustToEnvironment() doc:" + << " width=" << document ()->width () + << " height=" << document ()->height (); + return; + } + + + int hzoom = qMax (1, width () * 100 / document ()->width ()); + int vzoom = qMax (1, height () * 100 / document ()->height ()); + + // keep aspect ratio + if (hzoom < vzoom) { + vzoom = hzoom; + } + else { + hzoom = vzoom; + } + +#if DEBUG_KP_ZOOMED_THUMBNAIL_VIEW && 1 + qCDebug(kpLogViews) << "\tproposed zoom=" << hzoom; +#endif + if (hzoom > 100 || vzoom > 100) + { + #if DEBUG_KP_ZOOMED_THUMBNAIL_VIEW && 1 + qCDebug(kpLogViews) << "\twon't magnify - setting zoom to 100%"; + #endif + hzoom = 100; + vzoom = 100; + } + + + if (viewManager ()) { + viewManager ()->setQueueUpdates (); + } + + { + setZoomLevel (hzoom, vzoom); + + setOrigin (QPoint ((width () - zoomedDocWidth ()) / 2, + (height () - zoomedDocHeight ()) / 2)); + setMaskToCoverDocument (); + + if (viewManager ()) { + viewManager ()->updateView (this); + } + } + + if (viewManager ()) { + viewManager ()->restoreQueueUpdates (); + } +} + + diff --git a/views/kpZoomedThumbnailView.h b/views/kpZoomedThumbnailView.h new file mode 100644 index 0000000..e02e14e --- /dev/null +++ b/views/kpZoomedThumbnailView.h @@ -0,0 +1,95 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_ZOOMED_THUMBNAIL_VIEW_H +#define KP_ZOOMED_THUMBNAIL_VIEW_H + + +#include "kpThumbnailView.h" + + +/** + * @short Zoomed thumbnail view of a document. + * + * This is a zoomed thumbnail view of a document. Unlike @ref kpZoomedView, + * it never resizes itself. Instead, it changes its zoom level to + * accommodate the display of entire document in the view, while + * maintaining aspect. + * + * Do not call setZoomLevel() nor setOrigin(). + * + * This class is sealed. Do not derive from it. + * + * @author Clarence Dang + */ +/*sealed*/ class kpZoomedThumbnailView : public kpThumbnailView +{ +Q_OBJECT + +public: + /** + * Constructs a zoomed thumbnail view. + */ + kpZoomedThumbnailView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent); + + /** + * Destructs a zoomed thumbnail view. + */ + ~kpZoomedThumbnailView () override; + + + /** + * Implements @ref kpThumbnailView. + */ + QString caption () const override; + + +public slots: + /** + * Changes its zoom level to accommodate the display of entire document + * in the view. It maintains aspect by changing the origin and mask. + * + * Call this if the size of the document changes. + * Already called by @ref kpThumbnailView resizeEvent(). + * + * Implements @ref kpView. + */ + void adjustToEnvironment () override; + + +private: + struct kpZoomedThumbnailViewPrivate *d; +}; + + +#endif // KP_ZOOMED_THUMBNAIL_VIEW_H diff --git a/views/kpZoomedView.cpp b/views/kpZoomedView.cpp new file mode 100644 index 0000000..51bb561 --- /dev/null +++ b/views/kpZoomedView.cpp @@ -0,0 +1,101 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_ZOOMED_VIEW 0 + + +#include "views/kpZoomedView.h" + +#include "kpLogCategories.h" + +#include "document/kpDocument.h" +#include "views/manager/kpViewManager.h" + + +kpZoomedView::kpZoomedView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent) + + : kpView (document, toolToolBar, viewManager, + buddyView, + scrollableContainer, + parent) +{ + // Call to virtual function - this is why the class is sealed + adjustToEnvironment (); +} + +kpZoomedView::~kpZoomedView () = default; + + +// public virtual [base kpView] +void kpZoomedView::setZoomLevel (int hzoom, int vzoom) +{ +#if DEBUG_KP_ZOOMED_VIEW + qCDebug(kpLogViews) << "kpZoomedView(" << name () << ")::setZoomLevel(" + << hzoom << "," << vzoom << ")" << endl; +#endif + + if (viewManager ()) { + viewManager ()->setQueueUpdates (); + } + + { + kpView::setZoomLevel (hzoom, vzoom); + + adjustToEnvironment (); + } + + if (viewManager ()) { + viewManager ()->restoreQueueUpdates (); + } +} + + +// public slot virtual [base kpView] +void kpZoomedView::adjustToEnvironment () +{ +#if DEBUG_KP_ZOOMED_VIEW + qCDebug(kpLogViews) << "kpZoomedView(" << name () << ")::adjustToEnvironment()" + << " doc: width=" << document ()->width () + << " height=" << document ()->height () + << endl; +#endif + + if (document ()) + { + // TODO: use zoomedDocWidth() & zoomedDocHeight()? + resize (static_cast (transformDocToViewX (document ()->width ())), + static_cast (transformDocToViewY (document ()->height ()))); + } +} + + diff --git a/views/kpZoomedView.h b/views/kpZoomedView.h new file mode 100644 index 0000000..0231289 --- /dev/null +++ b/views/kpZoomedView.h @@ -0,0 +1,96 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_ZOOMED_VIEW_H +#define KP_ZOOMED_VIEW_H + + +#include "views/kpView.h" + + +/** + * @short Zoomed view of a document. Suitable as an ordinary editing view. + * + * This is a zoomed view of a document. It resizes according to the size + * of the document and the zoom level. Do not manually call resize() for + * this reason. + * + * It is suitable as an ordinary editing view. + * + * Do not call setOrigin(). REFACTOR: this is bad class design - derived classes should only add functionality - not remove + * + * This class is sealed. Do not derive from it. REFACTOR: this is also bad class design + * + * @author Clarence Dang + */ +/*sealed*/ class kpZoomedView : public kpView +{ +Q_OBJECT + +public: + /** + * Constructs a zoomed view. + */ + kpZoomedView (kpDocument *document, + kpToolToolBar *toolToolBar, + kpViewManager *viewManager, + kpView *buddyView, + kpViewScrollableContainer *scrollableContainer, + QWidget *parent); + + /** + * Destructs an unzoomed view. + */ + ~kpZoomedView () override; + + + /** + * Extends @kpView. Calls adjustToEnvironment(). + */ + void setZoomLevel (int hzoom, int vzoom) override; + + +public slots: + /** + * Resizes itself so that the entire document in the zoom level fits + * almost perfectly. + * + * Call this if the size of the document changes. + * Already called by setZoomLevel(). + * + * Implements @ref kpView. + */ + void adjustToEnvironment () override; + + +private: + struct kpZoomedViewPrivate *d; +}; + + +#endif // KP_ZOOMED_VIEW_H diff --git a/views/manager/kpViewManager.cpp b/views/manager/kpViewManager.cpp new file mode 100644 index 0000000..49572ea --- /dev/null +++ b/views/manager/kpViewManager.cpp @@ -0,0 +1,356 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_VIEW_MANAGER 0 + + +#include "views/manager/kpViewManager.h" +#include "kpViewManagerPrivate.h" + +#include +#include +#include + +#include "kpLogCategories.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "layers/tempImage/kpTempImage.h" +#include "layers/selections/text/kpTextSelection.h" +#include "tools/kpTool.h" +#include "views/kpView.h" + +//--------------------------------------------------------------------- + +kpViewManager::kpViewManager (kpMainWindow *mainWindow) + : d (new kpViewManagerPrivate ()) +{ + Q_ASSERT (mainWindow); + + d->mainWindow = mainWindow; + + // d->views + d->viewUnderCursor = nullptr; + + // d->cursor + + d->tempImage = nullptr; + + d->selectionBorderVisible = false; + d->selectionBorderFinished = false; + + + d->textCursorBlinkTimer = nullptr; + + d->textCursorRow = -1; + d->textCursorCol = -1; + + d->textCursorBlinkState = true; + + + d->queueUpdatesCounter = d->fastUpdatesCounter = 0; + + d->inputMethodEnabled = false; +} + +//--------------------------------------------------------------------- + +kpViewManager::~kpViewManager () +{ + unregisterAllViews (); + + delete d->tempImage; + delete d; +} + +//--------------------------------------------------------------------- + +// private +kpDocument *kpViewManager::document () const +{ + return d->mainWindow->document (); +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::registerView (kpView *view) +{ +#if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "kpViewManager::registerView (" << view << ")"; +#endif + Q_ASSERT (view); + Q_ASSERT (!d->views.contains (view)); + +#if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "\tadded view"; +#endif + view->setCursor (d->cursor); + d->views.append (view); +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::unregisterView (kpView *view) +{ + Q_ASSERT (view); + Q_ASSERT (d->views.contains (view)); + + if (view == d->viewUnderCursor) { + d->viewUnderCursor = nullptr; + } + + view->unsetCursor (); + d->views.removeAll (view); +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::unregisterAllViews () +{ + d->views.clear (); +} + +//--------------------------------------------------------------------- + +// public +kpView *kpViewManager::viewUnderCursor (bool usingQt) const +{ + if (!usingQt) + { + Q_ASSERT (!d->viewUnderCursor || d->views.contains (d->viewUnderCursor)); + return d->viewUnderCursor; + } + + + foreach (kpView *view, d->views) + if ( view->underMouse() ) + return view; + + return nullptr; +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::setViewUnderCursor (kpView *view) +{ +#if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "kpViewManager::setViewUnderCursor (" + << (view ? view->objectName () : "(none)") << ")" + << " old=" << (d->viewUnderCursor ? d->viewUnderCursor->objectName () : "(none)"); +#endif + if (view == d->viewUnderCursor) { + return; + } + + d->viewUnderCursor = view; + + if (d->viewUnderCursor) { + d->viewUnderCursor->setAttribute (Qt::WA_InputMethodEnabled, d->inputMethodEnabled); + } + + if (!d->viewUnderCursor) + { + // Hide the brush if the mouse cursor just left the view. + if (d->tempImage && d->tempImage->isBrush ()) + { + #if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "\thiding brush pixmap since cursor left view"; + #endif + updateViews (d->tempImage->rect ()); + } + } + else + { + if (d->mainWindow->tool ()) + { + #if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "\tnotify tool that something changed below cursor"; + #endif + d->mainWindow->tool ()->somethingBelowTheCursorChanged (); + } + } +} + +//--------------------------------------------------------------------- + +// public +bool kpViewManager::hasAViewWithFocus () const +{ + foreach (kpView *view, d->views) + if ( view->isActiveWindow() ) + return true; + + return false; +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::setCursor(const QCursor &cursor) +{ + foreach (kpView *view, d->views) + view->setCursor(cursor); + + d->cursor = cursor; +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::unsetCursor() +{ + foreach (kpView *view, d->views) + view->unsetCursor(); + + d->cursor = QCursor(); +} + +//--------------------------------------------------------------------- + +// public +const kpTempImage *kpViewManager::tempImage () const +{ + return d->tempImage; +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::setTempImage (const kpTempImage &tempImage) +{ +#if DEBUG_KP_VIEW_MANAGER + qCDebug(kpLogViews) << "kpViewManager::setTempImage(isBrush=" + << tempImage.isBrush () + << ",topLeft=" << tempImage.topLeft () + << ",image.rect=" << tempImage.image ().rect () + << ")"; +#endif + + QRect oldRect; + + if (d->tempImage) + { + oldRect = d->tempImage->rect (); + delete d->tempImage; + d->tempImage = nullptr; + } + + d->tempImage = new kpTempImage (tempImage); + + setQueueUpdates (); + { + if (oldRect.isValid ()) { + updateViews (oldRect); + } + updateViews (d->tempImage->rect ()); + } + restoreQueueUpdates (); +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::invalidateTempImage () +{ + if (!d->tempImage) { + return; + } + + QRect oldRect = d->tempImage->rect (); + + delete d->tempImage; + d->tempImage = nullptr; + + updateViews (oldRect); +} + +//--------------------------------------------------------------------- + +// public +bool kpViewManager::selectionBorderVisible () const +{ + return d->selectionBorderVisible; +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::setSelectionBorderVisible (bool yes) +{ + if (d->selectionBorderVisible == yes) { + return; + } + + d->selectionBorderVisible = yes; + + if (document ()->selection ()) { + updateViews (document ()->selection ()->boundingRect ()); + } +} + +//--------------------------------------------------------------------- + +// public +bool kpViewManager::selectionBorderFinished () const +{ + return d->selectionBorderFinished; +} + +//--------------------------------------------------------------------- + +// public +void kpViewManager::setSelectionBorderFinished (bool yes) +{ + if (d->selectionBorderFinished == yes) { + return; + } + + d->selectionBorderFinished = yes; + + if (document ()->selection ()) { + updateViews (document ()->selection ()->boundingRect ()); + } +} + +//--------------------------------------------------------------------- + +void kpViewManager::setInputMethodEnabled (bool inputMethodEnabled) +{ + d->inputMethodEnabled = inputMethodEnabled; + if (d->viewUnderCursor) { + d->viewUnderCursor->setAttribute (Qt::WA_InputMethodEnabled, inputMethodEnabled); + } +} + +//--------------------------------------------------------------------- + diff --git a/views/manager/kpViewManager.h b/views/manager/kpViewManager.h new file mode 100644 index 0000000..f1d5ab9 --- /dev/null +++ b/views/manager/kpViewManager.h @@ -0,0 +1,254 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_VIEW_MANAGER_H +#define KP_VIEW_MANAGER_H + + +#include + + +class QCursor; +class QRegion; +class QRect; + +class kpDocument; +class kpView; +class kpMainWindow; +class kpTempImage; + + +class kpViewManager : public QObject +{ +Q_OBJECT + +public: + kpViewManager (kpMainWindow *mainWindow); + ~kpViewManager () override; + + +private: + kpDocument *document () const; + + +// +// Registering views +// + +public: + void registerView (kpView *view); + void unregisterView (kpView *view); + void unregisterAllViews (); + + +// +// View +// + +public: + kpView *viewUnderCursor (bool usingQt = false) const; + + // + // QWidget::hasMouse() is unreliable: + // + // "bool QWidget::hasMouse () const + // ... See the "underMouse" property for details. + // . + // . + // . + // bool underMouse + // ... This value is not updated properly during drag and drop operations." + // + // i.e. it's possible that hasMouse() returns false in a mousePressEvent()! + // + // This hack needs to be called from kpView so that viewUnderCursor() works + // as a reasonable replacement (although there is at least one case where + // it still won't work - just after a fake drag onto the view). + // + void setViewUnderCursor (kpView *view); + + +public: + // Returns whether at least 1 view has keyboard focus. + // A pointer is not returned to such a view because more than one can + // have focus at the same time (see QWidget::isActiveWindow()). + bool hasAViewWithFocus () const; + + +// +// Mouse Cursors +// + +public: + void setCursor (const QCursor &cursor); + void unsetCursor (); + + +// +// Temp Image +// + +public: + const kpTempImage *tempImage () const; + void setTempImage (const kpTempImage &tempImage); + void invalidateTempImage (); + + +// +// Selections +// + +public: + bool selectionBorderVisible () const; + void setSelectionBorderVisible (bool yes = true); + + bool selectionBorderFinished () const; + void setSelectionBorderFinished (bool yes = true); + + +// +// Text Cursor +// + +public: + // If you enable the text cursor, a timer will start ticking to update + // the text cursor. If no text selection is active, the update will + // be a NOP but the timer will still tick and textCursorEnabled() will + // still return true. + bool textCursorEnabled () const; + void setTextCursorEnabled (bool yes = true); + + bool textCursorBlinkState () const; + void setTextCursorBlinkState (bool on = true); + + // By convention, a text box with no content (i.e. no text lines) should + // have a cursor position of (row=0,col=0). Some code assumes this. + // + // (no error checking is performed - the row and col are as per + // setTextCursorPosition() so may be out of the bounds of the + // text selection) + int textCursorRow () const; + int textCursorCol () const; + // See kpToolText::beginDrawSelectText() for a correct use of this + // method, satisfying the above convention. + // + // WARNING: If the previous row and column are invalid (e.g. you just + // called kpTextSelection::setTextLines() such that the previous + // row and column now point outside the lines), this will not + // be able to erase the cursor at the old position. + // + // Always ensure that the text cursor position is valid. + // TODO: We need to check this in all source files. + // e.g. It's definitely wrong for kpToolTextBackspaceCommand. + void setTextCursorPosition (int row, int col); + + // Returns the document rectangle where cursor would be placed, using + // textCursorRow() and textCursorCol (). + // + // For a text selection without any content, this returns a rectangle + // corresponding to the first text row and column. + // + // If there is no text selection or textCursorRow() or + // textCursorCol() are invalid, it returns an empty rectangle. + QRect textCursorRect () const; + +protected: + // If textCursorRect() is valid, updates all views at that rectangle. + // The cursor blink state and timer are not affected at all. + // TODO: This and other methods will happily execute even if + // !textCursorEnabled(). We should fix this. + void updateTextCursor (); + +protected slots: + void slotTextCursorBlink (); + + +// +// View Updates +// + +public: + // Specifies whether to queue _all_ paint events + // (generated by you or the window system), until the + // corresponding call to restoreQueueUpdates(). Use this + // before multiple, big, non-interactive changes to the + // document to eliminate virtually all flicker. + // + // This is better than QWidget::setUpdatesEnabled() because + // restoreQueueUpdates() automatically restores, for each view, + // only the _regions_ that need to be repainted. + // + // You can nest blocks of setQueueUpdates()/restoreQueueUpdates(). + bool queueUpdates () const; + void setQueueUpdates (); + void restoreQueueUpdates (); + +public: + // Controls behaviour of updateViews(): + // + // Slow: Let Qt buffer paint events via QWidget::update(). + // Results in less flicker. Paint events are probably merged + // so long-term efficiency is increased at the expense of + // reduced responsiveness (default). Generally, the paint + // event happens a while later -- when you return to the event + // loop. + // Fast: Force Qt to redraw immediately. No paint events + // are merged so there is great potential for flicker, + // if used inappropriately. Use this when the redraw + // area is small and responsiveness is critical. + // Continual use of this mode can result in + // unnecessary redraws and incredibly slugish performance. + // + // You can nest blocks of setFastUpdates()/restoreFastUpdates(). + bool fastUpdates () const; + void setFastUpdates (); + void restoreFastUpdates (); + +public slots: + void updateView (kpView *v); + void updateView (kpView *v, const QRect &viewRect); + void updateView (kpView *v, int x, int y, int w, int h); + void updateView (kpView *v, const QRegion &viewRegion); + + void updateViewRectangleEdges (kpView *v, const QRect &viewRect); + + void updateViews (const QRect &docRect); + + +public slots: + void adjustViewsToEnvironment (); + +public slots: + void setInputMethodEnabled (bool inputMethodEnabled); + +private: + struct kpViewManagerPrivate * const d; +}; + + +#endif // KP_VIEW_MANAGER_H diff --git a/views/manager/kpViewManagerPrivate.h b/views/manager/kpViewManagerPrivate.h new file mode 100644 index 0000000..25f933b --- /dev/null +++ b/views/manager/kpViewManagerPrivate.h @@ -0,0 +1,85 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpViewManagerPrivate_H +#define kpViewManagerPrivate_H + + +#include +#include + + +class kpMainWindow; +class QTimer; +class kpView; + + +struct kpViewManagerPrivate +{ + kpMainWindow *mainWindow; + + QList views; + kpView *viewUnderCursor; + + QCursor cursor; + + kpTempImage *tempImage; + + bool selectionBorderVisible; + bool selectionBorderFinished; + + + // + // Text Cursor + // + + // Exists only if the text cursor is enabled. 0 otherwise. + QTimer *textCursorBlinkTimer; + + // (undefined if there is not currently a text selection) + int textCursorRow, textCursorCol; + + // (undefined if there is not currently a text selection) + bool textCursorBlinkState; + + + // + // View Updates + // + + int queueUpdatesCounter, fastUpdatesCounter; + + // + // Input Method + // + + bool inputMethodEnabled; +}; + + +#endif // kpViewManagerPrivate_H diff --git a/views/manager/kpViewManager_TextCursor.cpp b/views/manager/kpViewManager_TextCursor.cpp new file mode 100644 index 0000000..c5e319f --- /dev/null +++ b/views/manager/kpViewManager_TextCursor.cpp @@ -0,0 +1,236 @@ + +// TODO: This is bad design as it's easy to get out of sync with the selection. +// e.g. You could have textCursorEnabled() but no text selection or +// vice versa. And the cursor could be outside of the selection. +// +// In fact, our text commands momentarily violate these "invariants": +// +// 1. A text box with content must have the cursor somewhere on an +// existing text line, possibly 1 position after the last character +// on a line. +// +// 2. Special case: A content-less text box (i.e. no text lines) must +// have the cursor at (0,0). +// +// We don't assert-check them at the moment. We should when we fix +// the design so that the invariants are always maintained. + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2005 Kazuki Ohta + Copyright (c) 2010 Tasuku Suzuki + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_VIEW_MANAGER 0 + + +#include "kpViewManager.h" +#include "kpViewManagerPrivate.h" + +#include +#include +#include +//#include + +#include "kpLogCategories.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "layers/tempImage/kpTempImage.h" +#include "layers/selections/text/kpTextSelection.h" +#include "tools/kpTool.h" +#include "views/kpView.h" + + +// public +bool kpViewManager::textCursorEnabled () const +{ + return static_cast (d->textCursorBlinkTimer); +} + +// public +void kpViewManager::setTextCursorEnabled (bool yes) +{ +#if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "kpViewManager::setTextCursorEnabled(" << yes << ")"; +#endif + + if (yes == textCursorEnabled ()) { + return; + } + + delete d->textCursorBlinkTimer; + d->textCursorBlinkTimer = nullptr; + + setFastUpdates (); + setQueueUpdates (); + { + if (yes) + { + d->textCursorBlinkTimer = new QTimer (this); + d->textCursorBlinkTimer->setSingleShot (true); + connect (d->textCursorBlinkTimer, &QTimer::timeout, this, &kpViewManager::slotTextCursorBlink); + + d->textCursorBlinkState = true; + slotTextCursorBlink (); + } + else + { + d->textCursorBlinkState = false; + updateTextCursor (); + } + } + restoreQueueUpdates (); + restoreFastUpdates (); +} + + +// public +bool kpViewManager::textCursorBlinkState () const +{ + return d->textCursorBlinkState; +} + +// public +void kpViewManager::setTextCursorBlinkState (bool on) +{ + if (on == d->textCursorBlinkState) { + return; + } + + d->textCursorBlinkState = on; + + updateTextCursor (); +} + + +// public +int kpViewManager::textCursorRow () const +{ + return d->textCursorRow; +} + +// public +int kpViewManager::textCursorCol () const +{ + return d->textCursorCol; +} + +// public +void kpViewManager::setTextCursorPosition (int row, int col) +{ + if (row == d->textCursorRow && col == d->textCursorCol) { + return; + } + + setFastUpdates (); + setQueueUpdates (); + { + // Clear the old cursor. + d->textCursorBlinkState = false; + updateTextCursor (); + + d->textCursorRow = row; + d->textCursorCol = col; + + // Render the new cursor. + d->textCursorBlinkState = true; + updateTextCursor (); + } + restoreQueueUpdates (); + restoreFastUpdates (); +} + + +// public +QRect kpViewManager::textCursorRect () const +{ + kpTextSelection *textSel = document ()->textSelection (); + if (!textSel) { + return {}; + } + + QPoint topLeft = textSel->pointForTextRowCol (d->textCursorRow, d->textCursorCol); + if (topLeft == KP_INVALID_POINT) + { + // Text cursor row/col hasn't been specified yet? + if (textSel->hasContent ()) { + return {}; + } + + // Empty text box should still display a cursor so that the user + // knows where typed text will go. + topLeft = textSel->textAreaRect ().topLeft (); + } + + Q_ASSERT (topLeft != KP_INVALID_POINT); + + return {topLeft.x (), topLeft.y (), + 1, textSel->textStyle ().fontMetrics ().height ()}; +} + + +// protected +void kpViewManager::updateTextCursor () +{ +#if DEBUG_KP_VIEW_MANAGER && 0 + qCDebug(kpLogViews) << "kpViewManager::updateTextCursor()"; +#endif + + const QRect r = textCursorRect (); + if (!r.isValid ()) { + return; + } + + setFastUpdates (); + { + // If !textCursorEnabled(), this will clear. + updateViews (r); + } + restoreFastUpdates (); +} + +// protected slot +void kpViewManager::slotTextCursorBlink () +{ +#if DEBUG_KP_VIEW_MANAGER && 0 + qCDebug(kpLogViews) << "kpViewManager::slotTextCursorBlink() cursorBlinkState=" + << d->textCursorBlinkState; +#endif + + if (d->textCursorBlinkTimer) + { + // (single shot) + d->textCursorBlinkTimer->start (QApplication::cursorFlashTime () / 2); + } + + updateTextCursor (); + // TODO: Shouldn't this be done _before_ updating the text cursor + // because textCursorBlinkState() is supposed to reflect what + // updateTextCursor() just rendered, until the next timer tick? + d->textCursorBlinkState = !d->textCursorBlinkState; +} diff --git a/views/manager/kpViewManager_ViewUpdates.cpp b/views/manager/kpViewManager_ViewUpdates.cpp new file mode 100644 index 0000000..b5a6e4f --- /dev/null +++ b/views/manager/kpViewManager_ViewUpdates.cpp @@ -0,0 +1,254 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_VIEW_MANAGER 0 + + +#include "views/manager/kpViewManager.h" +#include "kpViewManagerPrivate.h" + +#include +#include +#include + +#include "kpLogCategories.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "mainWindow/kpMainWindow.h" +#include "layers/tempImage/kpTempImage.h" +#include "layers/selections/text/kpTextSelection.h" +#include "tools/kpTool.h" +#include "views/kpView.h" + + +// public slot +bool kpViewManager::queueUpdates () const +{ + return (d->queueUpdatesCounter > 0); +} + +// public slot +void kpViewManager::setQueueUpdates () +{ + d->queueUpdatesCounter++; +#if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "kpViewManager::setQueueUpdates() counter=" + << d->queueUpdatesCounter << endl; +#endif +} + +//-------------------------------------------------------------------------------- + +// public slot +void kpViewManager::restoreQueueUpdates () +{ + d->queueUpdatesCounter--; +#if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "kpViewManager::restoreQueueUpdates() counter=" + << d->queueUpdatesCounter; +#endif + Q_ASSERT (d->queueUpdatesCounter >= 0); + + if (d->queueUpdatesCounter == 0) + { + foreach (kpView *view, d->views) + view->updateQueuedArea(); + } +} + +//-------------------------------------------------------------------------------- + +// public slot +bool kpViewManager::fastUpdates () const +{ + return (d->fastUpdatesCounter > 0); +} + +// public slot +void kpViewManager::setFastUpdates () +{ + d->fastUpdatesCounter++; +#if DEBUG_KP_VIEW_MANAGER && 0 + qCDebug(kpLogViews) << "kpViewManager::setFastUpdates() counter=" + << d->fastUpdatesCounter << endl; +#endif +} + +// public slot +void kpViewManager::restoreFastUpdates () +{ + d->fastUpdatesCounter--; +#if DEBUG_KP_VIEW_MANAGER && 0 + qCDebug(kpLogViews) << "kpViewManager::restoreFastUpdates() counter=" + << d->fastUpdatesCounter << endl; +#endif + Q_ASSERT (d->fastUpdatesCounter >= 0); +} + + +// public slot +void kpViewManager::updateView (kpView *v) +{ + updateView (v, QRect (0, 0, v->width (), v->height ())); +} + +// public slot +void kpViewManager::updateView (kpView *v, const QRect &viewRect) +{ + if (!queueUpdates ()) + { + if (fastUpdates ()) { + v->repaint (viewRect); + } + else { + v->update (viewRect); + } + } + else { + v->addToQueuedArea (viewRect); + } +} + +// public slot +void kpViewManager::updateView (kpView *v, int x, int y, int w, int h) +{ + updateView (v, QRect (x, y, w, h)); +} + +// public slot +void kpViewManager::updateView (kpView *v, const QRegion &viewRegion) +{ + if (!queueUpdates ()) + { + if (fastUpdates ()) { + v->repaint (viewRegion); + } + else { + v->update (viewRegion.boundingRect ()); + } + } + else { + v->addToQueuedArea (viewRegion); + } +} + + +// public slot +void kpViewManager::updateViewRectangleEdges (kpView *v, const QRect &viewRect) +{ + if (viewRect.height () <= 0 || viewRect.width () <= 0) { + return; + } + + // Top line + updateView (v, QRect (viewRect.x (), viewRect.y (), + viewRect.width (), 1)); + + if (viewRect.height () >= 2) + { + // Bottom line + updateView (v, QRect (viewRect.x (), viewRect.bottom (), + viewRect.width (), 1)); + + if (viewRect.height () > 2) + { + // Left line + updateView (v, QRect (viewRect.x (), viewRect.y () + 1, + 1, viewRect.height () - 2)); + + if (viewRect.width () >= 2) + { + // Right line + updateView (v, QRect (viewRect.right (), viewRect.y () + 1, + 1, viewRect.height () - 2)); + } + } + } +} + +// public slot +void kpViewManager::updateViews (const QRect &docRect) +{ +#if DEBUG_KP_VIEW_MANAGER && 0 + qCDebug(kpLogViews) << "kpViewManager::updateViews (" << docRect << ")"; +#endif + + foreach (kpView *view, d->views) + { + #if DEBUG_KP_VIEW_MANAGER && 0 + qCDebug(kpLogViews) << "\tupdating view " << view->name (); + #endif + if (view->zoomLevelX () % 100 == 0 && view->zoomLevelY () % 100 == 0) + { + #if DEBUG_KP_VIEW_MANAGER && 0 + qCDebug(kpLogViews) << "\t\tviewRect=" << view->transformDocToView (docRect); + #endif + updateView (view, view->transformDocToView (docRect)); + } + else + { + QRect viewRect = view->transformDocToView (docRect); + + int diff = qRound (double (qMax (view->zoomLevelX (), view->zoomLevelY ())) / 100.0) + 1; + + QRect newRect = QRect (viewRect.x () - diff, + viewRect.y () - diff, + viewRect.width () + 2 * diff, + viewRect.height () + 2 * diff) + .intersected (QRect (0, 0, view->width (), view->height ())); + + #if DEBUG_KP_VIEW_MANAGER && 0 + qCDebug(kpLogViews) << "\t\tviewRect (+compensate)=" << newRect; + #endif + updateView (view, newRect); + } + } +} + +//-------------------------------------------------------------------------------- + +// public slot +void kpViewManager::adjustViewsToEnvironment () +{ +#if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "kpViewManager::adjustViewsToEnvironment()" + << " numViews=" << d->views.count () + << endl; +#endif + foreach (kpView *view, d->views) + { + #if DEBUG_KP_VIEW_MANAGER && 1 + qCDebug(kpLogViews) << "\tview: " << view->name () + << endl; + #endif + view->adjustToEnvironment (); + } +} + +//-------------------------------------------------------------------------------- diff --git a/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.cpp b/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.cpp new file mode 100644 index 0000000..3150f11 --- /dev/null +++ b/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.cpp @@ -0,0 +1,236 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR_SIMILARITY_CUBE 0 + + +#include "kpColorSimilarityCubeRenderer.h" + +#include + +#include +#include + +#include "kpLogCategories.h" + +#include "widgets/colorSimilarity/kpColorSimilarityHolder.h" +#include "kpDefs.h" + +//--------------------------------------------------------------------- + +static QColor Color (int redOrGreenOrBlue, + int baseBrightness, + double colorSimilarity, + int similarityDirection, + int highlight) +{ + int brightness = int (baseBrightness + + similarityDirection * + 0.5 * colorSimilarity * kpColorSimilarityHolder::ColorCubeDiagonalDistance); + + if (brightness < 0) { + brightness = 0; + } + else if (brightness > 255) { + brightness = 255; + } + + switch (redOrGreenOrBlue) + { + default: + case 0: return {brightness, highlight, highlight}; + case 1: return {highlight, brightness, highlight}; + case 2: return {highlight, highlight, brightness}; + } +} + +//--------------------------------------------------------------------- + +static QPointF PointBetween(const QPointF &p, const QPointF &q) +{ + return {(p.x() + q.x()) / 2.0, (p.y() + q.y()) / 2.0}; +} + +//--------------------------------------------------------------------- + +static void DrawQuadrant(QPaintDevice *target, + const QColor &col, + const QPointF &p1, const QPointF &p2, const QPointF &p3, + const QPointF &pointNotOnOutline) +{ + QPolygonF points (4); + points [0] = p1; + points [1] = p2; + points [2] = p3; + points [3] = pointNotOnOutline; + + QPainter p(target); + p.setRenderHints(QPainter::Antialiasing, true); + + // Polygon fill. + p.setPen(col); + p.setBrush(col); + p.drawPolygon(points); + + // do not draw a black border. It looks ugly +} + +//--------------------------------------------------------------------- + +static void DrawFace (QPaintDevice *target, + double colorSimilarity, + int redOrGreenOrBlue, + const QPointF &tl, const QPointF &tr, + const QPointF &bl, const QPointF &br, + int highlight) +{ +#if DEBUG_KP_COLOR_SIMILARITY_CUBE + qCDebug(kpLogWidgets) << "kpColorSimilarityCubeRenderer.cpp:DrawFace(RorGorB=" << redOrGreenOrBlue + << ",tl=" << tl + << ",tr=" << tr + << ",bl=" << bl + << ",br=" << br + << ")" + << endl; +#endif + + // tl --- tm --- tr + // | | | + // | | | + // ml --- mm --- mr + // | | | + // | | | + // bl --- bm --- br + + const QPointF tm (::PointBetween (tl, tr)); + const QPointF bm (::PointBetween (bl, br)); + + const QPointF ml (::PointBetween (tl, bl)); + const QPointF mr (::PointBetween (tr, br)); + const QPointF mm (::PointBetween (ml, mr)); + + + const int baseBrightness = + qMax (127, + 255 - int (kpColorSimilarityHolder::MaxColorSimilarity * + kpColorSimilarityHolder::ColorCubeDiagonalDistance / 2)); + QColor colors [2] = + { + ::Color (redOrGreenOrBlue, baseBrightness, colorSimilarity, -1, highlight), + ::Color (redOrGreenOrBlue, baseBrightness, colorSimilarity, +1, highlight) + }; + +#if DEBUG_KP_COLOR_SIMILARITY_CUBE + qCDebug(kpLogWidgets) << "\tmaxColorSimilarity=" << kpColorSimilarityHolder::MaxColorSimilarity + << " colorCubeDiagDist=" << kpColorSimilarityHolder::ColorCubeDiagonalDistance + << "\n" + << "\tbaseBrightness=" << baseBrightness + << " color[0]=" << ((colors [0].rgba() & RGB_MASK) >> ((2 - redOrGreenOrBlue) * 8)) + << " color[1]=" << ((colors [1].rgba() & RGB_MASK) >> ((2 - redOrGreenOrBlue) * 8)) + << endl; +#endif + + + ::DrawQuadrant(target, colors [0], tm, tl, ml, mm); + ::DrawQuadrant(target, colors [1], tm, tr, mr, mm); + ::DrawQuadrant(target, colors [1], ml, bl, bm, mm); + ::DrawQuadrant(target, colors [0], bm, br, mr, mm); +} + +//--------------------------------------------------------------------- + +// public static +void kpColorSimilarityCubeRenderer::Paint(QPaintDevice *target, + int x, int y, int cubeRectSize, + double colorSimilarity, + int highlight) +{ + Q_ASSERT (highlight >= 0 && highlight <= 255); + + // + // P------- Q --- --- + // / / | | | + // /A / | side | + // R-------S T --- cubeRectSize + // | | / / | + // S | | / side | + // U-------V --- --- + // |-------| + // side + // |-----------| + // cubeRectSize + // + // + + const double angle = qDegreesToRadians (45.0); + // S + S sin A = cubeRectSize + // (1 + sin A) x S = cubeRectSize + const double side = double(cubeRectSize) / (1.0 + std::sin(angle)); + + + const QPointF pointP(x + (side * std::cos (angle)), + y); + const QPointF pointQ(x + cubeRectSize - 1, + y); + const QPointF pointR(x, + y + (side * std::sin (angle))); + const QPointF pointS(x + (side), + y + (side * std::sin (angle))); + const QPointF pointT(x + cubeRectSize - 1, + y + (side)); + const QPointF pointU(x, + y + cubeRectSize - 1); + const QPointF pointV(x + (side), + y + cubeRectSize - 1); + + + // Top Face + ::DrawFace(target, + colorSimilarity, 0/*red*/, + pointP, pointQ, + pointR, pointS, + highlight); + + + // Front Face + ::DrawFace(target, + colorSimilarity, 1/*green*/, + pointR, pointS, + pointU, pointV, + highlight); + + + // Right Face + ::DrawFace(target, + colorSimilarity, 2/*blue*/, + pointS, pointQ, + pointV, pointT, + highlight); +} + +//--------------------------------------------------------------------- diff --git a/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.h b/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.h new file mode 100644 index 0000000..8b45853 --- /dev/null +++ b/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.h @@ -0,0 +1,54 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpColorSimilarityCubeRenderer_H +#define kpColorSimilarityCubeRenderer_H + + +class QPaintDevice; + + +class kpColorSimilarityCubeRenderer +{ +public: + // is used for animations: + // + // 0 = no highlight + // . + // . + // . + // 255 = full highlight + + static void Paint(QPaintDevice *target, + int x, int y, int size, + double colorSimilarity, + int highlight = 0); +}; + + +#endif // kpColorSimilarityCubeRenderer_H diff --git a/widgets/colorSimilarity/kpColorSimilarityFrame.cpp b/widgets/colorSimilarity/kpColorSimilarityFrame.cpp new file mode 100644 index 0000000..dd98e44 --- /dev/null +++ b/widgets/colorSimilarity/kpColorSimilarityFrame.cpp @@ -0,0 +1,78 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR_SIMILARITY_CUBE 0 + + +#include "kpColorSimilarityFrame.h" + +#include "kpColorSimilarityCubeRenderer.h" + +#include "kpLogCategories.h" + +//--------------------------------------------------------------------- + +kpColorSimilarityFrame::kpColorSimilarityFrame(QWidget *parent) + : QWidget(parent) +{ + setWhatsThis (WhatsThis ()); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpColorSimilarityHolder] +void kpColorSimilarityFrame::setColorSimilarity (double similarity) +{ + kpColorSimilarityHolder::setColorSimilarity (similarity); + + repaint (); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +QSize kpColorSimilarityFrame::sizeHint () const +{ + return {52, 52}; +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpColorSimilarityFrame::paintEvent (QPaintEvent *) +{ + int cubeRectSize = qMin(width() * 6 / 8, height() * 6 / 8); + int x = (width() - cubeRectSize) / 2; + int y = (height() - cubeRectSize) / 2; + + kpColorSimilarityCubeRenderer::Paint(this, + x, y, cubeRectSize, + colorSimilarity()); +} + +//--------------------------------------------------------------------- diff --git a/widgets/colorSimilarity/kpColorSimilarityFrame.h b/widgets/colorSimilarity/kpColorSimilarityFrame.h new file mode 100644 index 0000000..0fb7ee7 --- /dev/null +++ b/widgets/colorSimilarity/kpColorSimilarityFrame.h @@ -0,0 +1,51 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpColorSimilarityFrame_H +#define kpColorSimilarityFrame_H + +#include "kpColorSimilarityHolder.h" + +#include + + +class kpColorSimilarityFrame : public QWidget, public kpColorSimilarityHolder +{ +public: + kpColorSimilarityFrame(QWidget *parent); + + void setColorSimilarity (double similarity) override; + + QSize sizeHint () const override; + +protected: + void paintEvent (QPaintEvent *e) override; +}; + + +#endif // kpColorSimilarityFrame_H diff --git a/widgets/colorSimilarity/kpColorSimilarityHolder.cpp b/widgets/colorSimilarity/kpColorSimilarityHolder.cpp new file mode 100644 index 0000000..19581c8 --- /dev/null +++ b/widgets/colorSimilarity/kpColorSimilarityHolder.cpp @@ -0,0 +1,190 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR_SIMILARITY_CUBE 0 + + +#include "kpColorSimilarityHolder.h" + +#include "kpColorSimilarityCubeRenderer.h" +#include "imagelib/kpColor.h" +#include "kpDefs.h" + +#include + +#include +#include +#include + +#include "kpLogCategories.h" + +#include + +// public static +const double kpColorSimilarityHolder::ColorCubeDiagonalDistance = + std::sqrt (255.0 * 255 * 3); + +// public static +const double kpColorSimilarityHolder::MaxColorSimilarity = 0.30; + + +kpColorSimilarityHolder::kpColorSimilarityHolder () + : m_colorSimilarity (0) +{ +} + +kpColorSimilarityHolder::~kpColorSimilarityHolder () = default; + + +// Don't cause the translators grief by appending strings etc. +// - duplicate text with 2 cases + +// public static +QString kpColorSimilarityHolder::WhatsThisWithClickInstructions () +{ + return i18n ("" + "

                            Color Similarity is how similar the colors of different pixels" + " must be, for operations to consider them to be the same.

                            " + + "

                            If you set it to something other than Exact Match," + " you can work more effectively with dithered" + " images and photos, in a comparable manner to the \"Magic Wand\"" + " feature of other paint programs.

                            " + + "

                            This feature applies to:

                            " + + "
                              " + + "
                            • Selections: In Transparent mode, any color in the" + " selection that is similar to the background color will" + " be made transparent.
                            • " + + "
                            • Flood Fill: For regions with similar - but not" + " identical - colored pixels, a higher setting is likely to" + " fill more pixels.
                            • " + + "
                            • Color Eraser: Any pixel whose color is similar" + " to the foreground color will be replaced with the background" + " color.
                            • " + + "
                            • Autocrop and Remove Internal Border: For" + " borders with similar - but not identical - colored pixels," + " a higher setting is more likely to crop the whole border.
                            • " + + "
                            " + + "

                            Higher settings mean that operations consider an increased range" + " of colors to be sufficiently similar so as to be the same. Therefore," + " you should increase the setting if the above operations are not" + " affecting pixels whose colors you consider to be similar enough.

                            " + + "

                            However, if they are having too much of an effect and are changing" + " pixels whose colors you do not consider to be similar" + " (e.g. if Flood Fill is changing too many pixels), you" + " should decrease this setting.

                            " + + // sync: Compared to the other string below, we've added this line. + "

                            To configure it, click on the cube.

                            " + + "
                            "); +} + +// public static +QString kpColorSimilarityHolder::WhatsThis () +{ + return i18n ("" + "

                            Color Similarity is how similar the colors of different pixels" + " must be, for operations to consider them to be the same.

                            " + + "

                            If you set it to something other than Exact Match," + " you can work more effectively with dithered" + " images and photos, in a comparable manner to the \"Magic Wand\"" + " feature of other paint programs.

                            " + + "

                            This feature applies to:

                            " + + "
                              " + + "
                            • Selections: In Transparent mode, any color in the" + " selection that is similar to the background color will" + " be made transparent.
                            • " + + "
                            • Flood Fill: For regions with similar - but not" + " identical - colored pixels, a higher setting is likely to" + " fill more pixels.
                            • " + + "
                            • Color Eraser: Any pixel whose color is similar" + " to the foreground color will be replaced with the background" + " color.
                            • " + + "
                            • Autocrop and Remove Internal Border: For" + " borders with similar - but not identical - colored pixels," + " a higher setting is more likely to crop the whole border.
                            • " + + "
                            " + + "

                            Higher settings mean that operations consider an increased range" + " of colors to be sufficiently similar so as to be the same. Therefore," + " you should increase the setting if the above operations are not" + " affecting pixels whose colors you consider to be similar enough.

                            " + + "

                            However, if they are having too much of an effect and are changing" + " pixels whose colors you do not consider to be similar" + " (e.g. if Flood Fill is changing too many pixels), you" + " should decrease this setting.

                            " + + "
                            "); +} + + +// public +double kpColorSimilarityHolder::colorSimilarity () const +{ + return m_colorSimilarity; +} + +// public virtual +void kpColorSimilarityHolder::setColorSimilarity (double similarity) +{ +#if DEBUG_KP_COLOR_SIMILARITY_CUBE + qCDebug(kpLogWidgets) << "kpColorSimilarityHolder::setColorSimilarity(" << similarity << ")"; +#endif + + if (m_colorSimilarity == similarity) { + return; + } + + if (similarity < 0) { + similarity = 0; + } + else if (similarity > MaxColorSimilarity) { + similarity = MaxColorSimilarity; + } + + m_colorSimilarity = similarity; +} diff --git a/widgets/colorSimilarity/kpColorSimilarityHolder.h b/widgets/colorSimilarity/kpColorSimilarityHolder.h new file mode 100644 index 0000000..f49304d --- /dev/null +++ b/widgets/colorSimilarity/kpColorSimilarityHolder.h @@ -0,0 +1,65 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpColorSimilarityHolder_H +#define kpColorSimilarityHolder_H + + +class QString; + + +class kpColorSimilarityHolder +{ +public: + kpColorSimilarityHolder (); + virtual ~kpColorSimilarityHolder (); + + static const double ColorCubeDiagonalDistance; + static const double MaxColorSimilarity; + + static QString WhatsThisWithClickInstructions (); + static QString WhatsThis (); + + double colorSimilarity () const; + + // This automatically restricts the given to the range + // 0 .. MaxColorSimilarity inclusive. + // + // Override this if you need to act on mutations. + // Remember to call this base implementation though. + // + // WARNING: The base constructor does not call this as virtual method + // calls in constructors do not invoke overrides anyway. + virtual void setColorSimilarity (double similarity); + +private: + double m_colorSimilarity; +}; + + +#endif // kpColorSimilarityHolder_H diff --git a/widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp b/widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp new file mode 100644 index 0000000..7bcca39 --- /dev/null +++ b/widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp @@ -0,0 +1,286 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR_SIMILARITY_TOOL_BAR_ITEM 0 + + +#include "kpColorSimilarityToolBarItem.h" + +#include +#include + +#include +#include +#include + +#include "imagelib/kpColor.h" +#include "dialogs/kpColorSimilarityDialog.h" +#include "kpColorSimilarityCubeRenderer.h" +#include "kpDefs.h" + +//--------------------------------------------------------------------- + +kpColorSimilarityToolBarItem::kpColorSimilarityToolBarItem (QWidget *parent) + : QToolButton (parent), + kpColorSimilarityHolder (), + + m_oldColorSimilarity (0), + m_processedColorSimilarity (kpColor::Exact), + m_flashTimer (new QTimer (this)), + m_flashHighlight (0), + m_suppressingFlashCounter (0) +{ + setAutoRaise (true); + setFixedSize (52, 52); + + setWhatsThis (WhatsThisWithClickInstructions ()); + + connect (this, &kpColorSimilarityToolBarItem::clicked, + this, &kpColorSimilarityToolBarItem::openDialog); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + setColorSimilarityInternal (cfg.readEntry (kpSettingColorSimilarity, 0.0), + false/*don't write config*/); + + m_flashTimer->setInterval (100/*ms*/); + connect (m_flashTimer, &QTimer::timeout, + this, &kpColorSimilarityToolBarItem::slotFlashTimerTimeout); +} + +//--------------------------------------------------------------------- + +// public +int kpColorSimilarityToolBarItem::processedColorSimilarity () const +{ + return m_processedColorSimilarity; +} + +//--------------------------------------------------------------------- + +// private +void kpColorSimilarityToolBarItem::setColorSimilarityInternal (double similarity, + bool writeConfig) +{ +#if DEBUG_KP_COLOR_SIMILARITY_TOOL_BAR_ITEM + qCDebug(kpLogWidgets) << "kpColorSimilarityToolBarItem::setColorSimilarityInternal(" + << "similarity=" << similarity << ",writeConfig=" << writeConfig + << ")"; +#endif + + m_oldColorSimilarity = colorSimilarity (); + + kpColorSimilarityHolder::setColorSimilarity (similarity); + m_processedColorSimilarity = kpColor::processSimilarity (colorSimilarity ()); + + updateIcon (); + updateToolTip (); + + if (writeConfig) + { + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupGeneral); + cfg.writeEntry (kpSettingColorSimilarity, colorSimilarity ()); + cfg.sync (); + } + + emit colorSimilarityChanged (colorSimilarity (), m_processedColorSimilarity); +} + +//--------------------------------------------------------------------- + +// public virtual [base kopColorSimilarityHolder] +void kpColorSimilarityToolBarItem::setColorSimilarity (double similarity) +{ + // (this calls the base setColorSimilarity() as required by base) + setColorSimilarityInternal (similarity, true/*write config*/); +} + +//--------------------------------------------------------------------- + +// public +double kpColorSimilarityToolBarItem::oldColorSimilarity () const +{ + return m_oldColorSimilarity; +} + +//--------------------------------------------------------------------- + +// public +void kpColorSimilarityToolBarItem::openDialog () +{ + kpColorSimilarityDialog dialog (this); + dialog.setColorSimilarity (colorSimilarity ()); + if (dialog.exec ()) + { + setColorSimilarity (dialog.colorSimilarity ()); + } +} + +//--------------------------------------------------------------------- + +// private slot: +void kpColorSimilarityToolBarItem::slotFlashTimerTimeout () +{ +#if DEBUG_KP_COLOR_SIMILARITY_TOOL_BAR_ITEM + qCDebug(kpLogWidgets) << "kpColorSimilarityToolBarItem::slotFlashTimerTimeout()" + << " highlight=" << m_flashHighlight << endl; +#endif + int newHigh = m_flashHighlight - 20; + if (newHigh < 0) { + newHigh = 0; + } + + m_flashHighlight = newHigh; + + updateIcon (); + + if (newHigh == 0) { + m_flashTimer->stop (); + } +} + +//--------------------------------------------------------------------- + +// public +void kpColorSimilarityToolBarItem::flash () +{ +#if DEBUG_KP_COLOR_SIMILARITY_TOOL_BAR_ITEM + qCDebug(kpLogWidgets) << "kpColorSimilarityToolBarItem::flash()"; +#endif + if (isSuppressingFlash ()) { + return; + } + + if (m_flashHighlight == 255) + { + #if DEBUG_KP_COLOR_SIMILARITY_TOOL_BAR_ITEM + qCDebug(kpLogWidgets) << "\tNOP"; + #endif + } + else + { + m_flashHighlight = 255; + + updateIcon (); + } + + m_flashTimer->start (); +} + +//--------------------------------------------------------------------- + +// public +bool kpColorSimilarityToolBarItem::isSuppressingFlash () const +{ + return (m_suppressingFlashCounter > 0); +} + +//--------------------------------------------------------------------- + +// public +void kpColorSimilarityToolBarItem::suppressFlash () +{ + m_suppressingFlashCounter++; +} + +//--------------------------------------------------------------------- + +// public +void kpColorSimilarityToolBarItem::unsupressFlash () +{ + m_suppressingFlashCounter--; + Q_ASSERT (m_suppressingFlashCounter >= 0); +} + +//--------------------------------------------------------------------- + +// private +void kpColorSimilarityToolBarItem::updateToolTip () +{ +#if DEBUG_KP_COLOR_SIMILARITY_TOOL_BAR_ITEM + qCDebug(kpLogWidgets) << "kpColorSimilarityToolBarItem::updateToolTip()"; +#endif + + if (colorSimilarity () > 0) + { + setToolTip ( + i18n ("

                            Color Similarity: %1%

                            " + "

                            Click to configure.

                            ", + qRound (colorSimilarity () * 100))); + } + else + { + setToolTip ( + i18n ("

                            Color Similarity: Exact Match

                            " + "

                            Click to configure.

                            ")); + } +} + +//--------------------------------------------------------------------- + +// private +// LOOPT: This gets called twice on KolourPaint startup by: +// +// 1. setColorSimilarityInternal() called by the ctor +// 2. resizeEvent() when it's first shown() +// +// We could get rid of the first and save a few milliseconds. +void kpColorSimilarityToolBarItem::updateIcon () +{ + const int side = width () * 6 / 8; +#if DEBUG_KP_COLOR_SIMILARITY_TOOL_BAR_ITEM + qCDebug(kpLogWidgets) << "kpColorSimilarityToolBarItem::updateIcon() width=" << width () + << " side=" << side; +#endif + + QPixmap icon(side, side); + icon.fill(Qt::transparent); + + kpColorSimilarityCubeRenderer::Paint (&icon, + 0/*x*/, 0/*y*/, side, + colorSimilarity (), m_flashHighlight); + + setIconSize(QSize(side, side)); + setIcon(icon); +} + +//--------------------------------------------------------------------- + +// private virtual [base QWidget] +void kpColorSimilarityToolBarItem::resizeEvent (QResizeEvent *e) +{ +#if DEBUG_KP_COLOR_SIMILARITY_TOOL_BAR_ITEM + qCDebug(kpLogWidgets) << "kpColorSimilarityToolBarItem::resizeEvent() size=" << size () + << " oldSize=" << e->oldSize (); +#endif + QToolButton::resizeEvent (e); + + updateIcon (); +} + +//--------------------------------------------------------------------- + diff --git a/widgets/colorSimilarity/kpColorSimilarityToolBarItem.h b/widgets/colorSimilarity/kpColorSimilarityToolBarItem.h new file mode 100644 index 0000000..9b68d23 --- /dev/null +++ b/widgets/colorSimilarity/kpColorSimilarityToolBarItem.h @@ -0,0 +1,104 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpColorSimilarityToolBarItem_H +#define kpColorSimilarityToolBarItem_H + + +#include "widgets/colorSimilarity/kpColorSimilarityHolder.h" + +#include + + +class QTimer; + + +class kpColorSimilarityToolBarItem : public QToolButton, + public kpColorSimilarityHolder +{ +Q_OBJECT + +public: + // (reads the color similarity config setting) + kpColorSimilarityToolBarItem (QWidget *parent); + + int processedColorSimilarity () const; + +private: + // specifies whether to write the color similarity config + // setting. + void setColorSimilarityInternal (double similarity, bool writeConfig); +public: + void setColorSimilarity (double similarity) override; + +signals: + void colorSimilarityChanged (double similarity, int processedSimilarity); + +public: + // (only valid in slots connected to colorSimilarityChanged()); + double oldColorSimilarity () const; + + +public slots: + // Open configuration dialog for color similarity. + void openDialog (); + +private slots: + void slotFlashTimerTimeout (); + +public: + // Animates the cube, so that the user is aware of its existence. + // Call this whenever a tool or command uses color similarity. + void flash (); + +public: + // Whether to ignore calls to flash(). + // You can nest blocks of suppressFlash()/unsuppressFlash(). + bool isSuppressingFlash () const; + void suppressFlash (); + void unsupressFlash (); + + +private: + void updateToolTip (); + void updateIcon (); + + void resizeEvent (QResizeEvent *e) override; + + +private: + double m_oldColorSimilarity; + int m_processedColorSimilarity; + + QTimer *m_flashTimer; + int m_flashHighlight; + int m_suppressingFlashCounter; +}; + + +#endif // kpColorSimilarityToolBarItem_H diff --git a/widgets/imagelib/effects/kpEffectBalanceWidget.cpp b/widgets/imagelib/effects/kpEffectBalanceWidget.cpp new file mode 100644 index 0000000..5fe423c --- /dev/null +++ b/widgets/imagelib/effects/kpEffectBalanceWidget.cpp @@ -0,0 +1,330 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_BALANCE 0 + + +#include "kpEffectBalanceWidget.h" + +#include "imagelib/effects/kpEffectBalance.h" +#include "commands/imagelib/effects/kpEffectBalanceCommand.h" +#include "pixmapfx/kpPixmapFX.h" + +#include "kpLogCategories.h" +#include +#include "kpNumInput.h" + +#include + +#include +#include +#include +#include +#include + +#if DEBUG_KP_EFFECT_BALANCE + #include +#endif + + +kpEffectBalanceWidget::kpEffectBalanceWidget (bool actOnSelection, + QWidget *parent) + : kpEffectWidgetBase (actOnSelection, parent) +{ + auto *lay = new QGridLayout (this); + lay->setContentsMargins(0, 0, 0, 0); + + auto *brightnessLabel = new QLabel (i18n ("&Brightness:"), this); + m_brightnessInput = new kpIntNumInput (0/*value*/, this); + m_brightnessInput->setRange (-50, 50); + auto *brightnessResetPushButton = new QPushButton (i18n ("Re&set"), this); + + auto *contrastLabel = new QLabel (i18n ("Co&ntrast:"), this); + m_contrastInput = new kpIntNumInput (0/*value*/, this); + m_contrastInput->setRange (-50, 50); + auto *contrastResetPushButton = new QPushButton (i18n ("&Reset"), this); + + auto *gammaLabel = new QLabel (i18n ("&Gamma:"), this); + m_gammaInput = new kpIntNumInput (0/*value*/, this); + m_gammaInput->setRange (-50, 50); + // TODO: This is what should be shown in the m_gammaInput spinbox + m_gammaLabel = new QLabel (this); + // TODO: This doesn't seem to be wide enough with some fonts so the + // whole layout moves when we drag the gamma slider. + m_gammaLabel->setMinimumWidth(m_gammaLabel->fontMetrics().horizontalAdvance(QLatin1String(" 10.00 "))); + m_gammaLabel->setAlignment (m_gammaLabel->alignment () | Qt::AlignRight); + auto *gammaResetPushButton = new QPushButton (i18n ("Rese&t"), this); + + + auto *spaceWidget = new QLabel (this); + spaceWidget->setFixedSize (1, fontMetrics ().height () / 4); + + + auto *channelLabel = new QLabel (i18n ("C&hannels:"), this); + m_channelsComboBox = new QComboBox (this); + m_channelsComboBox->addItem (i18n ("All")); + m_channelsComboBox->addItem (i18n ("Red")); + m_channelsComboBox->addItem (i18n ("Green")); + m_channelsComboBox->addItem (i18n ("Blue")); + + + auto *resetPushButton = new QPushButton (i18n ("Reset &All Values"), this); + + + brightnessLabel->setBuddy (m_brightnessInput); + contrastLabel->setBuddy (m_contrastInput); + gammaLabel->setBuddy (m_gammaInput); + + channelLabel->setBuddy (m_channelsComboBox); + + + lay->addWidget (brightnessLabel, 0, 0); + lay->addWidget (m_brightnessInput, 0, 1, 1, 2); + lay->addWidget (brightnessResetPushButton, 0, 4); + + lay->addWidget (contrastLabel, 1, 0); + lay->addWidget (m_contrastInput, 1, 1, 1, 2); + lay->addWidget (contrastResetPushButton, 1, 4); + + lay->addWidget (gammaLabel, 2, 0); + lay->addWidget (m_gammaInput, 2, 1, 1, 2); + lay->addWidget (m_gammaLabel, 2, 3); + lay->addWidget (gammaResetPushButton, 2, 4); + + lay->addWidget (spaceWidget, 3, 0, 1, 5); + lay->addWidget (resetPushButton, 4, 2, 1, 3, Qt::AlignRight); + + lay->addWidget (channelLabel, 4, 0); + lay->addWidget (m_channelsComboBox, 4, 1, Qt::AlignLeft); + //lay->addWidget (resetPushButton, 4, 2, Qt::AlignRight); + + lay->setColumnStretch (1, 1); + + + // (no need for settingsChangedDelayed() since BCG effect is so fast :)) + connect (m_brightnessInput, &kpIntNumInput::valueChanged, + this, &kpEffectBalanceWidget::settingsChangedNoWaitCursor); + connect (m_contrastInput, &kpIntNumInput::valueChanged, + this, &kpEffectBalanceWidget::settingsChangedNoWaitCursor); + + connect (m_gammaInput, &kpIntNumInput::valueChanged, + this, &kpEffectBalanceWidget::recalculateGammaLabel); + connect (m_gammaInput, &kpIntNumInput::valueChanged, + this, &kpEffectBalanceWidget::settingsChangedNoWaitCursor); + + connect (m_channelsComboBox, + static_cast(&QComboBox::activated), + this, &kpEffectBalanceWidget::settingsChanged); + + connect (brightnessResetPushButton, &QPushButton::clicked, + this, &kpEffectBalanceWidget::resetBrightness); + connect (contrastResetPushButton, &QPushButton::clicked, + this, &kpEffectBalanceWidget::resetContrast); + connect (gammaResetPushButton, &QPushButton::clicked, + this, &kpEffectBalanceWidget::resetGamma); + + connect (resetPushButton, &QPushButton::clicked, + this, &kpEffectBalanceWidget::resetAll); + + recalculateGammaLabel (); +} + +kpEffectBalanceWidget::~kpEffectBalanceWidget () = default; + + +// public virtual [base kpEffectWidgetBase] +QString kpEffectBalanceWidget::caption () const +{ + return i18n ("Settings"); +} + + +// public virtual [base kpEffectWidgetBase] +bool kpEffectBalanceWidget::isNoOp () const +{ + return (brightness () == 0 && contrast () == 0 && gamma () == 0); +} + +// public virtual [base kpEffectWidgetBase] +kpImage kpEffectBalanceWidget::applyEffect (const kpImage &image) +{ + return kpEffectBalance::applyEffect (image, + channels (), brightness (), contrast (), gamma ()); +} + +// public virtual [base kpEffectWidgetBase] +kpEffectCommandBase *kpEffectBalanceWidget::createCommand ( + kpCommandEnvironment *cmdEnviron) const +{ + return new kpEffectBalanceCommand (channels (), + brightness (), contrast (), gamma (), + m_actOnSelection, + cmdEnviron); +} + + +// protected +int kpEffectBalanceWidget::channels () const +{ + switch (m_channelsComboBox->currentIndex ()) + { + default: + case 0: + return kpEffectBalance::RGB; + + case 1: + return kpEffectBalance::Red; + + case 2: + return kpEffectBalance::Green; + + case 3: + return kpEffectBalance::Blue; + } +} + + +// protected +int kpEffectBalanceWidget::brightness () const +{ + return m_brightnessInput->value (); +} + +// protected +int kpEffectBalanceWidget::contrast () const +{ + return m_contrastInput->value (); +} + +// protected +int kpEffectBalanceWidget::gamma () const +{ + return m_gammaInput->value (); +} + + +// protected slot +void kpEffectBalanceWidget::recalculateGammaLabel () +{ + m_gammaLabel->setText ( + QLatin1String (" ") + + QString::number (std::pow (10, gamma () / 50.0), + 'f'/*[-]9.9*/, + 2/*precision*/) + + QLatin1String (" ")); + m_gammaLabel->repaint (); +} + + +// protected slot +void kpEffectBalanceWidget::resetBrightness () +{ + if (brightness () == 0) { + return; + } + + bool sb = signalsBlocked (); + + if (!sb) { + blockSignals (true); + } + m_brightnessInput->setValue (0); + if (!sb) { + blockSignals (false); + } + + // Immediate update (if signals aren't blocked) + emit settingsChanged (); +} + +// protected slot +void kpEffectBalanceWidget::resetContrast () +{ + if (contrast () == 0) { + return; + } + + bool sb = signalsBlocked (); + + if (!sb) { + blockSignals (true); + } + m_contrastInput->setValue (0); + if (!sb) { + blockSignals (false); + } + + // Immediate update (if signals aren't blocked) + emit settingsChanged (); +} + +// protected slot +void kpEffectBalanceWidget::resetGamma () +{ + if (gamma () == 0) { + return; + } + + bool sb = signalsBlocked (); + + if (!sb) { + blockSignals (true); + } + m_gammaInput->setValue (0); + recalculateGammaLabel (); + if (!sb) { + blockSignals (false); + } + + // Immediate update (if signals aren't blocked) + emit settingsChanged (); +} + + +// protected slot +void kpEffectBalanceWidget::resetAll () +{ + if (isNoOp ()) { + return; + } + + // Prevent multiple settingsChanged() which would normally result in + // redundant, expensive preview repaints + blockSignals (true); + + resetBrightness (); + resetContrast (); + resetGamma (); + + recalculateGammaLabel (); + + blockSignals (false); + + emit settingsChanged (); +} + + diff --git a/widgets/imagelib/effects/kpEffectBalanceWidget.h b/widgets/imagelib/effects/kpEffectBalanceWidget.h new file mode 100644 index 0000000..b2a200c --- /dev/null +++ b/widgets/imagelib/effects/kpEffectBalanceWidget.h @@ -0,0 +1,85 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectBalanceWidget_H +#define kpEffectBalanceWidget_H + + +#include "kpEffectWidgetBase.h" +#include "imagelib/kpImage.h" + + +class QLabel; + +class QComboBox; +class kpIntNumInput; + + + +class kpEffectBalanceWidget : public kpEffectWidgetBase +{ +Q_OBJECT + +public: + kpEffectBalanceWidget (bool actOnSelection, QWidget *parent); + ~kpEffectBalanceWidget () override; + + QString caption () const override; + + bool isNoOp () const override; + kpImage applyEffect (const kpImage &image) override; + + kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const override; + +protected: + int channels () const; + + int brightness () const; + int contrast () const; + int gamma () const; + +protected slots: + void recalculateGammaLabel (); + + void resetBrightness (); + void resetContrast (); + void resetGamma (); + + void resetAll (); + +protected: + kpIntNumInput *m_brightnessInput, + *m_contrastInput, + *m_gammaInput; + QLabel *m_gammaLabel; + QComboBox *m_channelsComboBox; +}; + + +#endif // kpEffectBalanceWidget_H diff --git a/widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp b/widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp new file mode 100644 index 0000000..d7069d9 --- /dev/null +++ b/widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp @@ -0,0 +1,184 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_BLUR_SHARPEN 0 + + +#include "kpEffectBlurSharpenWidget.h" + +#include "commands/imagelib/effects/kpEffectBlurSharpenCommand.h" + +#include "kpLogCategories.h" +#include +#include "kpNumInput.h" + +#include +#include +#include + + +kpEffectBlurSharpenWidget::kpEffectBlurSharpenWidget (bool actOnSelection, + QWidget *parent) + : kpEffectWidgetBase (actOnSelection, parent) +{ + auto *lay = new QGridLayout (this); + lay->setContentsMargins(0, 0, 0, 0); + + auto *amountLabel = new QLabel (i18n ("&Amount:"), this); + m_amountInput = new kpIntNumInput (this); + m_amountInput->setRange (-kpEffectBlurSharpen::MaxStrength/*- for blur*/, + +kpEffectBlurSharpen::MaxStrength/*+ for sharpen*/); + + m_typeLabel = new QLabel (this); + + // Make sure doesn't expand when the effect type changes, + // as otherwise, that would cause the preview pixmap label in the + // "More Effects" dialog (which our widget is inside) to contract, + // which would look a bit weird. + // + // We do this by setting the label to every possible string it could + // contain and fixing its height to the maximum seen size hint height. + + auto h = m_typeLabel->sizeHint ().height (); +#if DEBUG_KP_EFFECT_BLUR_SHARPEN + qCDebug(kpLogWidgets) << "initial size hint height=" << h; +#endif + + m_typeLabel->setText ( + kpEffectBlurSharpenCommand::nameForType (kpEffectBlurSharpen::Blur)); + h = qMax (h, m_typeLabel->sizeHint ().height ()); + + m_typeLabel->setText ( + kpEffectBlurSharpenCommand::nameForType (kpEffectBlurSharpen::Sharpen)); + h = qMax (h, m_typeLabel->sizeHint ().height ()); + + // Set this text last as the label's text needs to reflect the default + // effect of "None". + m_typeLabel->setText ( + kpEffectBlurSharpenCommand::nameForType (kpEffectBlurSharpen::None)); + h = qMax (h, m_typeLabel->sizeHint ().height ()); + +#if DEBUG_KP_EFFECT_BLUR_SHARPEN + qCDebug(kpLogWidgets) << "maximum size hint height" << h; +#endif + m_typeLabel->setFixedHeight (h); + m_typeLabel->setAlignment (Qt::AlignCenter); + + + amountLabel->setBuddy (m_amountInput); + + + lay->addWidget (amountLabel, 0, 0); + lay->addWidget (m_amountInput, 0, 1); + + lay->addWidget (m_typeLabel, 1, 0, 1, 2, Qt::AlignCenter); + + lay->setColumnStretch (1, 1); + + + connect (m_amountInput, &kpIntNumInput::valueChanged, + this, &kpEffectBlurSharpenWidget::settingsChangedDelayed); + + connect (m_amountInput, &kpIntNumInput::valueChanged, + this, &kpEffectBlurSharpenWidget::slotUpdateTypeLabel); +} + +kpEffectBlurSharpenWidget::~kpEffectBlurSharpenWidget () = default; + + +// public virtual [base kpEffectWidgetBase] +QString kpEffectBlurSharpenWidget::caption () const +{ + return {}; +} + + +// public virtual [base kpEffectWidgetBase] +bool kpEffectBlurSharpenWidget::isNoOp () const +{ + return (type () == kpEffectBlurSharpen::None); +} + +// public virtual [base kpEffectWidgetBase] +kpImage kpEffectBlurSharpenWidget::applyEffect (const kpImage &image) +{ + return kpEffectBlurSharpen::applyEffect (image, + type (), strength ()); +} + +// public virtual [base kpEffectWidgetBase] +kpEffectCommandBase *kpEffectBlurSharpenWidget::createCommand ( + kpCommandEnvironment *cmdEnviron) const +{ + return new kpEffectBlurSharpenCommand (type (), strength (), + m_actOnSelection, + cmdEnviron); +} + + +// protected slot +void kpEffectBlurSharpenWidget::slotUpdateTypeLabel () +{ + QString text = kpEffectBlurSharpenCommand::nameForType (type ()); + +#if DEBUG_KP_EFFECT_BLUR_SHARPEN + qCDebug(kpLogWidgets) << "kpEffectBlurSharpenWidget::slotUpdateTypeLabel() text=" + << text; +#endif + const int h = m_typeLabel->height (); + m_typeLabel->setText (text); + if (m_typeLabel->height () != h) + { + qCCritical(kpLogWidgets) << "Label changed height despite the hack in ctor:" + << "was=" << h + << "now=" << m_typeLabel->height (); + } +} + + +// protected +kpEffectBlurSharpen::Type kpEffectBlurSharpenWidget::type () const +{ + if (m_amountInput->value () == 0) { + return kpEffectBlurSharpen::None; + } + + if (m_amountInput->value () < 0) { + return kpEffectBlurSharpen::Blur; + } + + return kpEffectBlurSharpen::Sharpen; +} + +// protected +int kpEffectBlurSharpenWidget::strength () const +{ + return qAbs (m_amountInput->value ()); +} + + diff --git a/widgets/imagelib/effects/kpEffectBlurSharpenWidget.h b/widgets/imagelib/effects/kpEffectBlurSharpenWidget.h new file mode 100644 index 0000000..a0f932c --- /dev/null +++ b/widgets/imagelib/effects/kpEffectBlurSharpenWidget.h @@ -0,0 +1,72 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectBlurSharpenWidget_H +#define kpEffectBlurSharpenWidget_H + + +#include "imagelib/kpColor.h" + +#include "kpEffectWidgetBase.h" +#include "imagelib/effects/kpEffectBlurSharpen.h" + + +class QLabel; + +class kpIntNumInput; + + +class kpEffectBlurSharpenWidget : public kpEffectWidgetBase +{ +Q_OBJECT + +public: + kpEffectBlurSharpenWidget (bool actOnSelection, QWidget *parent); + ~kpEffectBlurSharpenWidget () override; + + QString caption () const override; + + bool isNoOp () const override; + kpImage applyEffect (const kpImage &image) override; + + kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const override; + +protected slots: + void slotUpdateTypeLabel (); + +protected: + kpEffectBlurSharpen::Type type () const; + int strength () const; + + kpIntNumInput *m_amountInput; + QLabel *m_typeLabel; +}; + + +#endif // kpEffectBlurSharpenWidget_H diff --git a/widgets/imagelib/effects/kpEffectEmbossWidget.cpp b/widgets/imagelib/effects/kpEffectEmbossWidget.cpp new file mode 100644 index 0000000..cdce08c --- /dev/null +++ b/widgets/imagelib/effects/kpEffectEmbossWidget.cpp @@ -0,0 +1,106 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_EMBOSS 0 + + +#include "kpEffectEmbossWidget.h" + +#include +#include + +#include "kpLogCategories.h" +#include + +#include "imagelib/effects/kpEffectEmboss.h" +#include "commands/imagelib/effects/kpEffectEmbossCommand.h" + + +kpEffectEmbossWidget::kpEffectEmbossWidget (bool actOnSelection, + QWidget *parent) + : kpEffectWidgetBase (actOnSelection, parent) +{ + auto *lay = new QGridLayout (this); + lay->setContentsMargins(0, 0, 0, 0); + + m_enableCheckBox = new QCheckBox (i18n ("E&nable"), this); + + + lay->addWidget (m_enableCheckBox, 0, 0, 1, 2, Qt::AlignCenter); + + + // (settingsChangedDelayed() instead of settingsChanged() so that the + // user can quickly press OK to apply effect to document directly and + // not have to wait for the also slow preview) + connect (m_enableCheckBox, &QCheckBox::toggled, + this, &kpEffectEmbossWidget::settingsChangedDelayed); +} + +kpEffectEmbossWidget::~kpEffectEmbossWidget () = default; + + +// public virtual [base kpEffectWidgetBase] +QString kpEffectEmbossWidget::caption () const +{ + return {}; +} + + +// public virtual [base kpEffectWidgetBase] +bool kpEffectEmbossWidget::isNoOp () const +{ + //return (m_amountInput->value () == 0); + return !m_enableCheckBox->isChecked (); +} + +// public virtual [base kpEffectWidgetBase] +kpImage kpEffectEmbossWidget::applyEffect (const kpImage &image) +{ + if (isNoOp ()) { + return image; + } + + return kpEffectEmboss::applyEffect (image, strength ()); +} + +// public virtual [base kpEffectWidgetBase] +kpEffectCommandBase *kpEffectEmbossWidget::createCommand ( + kpCommandEnvironment *cmdEnviron) const +{ + return new kpEffectEmbossCommand (strength (), + m_actOnSelection, + cmdEnviron); +} + +// protected +int kpEffectEmbossWidget::strength () const +{ + return kpEffectEmboss::MaxStrength; +} + + diff --git a/widgets/imagelib/effects/kpEffectEmbossWidget.h b/widgets/imagelib/effects/kpEffectEmbossWidget.h new file mode 100644 index 0000000..aa81cfe --- /dev/null +++ b/widgets/imagelib/effects/kpEffectEmbossWidget.h @@ -0,0 +1,62 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectEmbossWidget_H +#define kpEffectEmbossWidget_H + + +#include "imagelib/kpColor.h" +#include "kpEffectWidgetBase.h" + + +class QCheckBox; + +class kpEffectEmbossWidget : public kpEffectWidgetBase +{ +Q_OBJECT + +public: + kpEffectEmbossWidget (bool actOnSelection, QWidget *parent); + ~kpEffectEmbossWidget () override; + + QString caption () const override; + + bool isNoOp () const override; + kpImage applyEffect (const kpImage &image) override; + + kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const override; + +protected: + int strength () const; + + QCheckBox *m_enableCheckBox; +}; + + +#endif // kpEffectEmbossWidget_H diff --git a/widgets/imagelib/effects/kpEffectFlattenWidget.cpp b/widgets/imagelib/effects/kpEffectFlattenWidget.cpp new file mode 100644 index 0000000..94b8274 --- /dev/null +++ b/widgets/imagelib/effects/kpEffectFlattenWidget.cpp @@ -0,0 +1,182 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_FLATTEN 0 + + +#include "kpEffectFlattenWidget.h" + +#include "kpDefs.h" +#include "imagelib/effects/kpEffectFlatten.h" +#include "commands/imagelib/effects/kpEffectFlattenCommand.h" +#include "kpLogCategories.h" + +#include +#include +#include +#include + +#include +#include + + +// public static +QColor kpEffectFlattenWidget::s_lastColor1; +QColor kpEffectFlattenWidget::s_lastColor2; + +kpEffectFlattenWidget::kpEffectFlattenWidget (bool actOnSelection, + QWidget *parent) + : kpEffectWidgetBase (actOnSelection, parent) +{ + if (!s_lastColor1.isValid () || !s_lastColor2.isValid ()) + { + KConfigGroup cfgGroupSaver (KSharedConfig::openConfig (), kpSettingsGroupFlattenEffect); + + s_lastColor1 = cfgGroupSaver.readEntry (kpSettingFlattenEffectColor1, QColor ()); + if (!s_lastColor1.isValid ()) { + s_lastColor1 = Qt::red; + } + + s_lastColor2 = cfgGroupSaver.readEntry (kpSettingFlattenEffectColor2, QColor ()); + if (!s_lastColor2.isValid ()) { + s_lastColor2 = Qt::blue; + } + } + + + m_enableCheckBox = new QCheckBox (i18n ("E&nable"), this); + + m_color1Button = new KColorButton (s_lastColor1, this); + m_color2Button = new KColorButton (s_lastColor2, this); + + + m_color1Button->setEnabled (false); + m_color2Button->setEnabled (false); + + auto *lay = new QVBoxLayout (this); + lay->setContentsMargins(0, 0, 0, 0); + lay->addWidget (m_enableCheckBox); + lay->addWidget (m_color1Button); + lay->addWidget (m_color2Button); + + connect (m_enableCheckBox, &QCheckBox::toggled, + this, &kpEffectFlattenWidget::slotEnableChanged); + + connect (m_color1Button, &KColorButton::changed, + this, &kpEffectFlattenWidget::settingsChanged); + + connect (m_color2Button, &KColorButton::changed, + this, &kpEffectFlattenWidget::settingsChanged); +} + +kpEffectFlattenWidget::~kpEffectFlattenWidget () +{ + s_lastColor1 = color1 (); + s_lastColor2 = color2 (); + + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupFlattenEffect); + + cfg.writeEntry (kpSettingFlattenEffectColor1, s_lastColor1); + cfg.writeEntry (kpSettingFlattenEffectColor2, s_lastColor2); + cfg.sync (); +} + + +// public +QColor kpEffectFlattenWidget::color1 () const +{ + return m_color1Button->color (); +} + +// public +QColor kpEffectFlattenWidget::color2 () const +{ + return m_color2Button->color (); +} + + +// +// kpEffectFlattenWidget implements kpEffectWidgetBase interface +// + +// public virtual [base kpEffectWidgetBase] +QString kpEffectFlattenWidget::caption () const +{ + return i18n ("Colors"); +} + + +// public virtual [base kpEffectWidgetBase] +bool kpEffectFlattenWidget::isNoOp () const +{ + return !m_enableCheckBox->isChecked (); +} + +// public virtual [base kpEffectWidgetBase] +kpImage kpEffectFlattenWidget::applyEffect (const kpImage &image) +{ +#if DEBUG_KP_EFFECT_FLATTEN + qCDebug(kpLogWidgets) << "kpEffectFlattenWidget::applyEffect() nop=" + << isNoOp () << endl; +#endif + + if (isNoOp ()) { + return image; + } + + return kpEffectFlatten::applyEffect (image, color1 (), color2 ()); +} + + +// public virtual [base kpEffectWidgetBase] +kpEffectCommandBase *kpEffectFlattenWidget::createCommand ( + kpCommandEnvironment *cmdEnviron) const +{ + return new kpEffectFlattenCommand (color1 (), color2 (), + m_actOnSelection, + cmdEnviron); +} + + +// protected slot: +void kpEffectFlattenWidget::slotEnableChanged (bool enable) +{ +#if DEBUG_KP_EFFECT_FLATTEN + qCDebug(kpLogWidgets) << "kpEffectFlattenWidget::slotEnableChanged(" << enable + << ") enableButton=" << m_enableCheckBox->isChecked () + << endl; +#endif + + m_color1Button->setEnabled (enable); + m_color2Button->setEnabled (enable); + + emit settingsChanged (); +} + + diff --git a/widgets/imagelib/effects/kpEffectFlattenWidget.h b/widgets/imagelib/effects/kpEffectFlattenWidget.h new file mode 100644 index 0000000..bfa2d74 --- /dev/null +++ b/widgets/imagelib/effects/kpEffectFlattenWidget.h @@ -0,0 +1,80 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectFlattenWidget_H +#define kpEffectFlattenWidget_H + + +#include + +#include "kpEffectWidgetBase.h" + + +class QCheckBox; + +class KColorButton; + + +class kpEffectFlattenWidget : public kpEffectWidgetBase +{ +Q_OBJECT + +public: + kpEffectFlattenWidget (bool actOnSelection, QWidget *parent); + ~kpEffectFlattenWidget () override; + + + static QColor s_lastColor1, s_lastColor2; + + + QColor color1 () const; + QColor color2 () const; + + + // + // kpEffectWidgetBase interface + // + + QString caption () const override; + + bool isNoOp () const override; + kpImage applyEffect (const kpImage &image) override; + + kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const override; + +protected slots: + void slotEnableChanged (bool enable); + +protected: + QCheckBox *m_enableCheckBox; + KColorButton *m_color1Button, *m_color2Button; +}; + + +#endif // kpEffectFlattenWidget_H diff --git a/widgets/imagelib/effects/kpEffectHSVWidget.cpp b/widgets/imagelib/effects/kpEffectHSVWidget.cpp new file mode 100644 index 0000000..d585daf --- /dev/null +++ b/widgets/imagelib/effects/kpEffectHSVWidget.cpp @@ -0,0 +1,120 @@ + +/* + Copyright (c) 2007 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectHSVWidget.h" + +#include +#include + +#include "kpLogCategories.h" +#include + +#include "imagelib/effects/kpEffectHSV.h" +#include "commands/imagelib/effects/kpEffectHSVCommand.h" + + +kpEffectHSVWidget::kpEffectHSVWidget (bool actOnSelection, QWidget *parent) + : kpEffectWidgetBase (actOnSelection, parent) +{ + auto *lay = new QGridLayout (this); + lay->setContentsMargins(0, 0, 0, 0); + + auto *hueLabel = new QLabel (i18n ("&Hue:"), this); + auto *saturationLabel = new QLabel (i18n ("&Saturation:"), this); + auto *valueLabel = new QLabel (i18nc ("The V of HSV", "&Value:"), this); + + m_hueInput = new kpDoubleNumInput (this); + m_hueInput->setRange (-180, 180, 15/*step*/); + + m_saturationInput = new kpDoubleNumInput (this); + m_saturationInput->setRange (-1, 1, 0.1/*step*/); + + m_valueInput = new kpDoubleNumInput (this); + m_valueInput->setRange (-1, 1, 0.1/*step*/); + + hueLabel->setBuddy (m_hueInput); + saturationLabel->setBuddy (m_saturationInput); + valueLabel->setBuddy (m_valueInput); + + lay->addWidget (hueLabel, 0, 0); + lay->addWidget (m_hueInput, 0, 1); + + lay->addWidget (saturationLabel, 1, 0); + lay->addWidget (m_saturationInput, 1, 1); + + lay->addWidget (valueLabel, 2, 0); + lay->addWidget (m_valueInput, 2, 1); + + lay->setColumnStretch (1, 1); + + + connect (m_hueInput, &kpDoubleNumInput::valueChanged, + this, &kpEffectHSVWidget::settingsChangedDelayed); + + connect (m_saturationInput, &kpDoubleNumInput::valueChanged, + this, &kpEffectHSVWidget::settingsChangedDelayed); + + connect (m_valueInput, &kpDoubleNumInput::valueChanged, + this, &kpEffectHSVWidget::settingsChangedDelayed); +} + +kpEffectHSVWidget::~kpEffectHSVWidget () = default; + + +// public virtual [base kpEffectWidgetBase] +QString kpEffectHSVWidget::caption () const +{ + // TODO: Why doesn't this have a caption? Ditto for the other effects. + return {}; +} + + +// public virtual [base kpEffectWidgetBase] +bool kpEffectHSVWidget::isNoOp () const +{ + return m_hueInput->value () == 0 && m_saturationInput->value () == 0 && m_valueInput->value () == 0; +} + +// public virtual [base kpEffectWidgetBase] +kpImage kpEffectHSVWidget::applyEffect (const kpImage &image) +{ + return kpEffectHSV::applyEffect (image, + m_hueInput->value (), m_saturationInput->value (), m_valueInput->value ()); +} + +// public virtual [base kpEffectWidgetBase] +kpEffectCommandBase *kpEffectHSVWidget::createCommand ( + kpCommandEnvironment *cmdEnviron) const +{ + return new kpEffectHSVCommand ( + m_hueInput->value (), m_saturationInput->value (), m_valueInput->value (), + m_actOnSelection, + cmdEnviron); +} + + diff --git a/widgets/imagelib/effects/kpEffectHSVWidget.h b/widgets/imagelib/effects/kpEffectHSVWidget.h new file mode 100644 index 0000000..ed196f3 --- /dev/null +++ b/widgets/imagelib/effects/kpEffectHSVWidget.h @@ -0,0 +1,62 @@ + +/* + Copyright (c) 2007 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectHSVWidget_H +#define kpEffectHSVWidget_H + + +#include "kpEffectWidgetBase.h" +#include "kpNumInput.h" + +class kpDoubleNumInput; + + +class kpEffectHSVWidget : public kpEffectWidgetBase +{ +Q_OBJECT + +public: + kpEffectHSVWidget (bool actOnSelection, QWidget *parent); + ~kpEffectHSVWidget () override; + + QString caption () const override; + + bool isNoOp () const override; + kpImage applyEffect (const kpImage &image) override; + + kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const override; + +protected: + kpDoubleNumInput *m_hueInput; + kpDoubleNumInput *m_saturationInput; + kpDoubleNumInput *m_valueInput; +}; + + +#endif // kpEffectHSVWidget_H diff --git a/widgets/imagelib/effects/kpEffectInvertWidget.cpp b/widgets/imagelib/effects/kpEffectInvertWidget.cpp new file mode 100644 index 0000000..f14cf3b --- /dev/null +++ b/widgets/imagelib/effects/kpEffectInvertWidget.cpp @@ -0,0 +1,212 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_INVERT 0 + + +#include "kpEffectInvertWidget.h" + +#include "imagelib/effects/kpEffectInvert.h" +#include "commands/imagelib/effects/kpEffectInvertCommand.h" +#include "pixmapfx/kpPixmapFX.h" + +#include "kpLogCategories.h" +#include + +#include +#include +#include +#include + + +kpEffectInvertWidget::kpEffectInvertWidget (bool actOnSelection, + QWidget *parent) + : kpEffectWidgetBase (actOnSelection, parent) +{ + auto *topLevelLay = new QVBoxLayout (this); + topLevelLay->setContentsMargins(0, 0, 0, 0); + + auto *centerWidget = new QWidget (this); + topLevelLay->addWidget (centerWidget, 0/*stretch*/, Qt::AlignCenter); + + auto *centerWidgetLay = new QVBoxLayout (centerWidget ); + centerWidgetLay->setContentsMargins(0, 0, 0, 0); + + m_redCheckBox = new QCheckBox (i18n ("&Red"), centerWidget); + m_greenCheckBox = new QCheckBox (i18n ("&Green"), centerWidget); + m_blueCheckBox = new QCheckBox (i18n ("&Blue"), centerWidget); + + auto *spaceWidget = new QWidget (centerWidget); + spaceWidget->setFixedSize (1, fontMetrics ().height () / 4); + + m_allCheckBox = new QCheckBox (i18n ("&All"), centerWidget); + + + m_redCheckBox->setChecked (false); + m_greenCheckBox->setChecked (false); + m_blueCheckBox->setChecked (false); + + m_allCheckBox->setChecked (false); + + + centerWidgetLay->addWidget (m_redCheckBox); + centerWidgetLay->addWidget (m_greenCheckBox); + centerWidgetLay->addWidget (m_blueCheckBox); + + centerWidgetLay->addWidget (spaceWidget); + + centerWidgetLay->addWidget (m_allCheckBox); + + + m_inSignalHandler = false; + connect (m_redCheckBox, &QCheckBox::toggled, + this, &kpEffectInvertWidget::slotRGBCheckBoxToggled); + + connect (m_greenCheckBox, &QCheckBox::toggled, + this, &kpEffectInvertWidget::slotRGBCheckBoxToggled); + + connect (m_blueCheckBox, &QCheckBox::toggled, + this, &kpEffectInvertWidget::slotRGBCheckBoxToggled); + + connect (m_allCheckBox, &QCheckBox::toggled, + this, &kpEffectInvertWidget::slotAllCheckBoxToggled); +} + +kpEffectInvertWidget::~kpEffectInvertWidget () = default; + + +// public +int kpEffectInvertWidget::channels () const +{ +#if DEBUG_KP_EFFECT_INVERT + qCDebug(kpLogWidgets) << "kpEffectInvertWidget::channels()" + << " isChecked: r=" << m_redCheckBox->isChecked () + << " g=" << m_greenCheckBox->isChecked () + << " b=" << m_blueCheckBox->isChecked () + << endl; +#endif + + int channels = 0; + + + if (m_redCheckBox->isChecked ()) { + channels |= kpEffectInvert::Red; + } + + if (m_greenCheckBox->isChecked ()) { + channels |= kpEffectInvert::Green; + } + + if (m_blueCheckBox->isChecked ()) { + channels |= kpEffectInvert::Blue; + } + + +#if DEBUG_KP_EFFECT_INVERT + qCDebug(kpLogWidgets) << "\treturning channels=" << (int *) channels; +#endif + return channels; +} + + +// +// kpEffectInvertWidget implements kpEffectWidgetBase interface +// + +// public virtual [base kpEffectWidgetBase] +QString kpEffectInvertWidget::caption () const +{ + return i18n ("Channels"); +} + + +// public virtual [base kpEffectWidgetBase] +bool kpEffectInvertWidget::isNoOp () const +{ + return (channels () == kpEffectInvert::None); +} + +// public virtual [base kpEffectWidgetBase] +kpImage kpEffectInvertWidget::applyEffect (const kpImage &image) +{ + return kpEffectInvert::applyEffect (image, channels ()); +} + + +// public virtual [base kpEffectWidgetBase] +kpEffectCommandBase *kpEffectInvertWidget::createCommand ( + kpCommandEnvironment *cmdEnviron) const +{ + return new kpEffectInvertCommand (channels (), + m_actOnSelection, + cmdEnviron); +} + + +// protected slots +void kpEffectInvertWidget::slotRGBCheckBoxToggled () +{ + if (m_inSignalHandler) { + return; + } + + m_inSignalHandler = true; + + //blockSignals (true); + m_allCheckBox->setChecked (m_redCheckBox->isChecked () && + m_blueCheckBox->isChecked () && + m_greenCheckBox->isChecked ()); + //blockSignals (false); + + emit settingsChanged (); + + m_inSignalHandler = false; +} + +// protected slot +void kpEffectInvertWidget::slotAllCheckBoxToggled () +{ + if (m_inSignalHandler) { + return; + } + + m_inSignalHandler = true; + + //blockSignals (true); + m_redCheckBox->setChecked (m_allCheckBox->isChecked ()); + m_greenCheckBox->setChecked (m_allCheckBox->isChecked ()); + m_blueCheckBox->setChecked (m_allCheckBox->isChecked ()); + //blockSignals (false); + + emit settingsChanged (); + + m_inSignalHandler = false; +} + + + diff --git a/widgets/imagelib/effects/kpEffectInvertWidget.h b/widgets/imagelib/effects/kpEffectInvertWidget.h new file mode 100644 index 0000000..c86f160 --- /dev/null +++ b/widgets/imagelib/effects/kpEffectInvertWidget.h @@ -0,0 +1,77 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectInvertWidget_H +#define kpEffectInvertWidget_H + + +#include "kpEffectWidgetBase.h" + + +class QCheckBox; + + +class kpEffectInvertWidget : public kpEffectWidgetBase +{ +Q_OBJECT + +public: + kpEffectInvertWidget (bool actOnSelection, + QWidget *parent); + ~kpEffectInvertWidget () override; + + + int channels () const; + + + // + // kpEffectWidgetBase interface + // + + QString caption () const override; + + bool isNoOp () const override; + kpImage applyEffect (const kpImage &image) override; + + kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const override; + +protected slots: + void slotRGBCheckBoxToggled (); + void slotAllCheckBoxToggled (); + +protected: + QCheckBox *m_redCheckBox, *m_greenCheckBox, *m_blueCheckBox, + *m_allCheckBox; + + // blockSignals() didn't seem to work + bool m_inSignalHandler; +}; + + +#endif // kpEffectInvertWidget_H diff --git a/widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp b/widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp new file mode 100644 index 0000000..362b916 --- /dev/null +++ b/widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp @@ -0,0 +1,178 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_EFFECT_REDUCE_COLORS 0 + + +#include "kpEffectReduceColorsWidget.h" + +#include "imagelib/effects/kpEffectReduceColors.h" +#include "commands/imagelib/effects/kpEffectReduceColorsCommand.h" +#include "pixmapfx/kpPixmapFX.h" + +#include "kpLogCategories.h" +#include + +#include +#include +#include +#include +#include +#include +#include + + +kpEffectReduceColorsWidget::kpEffectReduceColorsWidget (bool actOnSelection, + QWidget *parent) + : kpEffectWidgetBase (actOnSelection, parent) +{ + auto *lay = new QVBoxLayout (this); + lay->setContentsMargins(0, 0, 0, 0); + + m_blackAndWhiteRadioButton = + new QRadioButton (i18n ("&Monochrome"), this); + + m_blackAndWhiteDitheredRadioButton = + new QRadioButton (i18n ("Mo&nochrome (dithered)"), this); + + m_8BitRadioButton = new QRadioButton (i18n ("256 co&lor"), this); + + m_8BitDitheredRadioButton = new QRadioButton (i18n ("256 colo&r (dithered)"), this); + + m_24BitRadioButton = new QRadioButton (i18n ("24-&bit color"), this); + + + // LOCOMPAT: don't think this is needed + auto *buttonGroup = new QButtonGroup (this); + buttonGroup->addButton (m_blackAndWhiteRadioButton); + buttonGroup->addButton (m_blackAndWhiteDitheredRadioButton); + buttonGroup->addButton (m_8BitRadioButton); + buttonGroup->addButton (m_8BitDitheredRadioButton); + buttonGroup->addButton (m_24BitRadioButton); + + m_defaultRadioButton = m_24BitRadioButton; + m_defaultRadioButton->setChecked (true); + + lay->addWidget (m_blackAndWhiteRadioButton); + lay->addWidget (m_blackAndWhiteDitheredRadioButton); + lay->addWidget (m_8BitRadioButton); + lay->addWidget (m_8BitDitheredRadioButton); + lay->addWidget (m_24BitRadioButton); + + connect (m_blackAndWhiteRadioButton, &QRadioButton::toggled, + this, &kpEffectReduceColorsWidget::settingsChanged); + + connect (m_blackAndWhiteDitheredRadioButton, &QRadioButton::toggled, + this, &kpEffectReduceColorsWidget::settingsChanged); + + connect (m_8BitRadioButton, &QRadioButton::toggled, + this, &kpEffectReduceColorsWidget::settingsChanged); + + connect (m_8BitDitheredRadioButton, &QRadioButton::toggled, + this, &kpEffectReduceColorsWidget::settingsChanged); + + connect (m_24BitRadioButton, &QRadioButton::toggled, + this, &kpEffectReduceColorsWidget::settingsChanged); +} + +//--------------------------------------------------------------------- + +// public +int kpEffectReduceColorsWidget::depth () const +{ + // These values (1, 8, 32) are QImage's supported depths. + // TODO: Qt-4.7.1: 1, 8, 16, 24 and 32 + if (m_blackAndWhiteRadioButton->isChecked () || + m_blackAndWhiteDitheredRadioButton->isChecked ()) + { + return 1; + } + + if (m_8BitRadioButton->isChecked () || + m_8BitDitheredRadioButton->isChecked ()) + { + return 8; + } + + if (m_24BitRadioButton->isChecked ()) + { + return 32; + } + + return 0; +} + +//--------------------------------------------------------------------- + +// public +bool kpEffectReduceColorsWidget::dither () const +{ + return (m_blackAndWhiteDitheredRadioButton->isChecked () || + m_8BitDitheredRadioButton->isChecked ()); +} + +//--------------------------------------------------------------------- +// +// kpEffectReduceColorsWidget implements kpEffectWidgetBase interface +// + +// public virtual [base kpEffectWidgetBase] +QString kpEffectReduceColorsWidget::caption () const +{ + return i18n ("Reduce To"); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpEffectWidgetBase] +bool kpEffectReduceColorsWidget::isNoOp () const +{ + return (!m_defaultRadioButton || m_defaultRadioButton->isChecked ()); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpEffectWidgetBase] +kpImage kpEffectReduceColorsWidget::applyEffect (const kpImage &image) +{ + return kpEffectReduceColors::applyEffect (image, depth (), dither ()); +} + +//--------------------------------------------------------------------- + +// public virtual [base kpEffectWidgetBase] +kpEffectCommandBase *kpEffectReduceColorsWidget::createCommand ( + kpCommandEnvironment *cmdEnviron) const +{ + return new kpEffectReduceColorsCommand (depth (), dither (), + m_actOnSelection, + cmdEnviron); +} + +//--------------------------------------------------------------------- + diff --git a/widgets/imagelib/effects/kpEffectReduceColorsWidget.h b/widgets/imagelib/effects/kpEffectReduceColorsWidget.h new file mode 100644 index 0000000..7acc2ca --- /dev/null +++ b/widgets/imagelib/effects/kpEffectReduceColorsWidget.h @@ -0,0 +1,73 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectReduceColorsWidget_H +#define kpEffectReduceColorsWidget_H + + +#include "kpEffectWidgetBase.h" + + +class QRadioButton; + + +class kpEffectReduceColorsWidget : public kpEffectWidgetBase +{ +Q_OBJECT + +public: + kpEffectReduceColorsWidget (bool actOnSelection, + QWidget *parent); + + int depth () const; + bool dither () const; + + + // + // kpEffectWidgetBase interface + // + + QString caption () const override; + + bool isNoOp () const override; + kpImage applyEffect (const kpImage &image) override; + + kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const override; + +protected: + QRadioButton *m_blackAndWhiteRadioButton, + *m_blackAndWhiteDitheredRadioButton, + *m_8BitRadioButton, + *m_8BitDitheredRadioButton, + *m_24BitRadioButton; + QRadioButton *m_defaultRadioButton; +}; + + +#endif // kpEffectReduceColorsWidget_H diff --git a/widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp b/widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp new file mode 100644 index 0000000..be1bdaf --- /dev/null +++ b/widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp @@ -0,0 +1,138 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2006 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectToneEnhanceWidget.h" + +#include "imagelib/effects/kpEffectToneEnhance.h" +#include "commands/imagelib/effects/kpEffectToneEnhanceCommand.h" +#include "pixmapfx/kpPixmapFX.h" + +#include +#include + +#include "kpLogCategories.h" +#include + +kpEffectToneEnhanceWidget::kpEffectToneEnhanceWidget (bool actOnSelection, + QWidget *parent) + : kpEffectWidgetBase (actOnSelection, parent), + m_granularityInput (nullptr), + m_amountInput (nullptr) + +{ + auto *lay = new QGridLayout (this); + lay->setContentsMargins(0, 0, 0, 0); + + // See kpEffectToneEnhance::applyEffect(). + + auto *granularityLabel = new QLabel (i18n ("&Granularity:"), this); + + auto *amountLabel = new QLabel (i18n ("&Amount:"), this); + + m_granularityInput = new kpDoubleNumInput (this); + m_granularityInput->setRange (0, 1, 0.1/*step*/); + + m_amountInput = new kpDoubleNumInput (this); + m_amountInput->setRange (0, 1, 0.1/*step*/); + + granularityLabel->setBuddy (m_granularityInput); + amountLabel->setBuddy (m_amountInput); + + + lay->addWidget (granularityLabel, 0, 0); + lay->addWidget (m_granularityInput, 0, 1); + + lay->addWidget (amountLabel, 1, 0); + lay->addWidget (m_amountInput, 1, 1); + + lay->setColumnStretch (1, 1); + + + connect (m_granularityInput, &kpDoubleNumInput::valueChanged, + this, &kpEffectToneEnhanceWidget::settingsChangedDelayed); + + connect (m_amountInput, &kpDoubleNumInput::valueChanged, + this, &kpEffectToneEnhanceWidget::settingsChangedDelayed); + +} + +kpEffectToneEnhanceWidget::~kpEffectToneEnhanceWidget () = default; + + +// public virtual [base kpEffectWidgetBase] +QString kpEffectToneEnhanceWidget::caption () const +{ + // TODO: Why doesn't this have a caption? Ditto for the other effects. + return {}; +} + + +// private +double kpEffectToneEnhanceWidget::amount () const +{ + return m_amountInput ? m_amountInput->value () : 0; +} + +// private +double kpEffectToneEnhanceWidget::granularity () const +{ + return m_granularityInput ? m_granularityInput->value () : 0; +} + + +// public virtual [base kpEffectWidgetBase] +bool kpEffectToneEnhanceWidget::isNoOp () const +{ + // If the "amount" is 0, nothing happens regardless of the granularity. + // Note that if "granularity" is 0 but "amount" > 0, the effect _is_ active. + // Therefore, "granularity" should have no involvement in this check. + if (amount () == 0) { + return true; + } + + return false; +} + +// public virtual [base kpEffectWidgetBase] +kpImage kpEffectToneEnhanceWidget::applyEffect (const kpImage &image) +{ + return kpEffectToneEnhance::applyEffect (image, + granularity (), amount ()); +} + +// public virtual [base kpEffectWidgetBase] +kpEffectCommandBase *kpEffectToneEnhanceWidget::createCommand ( + kpCommandEnvironment *cmdEnviron) const +{ + return new kpEffectToneEnhanceCommand (granularity (), amount (), + m_actOnSelection, + cmdEnviron); +} + + diff --git a/widgets/imagelib/effects/kpEffectToneEnhanceWidget.h b/widgets/imagelib/effects/kpEffectToneEnhanceWidget.h new file mode 100644 index 0000000..dbe8851 --- /dev/null +++ b/widgets/imagelib/effects/kpEffectToneEnhanceWidget.h @@ -0,0 +1,68 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2006 Mike Gashler + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectToneEnhanceWidget_H +#define kpEffectToneEnhanceWidget_H + + +#include "kpEffectWidgetBase.h" +#include "kpNumInput.h" + +class kpDoubleNumInput; + + +class kpEffectToneEnhanceWidget : public kpEffectWidgetBase +{ +Q_OBJECT + +public: + kpEffectToneEnhanceWidget (bool actOnSelection, + QWidget *parent); + ~kpEffectToneEnhanceWidget () override; + + QString caption () const override; + +private: + double amount () const; + double granularity () const; + +public: + bool isNoOp () const override; + kpImage applyEffect (const kpImage &image) override; + + kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const override; + +protected: + kpDoubleNumInput *m_granularityInput; + kpDoubleNumInput *m_amountInput; +}; + + +#endif // kpEffectToneEnhanceWidget_H diff --git a/widgets/imagelib/effects/kpEffectWidgetBase.cpp b/widgets/imagelib/effects/kpEffectWidgetBase.cpp new file mode 100644 index 0000000..db9bf4f --- /dev/null +++ b/widgets/imagelib/effects/kpEffectWidgetBase.cpp @@ -0,0 +1,48 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpEffectWidgetBase.h" + + +kpEffectWidgetBase::kpEffectWidgetBase (bool actOnSelection, + QWidget *parent) + : QWidget (parent), + m_actOnSelection (actOnSelection) +{ +} + +kpEffectWidgetBase::~kpEffectWidgetBase () = default; + + +// public +QString kpEffectWidgetBase::caption () const +{ + return {}; +} + + diff --git a/widgets/imagelib/effects/kpEffectWidgetBase.h b/widgets/imagelib/effects/kpEffectWidgetBase.h new file mode 100644 index 0000000..7b094f2 --- /dev/null +++ b/widgets/imagelib/effects/kpEffectWidgetBase.h @@ -0,0 +1,73 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpEffectWidgetBase_H +#define kpEffectWidgetBase_H + + +#include + +#include "imagelib/kpImage.h" + + +class kpCommandEnvironment; +class kpEffectCommandBase; + + +class kpEffectWidgetBase : public QWidget +{ +Q_OBJECT + +public: + kpEffectWidgetBase (bool actOnSelection, QWidget *parent); + ~kpEffectWidgetBase () override; + +signals: + void settingsChangedNoWaitCursor (); + + void settingsChanged (); + + // (same as settingsChanged() but preview doesn't update until there + // has been no activity for a while - used for sliders in slow effects) + void settingsChangedDelayed (); + +public: + virtual QString caption () const; + + virtual bool isNoOp () const = 0; + virtual kpImage applyEffect (const kpImage &image) = 0; + + virtual kpEffectCommandBase *createCommand ( + kpCommandEnvironment *cmdEnviron) const = 0; + +protected: + bool m_actOnSelection; +}; + + +#endif // kpEffectWidgetBase_H diff --git a/widgets/imagelib/effects/kpNumInput.cpp b/widgets/imagelib/effects/kpNumInput.cpp new file mode 100644 index 0000000..09204c3 --- /dev/null +++ b/widgets/imagelib/effects/kpNumInput.cpp @@ -0,0 +1,705 @@ +/* This file is part of the KDE libraries + * Initial implementation: + * Copyright (c) 1997 Patrick Dowler + * Rewritten and maintained by: + * Copyright (c) 2000 Dirk Mueller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "kpNumInput.h" + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +static inline int calcDiffByTen(int x, int y) +{ + // calculate ( x - y ) / 10 without overflowing ints: + return (x / 10) - (y / 10) + (x % 10 - y % 10) / 10; +} + +// ---------------------------------------------------------------------------- + +class kpNumInputPrivate +{ +public: + kpNumInputPrivate(kpNumInput *q) : + q(q), + column1Width(0), + column2Width(0), + label(nullptr), + slider(nullptr), + labelAlignment() + { + } + + static kpNumInputPrivate *get(const kpNumInput *i) + { + return i->d; + } + + kpNumInput *q; + int column1Width, column2Width; + + QLabel *label; + QSlider *slider; + QSize sliderSize, labelSize; + + Qt::Alignment labelAlignment; +}; + +#define K_USING_kpNumInput_P(_d) kpNumInputPrivate *_d = kpNumInputPrivate::get(this) + +kpNumInput::kpNumInput(QWidget *parent) + : QWidget(parent), d(new kpNumInputPrivate(this)) +{ + setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed)); + setFocusPolicy(Qt::StrongFocus); +} + +kpNumInput::~kpNumInput() +{ + delete d; +} + +QSlider *kpNumInput::slider() const +{ + return d->slider; +} + +bool kpNumInput::showSlider() const +{ + return d->slider; +} + +void kpNumInput::setLabel(const QString &label, Qt::Alignment a) +{ + if (label.isEmpty()) { + delete d->label; + d->label = nullptr; + d->labelAlignment = {}; + } else { + if (!d->label) { + d->label = new QLabel(this); + } + d->label->setText(label); + d->label->setObjectName(QStringLiteral("kpNumInput::QLabel")); + d->label->setAlignment(a); + // if no vertical alignment set, use Top alignment + if (!(a & (Qt::AlignTop | Qt::AlignBottom | Qt::AlignVCenter))) { + a |= Qt::AlignTop; + } + d->labelAlignment = a; + } + + layout(); +} + +QString kpNumInput::label() const +{ + return d->label ? d->label->text() : QString(); +} + +void kpNumInput::layout() +{ + // label sizeHint + d->labelSize = (d->label ? d->label->sizeHint() : QSize(0, 0)); + + if (d->label && (d->labelAlignment & Qt::AlignVCenter)) { + d->column1Width = d->labelSize.width() + 4; + } else { + d->column1Width = 0; + } + + // slider sizeHint + d->sliderSize = (d->slider ? d->slider->sizeHint() : QSize(0, 0)); + + doLayout(); + +} + +QSize kpNumInput::sizeHint() const +{ + return minimumSizeHint(); +} + +void kpNumInput::setSteps(int minor, int major) +{ + if (d->slider) { + d->slider->setSingleStep(minor); + d->slider->setPageStep(major); + } +} + +// ---------------------------------------------------------------------------- + +class kpIntNumInput::kpIntNumInputPrivate +{ +public: + kpIntNumInput *q; + QSpinBox *intSpinBox; + QSize intSpinBoxSize; + + kpIntNumInputPrivate(kpIntNumInput *q) + : q(q) {} +}; + +kpIntNumInput::kpIntNumInput(QWidget *parent) + : kpNumInput(parent) + , d(new kpIntNumInputPrivate(this)) +{ + initWidget(0); +} + +kpIntNumInput::kpIntNumInput(int val, QWidget *parent) + : kpNumInput(parent) + , d(new kpIntNumInputPrivate(this)) +{ + initWidget(val); +} + +QSpinBox *kpIntNumInput::spinBox() const +{ + return d->intSpinBox; +} + +void kpIntNumInput::initWidget(int val) +{ + d->intSpinBox = new QSpinBox(this); + d->intSpinBox->setRange(INT_MIN, INT_MAX); + d->intSpinBox->setSingleStep(1); + d->intSpinBox->setValue(val); + d->intSpinBox->setObjectName(QStringLiteral("kpIntNumInput::QSpinBox")); + + connect(d->intSpinBox, QOverload::of(&QSpinBox::valueChanged), this, &kpIntNumInput::spinValueChanged); + + setFocusProxy(d->intSpinBox); + layout(); +} + +void kpIntNumInput::spinValueChanged(int val) +{ + K_USING_kpNumInput_P(priv); + + if (priv->slider) { + priv->slider->setValue(val); + } + + emit valueChanged(val); +} + +void kpIntNumInput::setRange(int lower, int upper, int singleStep) +{ + if (upper < lower || singleStep <= 0) { + qDebug() << "WARNING: kpIntNumInput::setRange() called with bad arguments. Ignoring call..."; + return; + } + + d->intSpinBox->setMinimum(lower); + d->intSpinBox->setMaximum(upper); + d->intSpinBox->setSingleStep(singleStep); + + singleStep = d->intSpinBox->singleStep(); // maybe QRangeControl didn't like our lineStep? + + layout(); + + // update slider information + K_USING_kpNumInput_P(priv); + if (!priv->slider) { + priv->slider = new QSlider(Qt::Horizontal, this); + connect(priv->slider, &QSlider::valueChanged, + d->intSpinBox, &QSpinBox::setValue); + priv->slider->setTickPosition(QSlider::TicksBelow); + layout(); + } + + const int value = d->intSpinBox->value(); + priv->slider->setRange(d->intSpinBox->minimum(), d->intSpinBox->maximum()); + priv->slider->setPageStep(d->intSpinBox->singleStep()); + priv->slider->setValue(value); + // calculate (upper-lower)/10 without overflowing int's: + const int major = calcDiffByTen(d->intSpinBox->maximum(), d->intSpinBox->minimum()); + + priv->slider->setSingleStep(d->intSpinBox->singleStep()); + priv->slider->setPageStep(qMax(1, major)); + priv->slider->setTickInterval(major); +} + +void kpIntNumInput::setMinimum(int min) +{ + setRange(min, d->intSpinBox->maximum(), d->intSpinBox->singleStep()); +} + +int kpIntNumInput::minimum() const +{ + return d->intSpinBox->minimum(); +} + +void kpIntNumInput::setMaximum(int max) +{ + setRange(d->intSpinBox->minimum(), max, d->intSpinBox->singleStep()); +} + +int kpIntNumInput::maximum() const +{ + return d->intSpinBox->maximum(); +} + +int kpIntNumInput::singleStep() const +{ + return d->intSpinBox->singleStep(); +} + +void kpIntNumInput::setSingleStep(int singleStep) +{ + d->intSpinBox->setSingleStep(singleStep); +} + +void kpIntNumInput::setSuffix(const QString &suffix) +{ + d->intSpinBox->setSuffix(suffix); + + layout(); +} + +QString kpIntNumInput::suffix() const +{ + return d->intSpinBox->suffix(); +} + +void kpIntNumInput::setEditFocus(bool mark) +{ + if (mark) + { + d->intSpinBox->setFocus(); + } +} + +QSize kpIntNumInput::minimumSizeHint() const +{ + K_USING_kpNumInput_P(priv); + ensurePolished(); + + int w; + int h; + + h = qMax(d->intSpinBoxSize.height(), priv->sliderSize.height()); + + // if in extra row, then count it here + if (priv->label && (priv->labelAlignment & (Qt::AlignBottom | Qt::AlignTop))) { + h += 4 + priv->labelSize.height(); + } else { + // label is in the same row as the other widgets + h = qMax(h, priv->labelSize.height() + 2); + } + + w = priv->slider ? priv->slider->sizeHint().width() : 0; + w += priv->column1Width + priv->column2Width; + + if (priv->labelAlignment & (Qt::AlignTop | Qt::AlignBottom)) { + w = qMax(w, priv->labelSize.width() + 4); + } + + return {w, h}; +} + +void kpIntNumInput::doLayout() +{ + K_USING_kpNumInput_P(priv); + + d->intSpinBoxSize = d->intSpinBox->sizeHint(); + priv->column2Width = d->intSpinBoxSize.width(); + + if (priv->label) { + priv->label->setBuddy(d->intSpinBox); + } +} + +void kpIntNumInput::resizeEvent(QResizeEvent *e) +{ + K_USING_kpNumInput_P(priv); + + int w = priv->column1Width; + int h = 0; + const int spacingHint = 0;//style()->pixelMetric(QStyle::PM_DefaultLayoutSpacing); + + if (priv->label && (priv->labelAlignment & Qt::AlignTop)) { + priv->label->setGeometry(0, 0, e->size().width(), priv->labelSize.height()); + h += priv->labelSize.height() + spacingHint; + } + + if (priv->label && (priv->labelAlignment & Qt::AlignVCenter)) { + priv->label->setGeometry(0, 0, w, d->intSpinBoxSize.height()); + } + + if (qApp->layoutDirection() == Qt::RightToLeft) { + d->intSpinBox->setGeometry(w, h, priv->slider ? priv->column2Width : qMax(priv->column2Width, e->size().width() - w), d->intSpinBoxSize.height()); + w += priv->column2Width + spacingHint; + + if (priv->slider) { + priv->slider->setGeometry(w, h, e->size().width() - w, d->intSpinBoxSize.height() + spacingHint); + } + } else if (priv->slider) { + priv->slider->setGeometry(w, h, e->size().width() - (w + priv->column2Width + spacingHint), d->intSpinBoxSize.height() + spacingHint); + d->intSpinBox->setGeometry(w + priv->slider->size().width() + spacingHint, h, priv->column2Width, d->intSpinBoxSize.height()); + } else { + d->intSpinBox->setGeometry(w, h, qMax(priv->column2Width, e->size().width() - w), d->intSpinBoxSize.height()); + } + + h += d->intSpinBoxSize.height() + 2; + + if (priv->label && (priv->labelAlignment & Qt::AlignBottom)) { + priv->label->setGeometry(0, h, priv->labelSize.width(), priv->labelSize.height()); + } +} + +kpIntNumInput::~kpIntNumInput() +{ + delete d; +} + +void kpIntNumInput::setValue(int val) +{ + d->intSpinBox->setValue(val); + // slider value is changed by spinValueChanged +} + +int kpIntNumInput::value() const +{ + return d->intSpinBox->value(); +} + +void kpIntNumInput::setSpecialValueText(const QString &text) +{ + d->intSpinBox->setSpecialValueText(text); + layout(); +} + +QString kpIntNumInput::specialValueText() const +{ + return d->intSpinBox->specialValueText(); +} + +void kpIntNumInput::setLabel(const QString &label, Qt::Alignment a) +{ + K_USING_kpNumInput_P(priv); + + kpNumInput::setLabel(label, a); + + if (priv->label) { + priv->label->setBuddy(d->intSpinBox); + } +} + +// ---------------------------------------------------------------------------- + +class kpDoubleNumInput::kpDoubleNumInputPrivate +{ +public: + kpDoubleNumInputPrivate() + : spin(nullptr) {} + QDoubleSpinBox *spin; + QSize editSize; + QString specialValue; +}; + +kpDoubleNumInput::kpDoubleNumInput(QWidget *parent) + : kpNumInput(parent) + , d(new kpDoubleNumInputPrivate()) + +{ + initWidget(0.0, 0.0, 9999.0, 0.01, 2); +} + +kpDoubleNumInput::kpDoubleNumInput(double lower, double upper, double value, QWidget *parent, + double singleStep, int precision) + : kpNumInput(parent) + , d(new kpDoubleNumInputPrivate()) +{ + initWidget(value, lower, upper, singleStep, precision); +} + +kpDoubleNumInput::~kpDoubleNumInput() +{ + delete d; +} + +QString kpDoubleNumInput::specialValueText() const +{ + return d->specialValue; +} + +void kpDoubleNumInput::initWidget(double value, double lower, double upper, + double singleStep, int precision) +{ + d->spin = new QDoubleSpinBox(this); + d->spin->setRange(lower, upper); + d->spin->setSingleStep(singleStep); + d->spin->setValue(value); + d->spin->setDecimals(precision); + + d->spin->setObjectName(QStringLiteral("kpDoubleNumInput::QDoubleSpinBox")); + setFocusProxy(d->spin); + connect(d->spin, QOverload::of(&QDoubleSpinBox::valueChanged), + this, &kpDoubleNumInput::valueChanged); + + layout(); +} + +double kpDoubleNumInput::mapSliderToSpin(int val) const +{ + K_USING_kpNumInput_P(priv); + + // map [slidemin,slidemax] to [spinmin,spinmax] + const double spinmin = d->spin->minimum(); + const double spinmax = d->spin->maximum(); + const double slidemin = priv->slider->minimum(); // cast int to double to avoid + const double slidemax = priv->slider->maximum(); // overflow in rel denominator + const double rel = (double(val) - slidemin) / (slidemax - slidemin); + return spinmin + rel * (spinmax - spinmin); +} + +void kpDoubleNumInput::sliderMoved(int val) +{ + d->spin->setValue(mapSliderToSpin(val)); +} + +void kpDoubleNumInput::spinBoxChanged(double val) +{ + K_USING_kpNumInput_P(priv); + + const double spinmin = d->spin->minimum(); + const double spinmax = d->spin->maximum(); + const double slidemin = priv->slider->minimum(); // cast int to double to avoid + const double slidemax = priv->slider->maximum(); // overflow in rel denominator + + const double rel = (val - spinmin) / (spinmax - spinmin); + + if (priv->slider) { + priv->slider->blockSignals(true); + priv->slider->setValue(qRound(slidemin + rel * (slidemax - slidemin))); + priv->slider->blockSignals(false); + } +} + +QSize kpDoubleNumInput::minimumSizeHint() const +{ + K_USING_kpNumInput_P(priv); + + ensurePolished(); + + int w; + int h; + + h = qMax(d->editSize.height(), priv->sliderSize.height()); + + // if in extra row, then count it here + if (priv->label && (priv->labelAlignment & (Qt::AlignBottom | Qt::AlignTop))) { + h += 4 + priv->labelSize.height(); + } else { + // label is in the same row as the other widgets + h = qMax(h, priv->labelSize.height() + 2); + } + + const int spacingHint = 0;//style()->pixelMetric(QStyle::PM_DefaultLayoutSpacing); + w = priv->slider ? priv->slider->sizeHint().width() + spacingHint : 0; + w += priv->column1Width + priv->column2Width; + + if (priv->labelAlignment & (Qt::AlignTop | Qt::AlignBottom)) { + w = qMax(w, priv->labelSize.width() + 4); + } + + return {w, h}; +} + +void kpDoubleNumInput::resizeEvent(QResizeEvent *e) +{ + K_USING_kpNumInput_P(priv); + + int w = priv->column1Width; + int h = 0; + const int spacingHint = 0;//style()->pixelMetric(QStyle::PM_DefaultLayoutSpacing); + + if (priv->label && (priv->labelAlignment & Qt::AlignTop)) { + priv->label->setGeometry(0, 0, e->size().width(), priv->labelSize.height()); + h += priv->labelSize.height() + 4; + } + + if (priv->label && (priv->labelAlignment & Qt::AlignVCenter)) { + priv->label->setGeometry(0, 0, w, d->editSize.height()); + } + + if (qApp->layoutDirection() == Qt::RightToLeft) { + d->spin->setGeometry(w, h, priv->slider ? priv->column2Width + : e->size().width() - w, d->editSize.height()); + w += priv->column2Width + spacingHint; + + if (priv->slider) { + priv->slider->setGeometry(w, h, e->size().width() - w, d->editSize.height() + spacingHint); + } + } else if (priv->slider) { + priv->slider->setGeometry(w, h, e->size().width() - + (priv->column1Width + priv->column2Width + spacingHint), + d->editSize.height() + spacingHint); + d->spin->setGeometry(w + priv->slider->width() + spacingHint, h, + priv->column2Width, d->editSize.height()); + } else { + d->spin->setGeometry(w, h, e->size().width() - w, d->editSize.height()); + } + + h += d->editSize.height() + 2; + + if (priv->label && (priv->labelAlignment & Qt::AlignBottom)) { + priv->label->setGeometry(0, h, priv->labelSize.width(), priv->labelSize.height()); + } +} + +void kpDoubleNumInput::doLayout() +{ + K_USING_kpNumInput_P(priv); + + d->editSize = d->spin->sizeHint(); + priv->column2Width = d->editSize.width(); +} + +void kpDoubleNumInput::setValue(double val) +{ + d->spin->setValue(val); +} + +void kpDoubleNumInput::setRange(double lower, double upper, double singleStep) +{ + K_USING_kpNumInput_P(priv); + + QDoubleSpinBox *spin = d->spin; + + d->spin->setRange(lower, upper); + d->spin->setSingleStep(singleStep); + + const double range = spin->maximum() - spin->minimum(); + const double steps = range * std::pow(10.0, spin->decimals()); + if (!priv->slider) { + priv->slider = new QSlider(Qt::Horizontal, this); + priv->slider->setTickPosition(QSlider::TicksBelow); + // feedback line: when one moves, the other moves, too: + connect(priv->slider, &QSlider::valueChanged, + this, &kpDoubleNumInput::sliderMoved); + layout(); + } + if (steps > 1000 ) { + priv->slider->setRange(0, 1000); + priv->slider->setSingleStep(1); + priv->slider->setPageStep(50); + } else { + const int singleSteps = qRound(steps); + priv->slider->setRange(0, singleSteps); + priv->slider->setSingleStep(1); + const int pageSteps = qBound(1, singleSteps / 20, 10); + priv->slider->setPageStep(pageSteps); + } + spinBoxChanged(spin->value()); + connect(spin, QOverload::of(&QDoubleSpinBox::valueChanged), this, &kpDoubleNumInput::spinBoxChanged); + + layout(); +} + +void kpDoubleNumInput::setMinimum(double min) +{ + setRange(min, maximum(), d->spin->singleStep()); +} + +double kpDoubleNumInput::minimum() const +{ + return d->spin->minimum(); +} + +void kpDoubleNumInput::setMaximum(double max) +{ + setRange(minimum(), max, d->spin->singleStep()); +} + +double kpDoubleNumInput::maximum() const +{ + return d->spin->maximum(); +} + +double kpDoubleNumInput::singleStep() const +{ + return d->spin->singleStep(); +} + +void kpDoubleNumInput::setSingleStep(double singleStep) +{ + d->spin->setSingleStep(singleStep); +} + +double kpDoubleNumInput::value() const +{ + return d->spin->value(); +} + +QString kpDoubleNumInput::suffix() const +{ + return d->spin->suffix(); +} + +void kpDoubleNumInput::setSuffix(const QString &suffix) +{ + d->spin->setSuffix(suffix); + + layout(); +} + +void kpDoubleNumInput::setDecimals(int decimals) +{ + d->spin->setDecimals(decimals); + + layout(); +} + +int kpDoubleNumInput::decimals() const +{ + return d->spin->decimals(); +} + +void kpDoubleNumInput::setSpecialValueText(const QString &text) +{ + d->spin->setSpecialValueText(text); + + layout(); +} + +void kpDoubleNumInput::setLabel(const QString &label, Qt::Alignment a) +{ + K_USING_kpNumInput_P(priv); + + kpNumInput::setLabel(label, a); + + if (priv->label) { + priv->label->setBuddy(d->spin); + } +} + +#include "moc_kpNumInput.cpp" diff --git a/widgets/imagelib/effects/kpNumInput.h b/widgets/imagelib/effects/kpNumInput.h new file mode 100644 index 0000000..cd79051 --- /dev/null +++ b/widgets/imagelib/effects/kpNumInput.h @@ -0,0 +1,492 @@ +/* This file is part of the KDE libraries + * Copyright (c) 1997 Patrick Dowler + * Copyright (c) 2000 Dirk Mueller + * Copyright (c) 2002 Marc Mutz + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef kpNumInput_H +#define kpNumInput_H + +#include +#include + +class QSlider; +class QSpinBox; + +class kpNumInputPrivate; + +/** + * You need to inherit from this class if you want to implement K*NumInput + * for a different variable type + * + */ +class kpNumInput : public QWidget +{ + Q_OBJECT + Q_PROPERTY(QString label READ label WRITE setLabel) +public: + /** + * Default constructor + * @param parent If parent is 0, the new widget becomes a top-level + * window. If parent is another widget, this widget becomes a child + * window inside parent. The new widget is deleted when its parent is deleted. + */ + explicit kpNumInput(QWidget *parent = nullptr); + + /** + * Destructor + */ + ~kpNumInput() override; + + /** + * Sets the text and alignment of the main description label. + * + * @param label The text of the label. + * Use QString() to remove an existing one. + * + * @param a The alignment of the label (Qt::Alignment). + * Default is @p Qt:AlignLeft | @p Qt:AlignTop. + * + * The vertical alignment flags have special meaning with this + * widget: + * + * @li @p Qt:AlignTop The label is placed above the edit/slider + * @li @p Qt:AlignVCenter The label is placed left beside the edit + * @li @p Qt:AlignBottom The label is placed below the edit/slider + * + */ + virtual void setLabel(const QString &label, Qt::Alignment a = Qt::AlignLeft | Qt::AlignTop); + + /** + * @return the text of the label. + */ + QString label() const; + + /** + * @return if the num input has a slider. + */ + bool showSlider() const; + + /** + * Sets the spacing of tickmarks for the slider. + * + * @param minor Minor tickmark separation. + * @param major Major tickmark separation. + */ + void setSteps(int minor, int major); + + /** + * Returns a size which fits the contents of the control. + * + * @return the preferred size necessary to show the control + */ + QSize sizeHint() const Q_DECL_OVERRIDE; + +protected: + /** + * @return the slider widget. + * @internal + */ + QSlider *slider() const; + + /** + * Call this function whenever you change something in the geometry + * of your kpNumInput child. + * + */ + void layout(); + + /** + * You need to overwrite this method and implement your layout + * calculations there. + * + * See kpIntNumInput::doLayout and kpDoubleNumInput::doLayout implementation + * for details. + * + */ + virtual void doLayout() = 0; + +private: + friend class kpNumInputPrivate; + kpNumInputPrivate *const d; + + Q_DISABLE_COPY(kpNumInput) +}; + +/* ------------------------------------------------------------------------ */ + +/** + * @short An input widget for integer numbers, consisting of a spinbox and a slider. + * + * kpIntNumInput combines a QSpinBox and optionally a QSlider + * with a label to make an easy to use control for setting some integer + * parameter. This is especially nice for configuration dialogs, + * which can have many such combinated controls. + * + * A special feature of kpIntNumInput, designed specifically for + * the situation when there are several kpIntNumInputs in a column, + * is that you can specify what portion of the control is taken by the + * QSpinBox (the remaining portion is used by the slider). This makes + * it very simple to have all the sliders in a column be the same size. + * + * kpIntNumInput enforces the value to be in the given range. + */ + +class kpIntNumInput : public kpNumInput +{ + Q_OBJECT + Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged USER true) + Q_PROPERTY(int minimum READ minimum WRITE setMinimum) + Q_PROPERTY(int maximum READ maximum WRITE setMaximum) + Q_PROPERTY(int singleStep READ singleStep WRITE setSingleStep) + Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) + Q_PROPERTY(QString specialValueText READ specialValueText WRITE setSpecialValueText) + +public: + /** + * Constructs an input control for integer values + * with initial value 0. + */ + explicit kpIntNumInput(QWidget *parent = nullptr); + /** + * Constructor + * It constructs a QSpinBox that allows the input of integer numbers + * in the range of -INT_MAX to +INT_MAX. To set a descriptive label, + * use setLabel(). To enforce the value being in a range and optionally to + * attach a slider to it, use setRange(). + * + * @param value initial value for the control + * @param parent parent QWidget + */ + explicit kpIntNumInput(int value, QWidget *parent = nullptr); + + /** + * Destructor + * + * + */ + ~kpIntNumInput() override; + + /** + * @return the current value. + */ + int value() const; + + /** + * @return the suffix displayed behind the value. + * @see setSuffix() + */ + QString suffix() const; + /** + * @return the string displayed for a special value. + * @see setSpecialValueText() + */ + QString specialValueText() const; + + /** + * Sets the allowed input range and the step size for the slider and the + * spin box. + * + * @param min minimum value + * @param max maximum value + * @param step step size + */ + void setRange(int min, int max, int singleStep = 1); + + /** + * Sets the minimum value. + */ + void setMinimum(int min); + /** + * @return the minimum value. + */ + int minimum() const; + /** + * Sets the maximum value. + */ + void setMaximum(int max); + /** + * @return the maximum value. + */ + int maximum() const; + + /** + * @return the step of the spin box + */ + int singleStep() const; + + /** + * @return the step of the spin box + */ + void setSingleStep(int step); + + /** + * Sets the special value text. If set, the SpinBox will display + * this text instead of the numeric value whenever the current + * value is equal to minVal(). Typically this is used for indicating + * that the choice has a special (default) meaning. + */ + void setSpecialValueText(const QString &text); + + void setLabel(const QString &label, Qt::Alignment a = Qt::AlignLeft | Qt::AlignTop) Q_DECL_OVERRIDE; + + /** + * This method returns the minimum size necessary to display the + * control. The minimum size is enough to show all the labels + * in the current font (font change may invalidate the return value). + * + * @return the minimum size necessary to show the control + */ + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + +public Q_SLOTS: + /** + * Sets the value of the control. + */ + void setValue(int); + + /** + * Sets the suffix to @p suffix. + * Use QString() to disable this feature. + * Formatting has to be provided (e.g. a space separator between the + * prepended @p value and the suffix's text has to be provided + * as the first character in the suffix). + * + * @see QSpinBox::setSuffix() + */ + void setSuffix(const QString &suffix); + + /** + * sets focus to the edit widget and marks all text in if mark == true + * + */ + void setEditFocus(bool mark = true); + +Q_SIGNALS: + /** + * Emitted every time the value changes (by calling setValue() or + * by user interaction). + */ + void valueChanged(int); + + +private Q_SLOTS: + void spinValueChanged(int); + +protected: + /** + * @return the spin box widget. + * @internal + */ + QSpinBox *spinBox() const; + + void doLayout() Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + +private: + void initWidget(int value); + +private: + class kpIntNumInputPrivate; + friend class kpIntNumInputPrivate; + kpIntNumInputPrivate *const d; + + Q_DISABLE_COPY(kpIntNumInput) +}; + +/* ------------------------------------------------------------------------ */ + +class kpDoubleLine; + +/** + * @short An input control for real numbers, consisting of a spinbox and a slider. + * + * kpDoubleNumInput combines a QSpinBox and optionally a QSlider + * with a label to make an easy to use control for setting some float + * parameter. This is especially nice for configuration dialogs, + * which can have many such combinated controls. + * + * The slider is created only when the user specifies a range + * for the control using the setRange function with the slider + * parameter set to "true". + * + * A special feature of kpDoubleNumInput, designed specifically for + * the situation when there are several instances in a column, + * is that you can specify what portion of the control is taken by the + * QSpinBox (the remaining portion is used by the slider). This makes + * it very simple to have all the sliders in a column be the same size. + * + * @see kpIntNumInput + */ + +class kpDoubleNumInput : public kpNumInput +{ + Q_OBJECT + Q_PROPERTY(double value READ value WRITE setValue NOTIFY valueChanged USER true) + Q_PROPERTY(double minimum READ minimum WRITE setMinimum) + Q_PROPERTY(double maximum READ maximum WRITE setMaximum) + Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep) + Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) + Q_PROPERTY(QString specialValueText READ specialValueText WRITE setSpecialValueText) + Q_PROPERTY(int decimals READ decimals WRITE setDecimals) + +public: + /** + * Constructs an input control for double values + * with initial value 0.00. + */ + explicit kpDoubleNumInput(QWidget *parent = nullptr); + + /** + * Constructor + * + * @param lower lower boundary value + * @param upper upper boundary value + * @param value initial value for the control + * @param singleStep step size to use for up/down arrow clicks + * @param precision number of digits after the decimal point + * @param parent parent QWidget + */ + kpDoubleNumInput(double lower, double upper, double value, QWidget *parent = nullptr, double singleStep = 0.01, + int precision = 2); + + /** + * destructor + */ + ~kpDoubleNumInput() override; + + /** + * @return the current value. + */ + double value() const; + + /** + * @return the suffix. + * @see setSuffix() + */ + QString suffix() const; + + /** + * @return number of decimals. + * @see setDecimals() + */ + int decimals() const; + + /** + * @return the string displayed for a special value. + * @see setSpecialValueText() + */ + QString specialValueText() const; + + /** + * @param min minimum value + * @param max maximum value + * @param singleStep step size for the QSlider + * @param slider whether the slider is created or not + */ + void setRange(double min, double max, double singleStep = 1); + + /** + * Sets the minimum value. + */ + void setMinimum(double min); + /** + * @return the minimum value. + */ + double minimum() const; + /** + * Sets the maximum value. + */ + void setMaximum(double max); + /** + * @return the maximum value. + */ + double maximum() const; + + /** + * @return the step of the spin box + */ + double singleStep() const; + + /** + * @return the step of the spin box + */ + void setSingleStep(double singleStep); + + /** + * Specifies the number of digits to use. + */ + void setDecimals(int decimals); + + /** + * Sets the special value text. If set, the spin box will display + * this text instead of the numeric value whenever the current + * value is equal to minVal(). Typically this is used for indicating + * that the choice has a special (default) meaning. + */ + void setSpecialValueText(const QString &text); + + void setLabel(const QString &label, Qt::Alignment a = Qt::AlignLeft | Qt::AlignTop) Q_DECL_OVERRIDE; + QSize minimumSizeHint() const Q_DECL_OVERRIDE; + +public Q_SLOTS: + /** + * Sets the value of the control. + */ + void setValue(double); + + /** + * Sets the suffix to be displayed to @p suffix. Use QString() to disable + * this feature. Note that the suffix is attached to the value without any + * spacing. So if you prefer to display a space separator, set suffix + * to something like " cm". + * @see setSuffix() + */ + void setSuffix(const QString &suffix); + +Q_SIGNALS: + /** + * Emitted every time the value changes (by calling setValue() or + * by user interaction). + */ + void valueChanged(double); + +private Q_SLOTS: + void sliderMoved(int); + void spinBoxChanged(double); + +protected: + void doLayout() Q_DECL_OVERRIDE; + void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE; + + friend class kpDoubleLine; +private: + void initWidget(double value, double lower, double upper, + double singleStep, int precision); + double mapSliderToSpin(int) const; + +private: + class kpDoubleNumInputPrivate; + friend class kpDoubleNumInputPrivate; + kpDoubleNumInputPrivate *const d; + + Q_DISABLE_COPY(kpDoubleNumInput) +}; + + +#endif // kpNumInput_H diff --git a/widgets/kpColorCells.cpp b/widgets/kpColorCells.cpp new file mode 100644 index 0000000..36bf1cc --- /dev/null +++ b/widgets/kpColorCells.cpp @@ -0,0 +1,604 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR_CELLS 0 + + +#include "widgets/kpColorCells.h" + +#include "imagelib/kpColor.h" +#include "lgpl/generic/kpColorCollection.h" +#include "widgets/kpDefaultColorCollection.h" + +#include "kpLogCategories.h" +#include + +#include +#include +#include +#include + +//--------------------------------------------------------------------- +// +// Table Geometry +// + + +// The number of columns that the table normally has. +const int TableDefaultNumColumns = 11; + +const int TableDefaultWidth = ::TableDefaultNumColumns * 26; + +const int TableDefaultHeight = 52; + + +static int TableNumColumns (const kpColorCollection &colorCol) +{ + if (colorCol.count () == 0) { + return 0; + } + + return ::TableDefaultNumColumns; +} + +static int TableNumRows (const kpColorCollection &colorCol) +{ + const int cols = ::TableNumColumns (colorCol); + if (cols == 0) { + return 0; + } + + return (colorCol.count () + (cols - 1)) / cols; +} + + +static int TableCellWidth (const kpColorCollection &colorCol) +{ + Q_UNUSED (colorCol); + + return ::TableDefaultWidth / ::TableDefaultNumColumns; +} + +static int TableCellHeight (const kpColorCollection &colorCol) +{ + if (::TableNumRows (colorCol) <= 2) { + return ::TableDefaultHeight / 2; + } + + return ::TableDefaultHeight / 3; +} + + +// +// kpColorCells +// + + +struct kpColorCellsPrivate +{ + Qt::Orientation orientation{}; + + // REFACTOR: This is data duplication with kpColorCellsBase::color[]. + // We've probably forgotten to synchronize them in some points. + // + // Calls to kpColorCellsBase::setColor() (which also come from + // kpColorCellsBase itself) will automatically update both + // kpColorCellsBase::d->color[] and the table cells. setColor() emits + // colorChanged(), which is caught by our slotColorChanged(), + // which synchronizes this color collection and updates the modified flag. + // + // Avoid calling our grandparent's, QTableWidget's, mutating methods as we + // don't override enough of them, to fire signals that we can catch to update + // this color collection. + // + // If you modify this color collection directly (e.g. in setColorCollection(), + // openColorCollection(), appendRow(), deleteLastRow(), ...), you must work + // the other way and call makeCellsMatchColorCollection() to synchronize + // kpColorCellsBase::d->color[] and the table cells. You still need to update + // the modified flag. + kpColorCollection colorCol; + + QUrl url; + bool isModified{}; + + bool blockColorChangedSig{}; +}; + +//--------------------------------------------------------------------- + +kpColorCells::kpColorCells (QWidget *parent, + Qt::Orientation o) + : kpColorCellsBase (parent, 0/*rows for now*/, 0/*cols for now*/), + d (new kpColorCellsPrivate ()) +{ + d->orientation = o; + d->isModified = false; + d->blockColorChangedSig = false; + + + // When a text box is active, clicking to change the background color + // should not move the keyboard focus away from the text box. + setFocusPolicy (Qt::TabFocus); + + setShading (false); // no 3D look + + setAcceptDrops (true); + setAcceptDrags (true); + + + setCellsResizable (false); + + if (o == Qt::Horizontal) + { + // Reserve enough room for the default color collection's cells _and_ + // a vertical scrollbar, which only appears when it's required. + // This ensures that if the vertical scrollbar appears, it does not obscure + // any cells or require the addition of a horizontal scrollbar, which would + // look ugly and take even more precious room. + // + // We do not dynamically reserve room based on the actual number of rows + // of cells, as that would make our containing widgets too big. + setMinimumSize (::TableDefaultWidth + frameWidth () * 2 + + verticalScrollBar()->sizeHint().width(), + ::TableDefaultHeight + frameWidth () * 2); + } + else + { + Q_ASSERT (!"implemented"); + } + + setVerticalScrollBarPolicy (Qt::ScrollBarAsNeeded); + + // The default QTableWidget policy of QSizePolicy::Expanding forces our + // containing widgets to get too big. Override it. + setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Minimum); + + connect (this, &kpColorCells::colorSelectedWhitButton, + this, &kpColorCells::slotColorSelected); + + connect (this, &kpColorCells::colorDoubleClicked, + this, &kpColorCells::slotColorDoubleClicked); + + connect (this, &kpColorCells::colorChanged, + this, &kpColorCells::slotColorChanged); + + + setColorCollection (DefaultColorCollection ()); + + + setWhatsThis ( + i18n ( + "" + + "

                            To select the foreground color that tools use to draw," + " left-click on a filled-in color cell." + " To select the background color, right-click instead.

                            " + + "

                            To change the color of a color cell itself, double-click on it.

                            " + + "

                            You can also swap the color of a filled-in cell with any other" + " cell using drag and drop." + " Also, if you hold down the Ctrl key, the destination" + " cell's color will be" + " overwritten, instead of being swapped with the color of the source cell.

                            " + + "
                            ")); +} + +//--------------------------------------------------------------------- + +kpColorCells::~kpColorCells () +{ + delete d; +} + +//--------------------------------------------------------------------- + + +// public static +kpColorCollection kpColorCells::DefaultColorCollection () +{ + return kpDefaultColorCollection (); +} + +//--------------------------------------------------------------------- + + +// public +Qt::Orientation kpColorCells::orientation () const +{ + return d->orientation; +} + +//--------------------------------------------------------------------- + +// public +void kpColorCells::setOrientation (Qt::Orientation o) +{ + d->orientation = o; + + makeCellsMatchColorCollection (); +} + +//--------------------------------------------------------------------- + + +// protected +// OPT: Find out why this is being called multiple times on startup. +void kpColorCells::makeCellsMatchColorCollection () +{ + int c, r; + + if (orientation () == Qt::Horizontal) + { + c = ::TableNumColumns (d->colorCol); + r = ::TableNumRows (d->colorCol); + } + else + { + c = ::TableNumRows (d->colorCol); + r = ::TableNumColumns (d->colorCol); + } + +#if DEBUG_KP_COLOR_CELLS + qCDebug(kpLogWidgets) << "kpColorCells::makeCellsMatchColorCollection():" + << "r=" << r << "c=" << c; + qCDebug(kpLogWidgets) << "verticalScrollBar=" << verticalScrollBar () + << " sizeHint=" + << (verticalScrollBar () ? + verticalScrollBar ()->sizeHint () : + QSize (-12, -34)); +#endif + + // Delete all cell widgets. This ensures that there will be no left-over + // cell widgets, for the colors in the new color collection that are + // actually invalid (which should not have cell widgets). + clearContents (); + + setRowCount (r); + setColumnCount (c); + + + int CellWidth = ::TableCellWidth (d->colorCol), + CellHeight = ::TableCellHeight (d->colorCol); + + // TODO: Take a screenshot of KolourPaint, magnify it and you'll find the + // cells don't have exactly the sizes requested here. e.g. the + // top row of cells is 1 pixel shorter than the bottom row. There + // are probably other glitches. + for (int y = 0; y < r; y++) { + setRowHeight (y, CellHeight); + } + for (int x = 0; x < c; x++) { + setColumnWidth (x, CellWidth); + } + + + const bool oldBlockColorChangedSig = d->blockColorChangedSig; + d->blockColorChangedSig = true; + // The last "(rowCount() * columnCount()) - d->colorCol.count()" cells + // will be empty because we did not initialize them. + for (int i = 0; i < d->colorCol.count (); i++) + { + int y, x; + int pos; + + if (orientation () == Qt::Horizontal) + { + y = i / c; + x = i % c; + pos = i; + } + else + { + y = i % r; + x = i / r; + // int x = c - 1 - i / r; + pos = y * c + x; + } + #if DEBUG_KP_COLOR_CELLS && 0 + qCDebug(kpLogWidgets) << "\tSetting cell " << i << ": y=" << y << " x=" << x + << " pos=" << pos; + qCDebug(kpLogWidgets) << "\t\tcolor=" << (int *) d->colorCol.color (i).rgba() + << "isValid=" << d->colorCol.color (i).isValid (); + #endif + + // (color may be invalid resulting in a hole in the middle of the table) + setColor (pos, d->colorCol.color (i)); + //this->setToolTip( cellGeometry (y, x), colors [i].name ()); + } + d->blockColorChangedSig = oldBlockColorChangedSig; +} + +//--------------------------------------------------------------------- + + +bool kpColorCells::isModified () const +{ + return d->isModified; +} + +//--------------------------------------------------------------------- + +void kpColorCells::setModified (bool yes) +{ +#if DEBUG_KP_COLOR_CELLS + qCDebug(kpLogWidgets) << "kpColorCells::setModified(" << yes << ")"; +#endif + + if (yes == d->isModified) { + return; + } + + d->isModified = yes; + + emit isModifiedChanged (yes); +} + +//--------------------------------------------------------------------- + +void kpColorCells::setModified () +{ + setModified (true); +} + +//--------------------------------------------------------------------- + + +QUrl kpColorCells::url () const +{ + return d->url; +} + +//--------------------------------------------------------------------- + +QString kpColorCells::name () const +{ + return d->colorCol.name (); +} + +//--------------------------------------------------------------------- + + +const kpColorCollection *kpColorCells::colorCollection () const +{ + return &d->colorCol; +} + +//--------------------------------------------------------------------- + + +void kpColorCells::ensureHaveAtLeastOneRow () +{ + if (d->colorCol.count () == 0) { + d->colorCol.resize (::TableDefaultNumColumns); + } +} + +//--------------------------------------------------------------------- + +void kpColorCells::setColorCollection (const kpColorCollection &colorCol, const QUrl &url) +{ + d->colorCol = colorCol; + ensureHaveAtLeastOneRow (); + + d->url = url; + setModified (false); + + makeCellsMatchColorCollection (); + + emit rowCountChanged (rowCount ()); + emit urlChanged (d->url); + emit nameChanged (name ()); +} + +//--------------------------------------------------------------------- + + +bool kpColorCells::openColorCollection (const QUrl &url) +{ + // (this will pop up an error dialog on failure) + if (d->colorCol.open (url, this)) + { + ensureHaveAtLeastOneRow (); + + d->url = url; + setModified (false); + + makeCellsMatchColorCollection (); + + emit rowCountChanged (rowCount ()); + emit urlChanged (d->url); + emit nameChanged (name ()); + + return true; + } + + return false; +} + +//--------------------------------------------------------------------- + +bool kpColorCells::saveColorCollectionAs (const QUrl &url) +{ + // (this will pop up an error dialog on failure) + if (d->colorCol.saveAs (url, this)) + { + d->url = url; + setModified (false); + + emit urlChanged (d->url); + return true; + } + + return false; +} + +//--------------------------------------------------------------------- + +bool kpColorCells::saveColorCollection () +{ + // (this will pop up an error dialog on failure) + if (d->colorCol.saveAs (d->url, this)) + { + setModified (false); + return true; + } + + return false; +} + +//--------------------------------------------------------------------- + + +void kpColorCells::appendRow () +{ + // This is the easiest implementation: change the color collection + // and then synchronize the table cells. The other way is to call + // setRowCount() and then, synchronize the color collection. + + const int targetNumCells = (rowCount () + 1) * ::TableDefaultNumColumns; + d->colorCol.resize (targetNumCells); + + setModified (true); + + makeCellsMatchColorCollection (); + + emit rowCountChanged (rowCount ()); +} + +//--------------------------------------------------------------------- + +void kpColorCells::deleteLastRow () +{ + // This is the easiest implementation: change the color collection + // and then synchronize the table cells. The other way is to call + // setRowCount() and then, synchronize the color collection. + + const int targetNumCells = + qMax (0, (rowCount () - 1) * ::TableDefaultNumColumns); + d->colorCol.resize (targetNumCells); + + // If there was only one row of colors to start with, the effect of this + // line (after the above resize()) is to change that row to a row of + // invalid colors. + ensureHaveAtLeastOneRow (); + + setModified (true); + + makeCellsMatchColorCollection (); + + emit rowCountChanged (rowCount ()); +} + +//--------------------------------------------------------------------- + + +// protected virtual [base QWidget] +void kpColorCells::contextMenuEvent (QContextMenuEvent *e) +{ + // Eat right-mouse press to prevent it from getting to the toolbar. + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpColorCells::slotColorSelected (int cell, const QColor &color, + Qt::MouseButton button) +{ +#if DEBUG_KP_COLOR_CELLS + qCDebug(kpLogWidgets) << "kpColorCells::slotColorSelected(cell=" << cell + << ") mouseButton = " << button + << " rgb=" << (int *) color.rgba(); +#else + Q_UNUSED (cell); +#endif + + if (button == Qt::LeftButton) + { + emit foregroundColorChanged (kpColor (color.rgba())); + } + else if (button == Qt::RightButton) + { + emit backgroundColorChanged (kpColor (color.rgba())); + } + + // REFACTOR: Make selectedness configurable inside kpColorCellsBase? + // + // Deselect the selected cell (selected by above kpColorCellsBase::mouseReleaseEvent()). + // KolourPaint's palette has no concept of a current cell/color: you can + // pick a color but you can't mark a cell as selected. In any case, a + // selected cell would be rendered as violet, which would ruin the cell. + // + // setSelectionMode (kpColorCellsBase::NoSelection); does not work so we + // clearSelection(). I think setSelectionMode() concerns when the user + // directly selects a cell - not when kpColorCellsBase::mouseReleaseEvent() + // selects a cell programmatically. + clearSelection (); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpColorCells::slotColorDoubleClicked (int cell, const QColor &) +{ + QColorDialog dialog(this); + dialog.setCurrentColor(kpColorCellsBase::color(cell)); + dialog.setOptions(QColorDialog::ShowAlphaChannel); + if ( dialog.exec() == QDialog::Accepted ) + setColor (cell, dialog.currentColor()); +} + +//--------------------------------------------------------------------- + +// protected slot +void kpColorCells::slotColorChanged (int cell, const QColor &color) +{ +#if DEBUG_KP_COLOR_CELLS + qCDebug(kpLogWidgets) << "cell=" << cell << "color=" << (const int *) color.rgba() + << "d->colorCol.count()=" << d->colorCol.count (); +#endif + + if (d->blockColorChangedSig) { + return; + } + + // Cater for adding new colors to the end. + if (cell >= d->colorCol.count ()) { + d->colorCol.resize (cell + 1); + } + + // TODO: We lose color names on a color swap (during drag-and-drop). + const int ret = d->colorCol.changeColor (cell, color, + QString ()/*color name*/); + Q_ASSERT (ret == cell); + + setModified (true); +} + diff --git a/widgets/kpColorCells.h b/widgets/kpColorCells.h new file mode 100644 index 0000000..a0e1129 --- /dev/null +++ b/widgets/kpColorCells.h @@ -0,0 +1,168 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpColorCells_H +#define kpColorCells_H + + +#include + +#include "lgpl/generic/widgets/kpColorCellsBase.h" + + + +class kpColorCollection; + +class kpColor; + + +// This widget consists of rows of 11 cells of colors. The cells become +// shorter as soon as there are 3 rows. After that, a vertical scrollbar +// is usually displayed. +// +// By default, it is set to the DefaultColorCollection(), with 2 rows. +// +// +// Cell widgets might not exist for 2 reasons: +// +// 1. The respective colors in the color collection are invalid. +// An easy way to create this situation is to appendRow(). +// +// 2. The number of colors in the color collection is not divisible by +// the columnCount() [currently fixed at 11], so some cells in the +// last row might not be linked to colors in the color collection. +// +// Currently, this class always ensures that there is at least one +// visual/table row (which might contain no cell widgets). +// +// +// To determine where the color collection came from: +// +// 1. If url() is non-empty, it came from a file. +// +// 2. If url() is empty: +// a) If name() is non-empty, it came from KDE-managed color collection. +// b) If name() is empty, it came from DefaultColorCollection(). +// +// +// See also the API documentation for kpColorCellsBase. +// +// TODO: For now, only horizontal orientation is supported. +class kpColorCells : public kpColorCellsBase +{ +Q_OBJECT + +public: + kpColorCells (QWidget *parent, + Qt::Orientation o = Qt::Horizontal); + ~kpColorCells () override; + + static kpColorCollection DefaultColorCollection (); + + Qt::Orientation orientation () const; + void setOrientation (Qt::Orientation o); + +protected: + void makeCellsMatchColorCollection (); + +public: + bool isModified () const; + // (this emits isModifiedChanged() if the modified state changes) + void setModified (bool yes); +public slots: + // (this emits isModifiedChanged() if the modified state changes) + void setModified (); + +public: + // The source URL of the kpColorCollection. Empty for color + // collections that did not come from files. + QUrl url () const; + + // The name of the kpColorCollection. Empty for color collections + // managed by KDE. + QString name () const; + + const kpColorCollection *colorCollection () const; + +private: + // Ensures there's a least one row of cells, to avoid a confusing UI. + void ensureHaveAtLeastOneRow (); +public: + void setColorCollection (const kpColorCollection &colorCol, + const QUrl &url = QUrl ()); + + bool openColorCollection (const QUrl &url); + bool saveColorCollectionAs (const QUrl &url); + bool saveColorCollection (); + + // These add and delete visual/table rows, independent of whether the number + // of colors in the color collection is divisible by the columnCount() + // [currently fixed at 11]. + // + // For instance, if you only had 15 colors in the color collection, there are + // visually 2 rows (22 cells in total): + // + // 1. appendRow() will add a visual row so that there will be 3 visual rows + // (33 cells in total). (22 - 15) + 11 invalid colors will be added to + // the back of the color collection. Note that invalid colors are not + // saved by kpColorCollection, so those new cells not initialized by the + // user will not be saved. + // 2. deleteRow() will delete a visual row so that there will be 1 visual + // row (11 cells in total) remaining. (15 - 11) colors will be deleted + // from the back of the color collection. + void appendRow (); + void deleteLastRow (); + +signals: + void foregroundColorChanged (const kpColor &color); + void backgroundColorChanged (const kpColor &color); + + void rowCountChanged (int rowCount); + + void nameChanged (const QString &name); + void urlChanged (const QUrl &url); + + // Emitted when setModified() is called and the modified state changes. + // It may be called at other times, even when the modified state did + // not change. + void isModifiedChanged (bool isModified); + +protected: + void contextMenuEvent (QContextMenuEvent *e) override; + +protected slots: + void slotColorSelected (int cell, const QColor &color, Qt::MouseButton button); + void slotColorDoubleClicked (int cell, const QColor &color); + void slotColorChanged (int cell, const QColor &color); + +private: + struct kpColorCellsPrivate * const d; +}; + + +#endif // kpColorCells_H diff --git a/widgets/kpColorPalette.cpp b/widgets/kpColorPalette.cpp new file mode 100644 index 0000000..66793e6 --- /dev/null +++ b/widgets/kpColorPalette.cpp @@ -0,0 +1,126 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR_PALETTE 0 + + +#include "kpColorPalette.h" + +#include "kpColorCells.h" +#include "kpTransparentColorCell.h" + +#include + +//--------------------------------------------------------------------- + +struct kpColorPalettePrivate +{ + Qt::Orientation orientation; + + QBoxLayout *boxLayout; + + kpTransparentColorCell *transparentColorCell; + + kpColorCells *colorCells; +}; + +//--------------------------------------------------------------------- + +kpColorPalette::kpColorPalette (QWidget *parent, Qt::Orientation o) + : QWidget (parent), + d (new kpColorPalettePrivate ()) +{ + d->boxLayout = nullptr; + + d->transparentColorCell = new kpTransparentColorCell (this); + connect (d->transparentColorCell, &kpTransparentColorCell::foregroundColorChanged, + this, &kpColorPalette::foregroundColorChanged); + + connect (d->transparentColorCell, &kpTransparentColorCell::backgroundColorChanged, + this, &kpColorPalette::backgroundColorChanged); + + d->colorCells = new kpColorCells (this); + connect (d->colorCells, &kpColorCells::foregroundColorChanged, + this, &kpColorPalette::foregroundColorChanged); + + connect (d->colorCells, &kpColorCells::backgroundColorChanged, + this, &kpColorPalette::backgroundColorChanged); + + setOrientation (o); +} + +//--------------------------------------------------------------------- + +kpColorPalette::~kpColorPalette () +{ + delete d; +} + +//--------------------------------------------------------------------- + +// public +Qt::Orientation kpColorPalette::orientation () const +{ + return d->orientation; +} + +//--------------------------------------------------------------------- + +void kpColorPalette::setOrientation (Qt::Orientation o) +{ + d->colorCells->setOrientation (o); + + delete d->boxLayout; + + if (o == Qt::Horizontal) + { + d->boxLayout = new QBoxLayout (QBoxLayout::LeftToRight, this); + d->boxLayout->addWidget (d->transparentColorCell, 0/*stretch*/, Qt::AlignTop); + d->boxLayout->addWidget (d->colorCells); + } + else + { + d->boxLayout = new QBoxLayout (QBoxLayout::TopToBottom, this); + d->boxLayout->addWidget (d->transparentColorCell, 0/*stretch*/, Qt::AlignTop); + d->boxLayout->addWidget (d->colorCells); + } + d->boxLayout->setSpacing (5); + + d->orientation = o; +} + +//--------------------------------------------------------------------- + +// public +kpColorCells *kpColorPalette::colorCells () const +{ + return d->colorCells; +} + +//--------------------------------------------------------------------- + diff --git a/widgets/kpColorPalette.h b/widgets/kpColorPalette.h new file mode 100644 index 0000000..dc617ff --- /dev/null +++ b/widgets/kpColorPalette.h @@ -0,0 +1,63 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpColorPalette_H +#define kpColorPalette_H + + +#include + + +class kpColor; +class kpColorCells; + + +class kpColorPalette : public QWidget +{ +Q_OBJECT + +public: + kpColorPalette (QWidget *parent, + Qt::Orientation o = Qt::Horizontal); + ~kpColorPalette () override; + + Qt::Orientation orientation () const; + void setOrientation (Qt::Orientation o); + + kpColorCells *colorCells () const; + +signals: + void foregroundColorChanged (const kpColor &color); + void backgroundColorChanged (const kpColor &color); + +private: + struct kpColorPalettePrivate * const d; +}; + + +#endif // kpColorPalette_H diff --git a/widgets/kpDefaultColorCollection.cpp b/widgets/kpDefaultColorCollection.cpp new file mode 100644 index 0000000..c4ca703 --- /dev/null +++ b/widgets/kpDefaultColorCollection.cpp @@ -0,0 +1,69 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "kpDefaultColorCollection.h" + +#include "imagelib/kpColor.h" + + +kpDefaultColorCollection::kpDefaultColorCollection () +{ + kpColor colors [] = + { + kpColor::Black, + kpColor::Gray, + kpColor::Red, + kpColor::Orange, + kpColor::Yellow, + kpColor::Green, + kpColor::Aqua, + kpColor::Blue, + kpColor::Purple, + kpColor::Pink, + kpColor::LightGreen, + + kpColor::White, + kpColor::LightGray, + kpColor::DarkRed, + kpColor::DarkOrange, + kpColor::DarkYellow, + kpColor::DarkGreen, + kpColor::DarkAqua, + kpColor::DarkBlue, + kpColor::DarkPurple, + kpColor::LightBlue, + kpColor::Tan + }; + + for (const auto & color : colors) + { + addColor (color.toQColor ()); + } +} + +kpDefaultColorCollection::~kpDefaultColorCollection () = default; diff --git a/widgets/kpDefaultColorCollection.h b/widgets/kpDefaultColorCollection.h new file mode 100644 index 0000000..cfda1cd --- /dev/null +++ b/widgets/kpDefaultColorCollection.h @@ -0,0 +1,50 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpDefaultColorCollection_H +#define kpDefaultColorCollection_H + + +#include "lgpl/generic/kpColorCollection.h" + + +// +// The default set of colors offered by KolourPaint to the user. +// +// It contains all of the ordinary colors (black, white, gray, colors of +// the rainbow etc.) and a few others. +// +class kpDefaultColorCollection : public kpColorCollection +{ +public: + kpDefaultColorCollection (); + ~kpDefaultColorCollection (); +}; + + +#endif // kpDefaultColorCollection_H diff --git a/widgets/kpDocumentSaveOptionsWidget.cpp b/widgets/kpDocumentSaveOptionsWidget.cpp new file mode 100644 index 0000000..fed5642 --- /dev/null +++ b/widgets/kpDocumentSaveOptionsWidget.cpp @@ -0,0 +1,754 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET 0 + + +#include "widgets/kpDocumentSaveOptionsWidget.h" + +#include "kpDefs.h" +#include "document/kpDocument.h" +#include "dialogs/kpDocumentSaveOptionsPreviewDialog.h" +#include "pixmapfx/kpPixmapFX.h" +#include "generic/widgets/kpResizeSignallingLabel.h" +#include "dialogs/imagelib/transforms/kpTransformPreviewDialog.h" +#include "generic/kpWidgetMapper.h" + +#include "kpLogCategories.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +kpDocumentSaveOptionsWidget::kpDocumentSaveOptionsWidget ( + const QImage &docPixmap, + const kpDocumentSaveOptions &saveOptions, + const kpDocumentMetaInfo &metaInfo, + QWidget *parent) + : QWidget (parent), + m_visualParent (parent) +{ + init (); + setDocumentSaveOptions (saveOptions); + setDocumentPixmap (docPixmap); + setDocumentMetaInfo (metaInfo); +} + +kpDocumentSaveOptionsWidget::kpDocumentSaveOptionsWidget ( + QWidget *parent) + : QWidget (parent), + m_visualParent (parent) +{ + init (); +} + +// private +void kpDocumentSaveOptionsWidget::init () +{ + m_documentPixmap = nullptr; + m_previewDialog = nullptr; + m_visualParent = nullptr; + + + m_colorDepthLabel = new QLabel (i18n ("Convert &to:"), this); + m_colorDepthCombo = new QComboBox (this); + + m_colorDepthSpaceWidget = new QWidget (this); + + m_qualityLabel = new QLabel(i18n ("Quali&ty:"), this); + m_qualityInput = new QSpinBox(this); + // Note that we set min to 1 not 0 since "0 Quality" is a bit misleading + // and 101 quality settings would be weird. So we lose 1 quality setting + // according to QImage::save(). + // TODO: 100 quality is also misleading since that implies perfect quality. + m_qualityInput->setRange (1, 100); + + m_previewButton = new QPushButton (i18n ("&Preview"), this); + m_previewButton->setCheckable (true); + + + m_colorDepthLabel->setBuddy (m_colorDepthCombo); + + m_qualityLabel->setBuddy (m_qualityInput); + + + auto *lay = new QHBoxLayout (this); + lay->setContentsMargins(0, 0, 0, 0); + + lay->addWidget (m_colorDepthLabel, 0/*stretch*/, Qt::AlignLeft); + lay->addWidget (m_colorDepthCombo, 0/*stretch*/); + + lay->addWidget (m_colorDepthSpaceWidget, 1/*stretch*/); + + lay->addWidget (m_qualityLabel, 0/*stretch*/, Qt::AlignLeft); + lay->addWidget (m_qualityInput, 2/*stretch*/); + + lay->addWidget (m_previewButton, 0/*stretch*/, Qt::AlignRight); + + + connect (m_colorDepthCombo, + static_cast(&QComboBox::activated), + this, &kpDocumentSaveOptionsWidget::slotColorDepthSelected); + + connect (m_colorDepthCombo, + static_cast(&QComboBox::activated), + this, &kpDocumentSaveOptionsWidget::updatePreview); + + connect (m_qualityInput, + static_cast(&QSpinBox::valueChanged), + this, &kpDocumentSaveOptionsWidget::updatePreviewDelayed); + + connect (m_previewButton, &QPushButton::toggled, + this, &kpDocumentSaveOptionsWidget::showPreview); + + + m_updatePreviewDelay = 200/*ms*/; + + m_updatePreviewTimer = new QTimer (this); + m_updatePreviewTimer->setSingleShot (true); + connect (m_updatePreviewTimer, &QTimer::timeout, + this, &kpDocumentSaveOptionsWidget::updatePreview); + + m_updatePreviewDialogLastRelativeGeometryTimer = new QTimer (this); + connect (m_updatePreviewDialogLastRelativeGeometryTimer, + &QTimer::timeout, + this, &kpDocumentSaveOptionsWidget::updatePreviewDialogLastRelativeGeometry); + + setMode (None); + + slotColorDepthSelected (); +} + +kpDocumentSaveOptionsWidget::~kpDocumentSaveOptionsWidget () +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "kpDocumentSaveOptionsWidget::()"; +#endif + hidePreview (); + + delete m_documentPixmap; +} + + +// public +void kpDocumentSaveOptionsWidget::setVisualParent (QWidget *visualParent) +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "kpDocumentSaveOptionsWidget::setVisualParent(" + << visualParent << ")" << endl; +#endif + + m_visualParent = visualParent; +} + + +// protected +bool kpDocumentSaveOptionsWidget::mimeTypeHasConfigurableColorDepth () const +{ + return kpDocumentSaveOptions::mimeTypeHasConfigurableColorDepth (mimeType ()); +} + +// protected +bool kpDocumentSaveOptionsWidget::mimeTypeHasConfigurableQuality () const +{ + return kpDocumentSaveOptions::mimeTypeHasConfigurableQuality (mimeType ()); +} + + +// public +QString kpDocumentSaveOptionsWidget::mimeType () const +{ + return m_baseDocumentSaveOptions.mimeType (); +} + +// public slots +void kpDocumentSaveOptionsWidget::setMimeType (const QString &string) +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "kpDocumentSaveOptionsWidget::setMimeType(" << string + << ") maxColorDepth=" + << kpDocumentSaveOptions::mimeTypeMaximumColorDepth (string) + << endl; +#endif + + const int newMimeTypeMaxDepth = + kpDocumentSaveOptions::mimeTypeMaximumColorDepth (string); + +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\toldMimeType=" << mimeType () + << " maxColorDepth=" + << kpDocumentSaveOptions::mimeTypeMaximumColorDepth ( + mimeType ()) + << endl; +#endif + + if (mimeType ().isEmpty () || + kpDocumentSaveOptions::mimeTypeMaximumColorDepth (mimeType ()) != + newMimeTypeMaxDepth) + { + m_colorDepthCombo->clear (); + + m_colorDepthCombo->insertItem (0, i18n ("Monochrome")); + m_colorDepthCombo->insertItem (1, i18n ("Monochrome (Dithered)")); + + if (newMimeTypeMaxDepth >= 8) + { + m_colorDepthCombo->insertItem (2, i18n ("256 Color")); + m_colorDepthCombo->insertItem (3, i18n ("256 Color (Dithered)")); + } + + if (newMimeTypeMaxDepth >= 24) + { + m_colorDepthCombo->insertItem (4, i18n ("24-bit Color")); + } + + if (m_colorDepthComboLastSelectedItem >= 0 && + m_colorDepthComboLastSelectedItem < m_colorDepthCombo->count ()) + { + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tsetting colorDepthCombo to " + << m_colorDepthComboLastSelectedItem << endl; + #endif + + m_colorDepthCombo->setCurrentIndex (m_colorDepthComboLastSelectedItem); + } + else + { + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tsetting colorDepthCombo to max item since" + << " m_colorDepthComboLastSelectedItem=" + << m_colorDepthComboLastSelectedItem + << " out of range" << endl; + #endif + + m_colorDepthCombo->setCurrentIndex (m_colorDepthCombo->count () - 1); + } + } + + + m_baseDocumentSaveOptions.setMimeType (string); + + if (mimeTypeHasConfigurableColorDepth ()) { + setMode (ColorDepth); + } + else if (mimeTypeHasConfigurableQuality ()) { + setMode (Quality); + } + else { + setMode (None); + } + + updatePreview (); +} + + +// public +int kpDocumentSaveOptionsWidget::colorDepth () const +{ + if (mode () & ColorDepth) + { + // The returned values match QImage's supported depths. + switch (m_colorDepthCombo->currentIndex ()) + { + case 0: + case 1: + return 1; + + case 2: + case 3: + return 8; + + case 4: + // 24-bit is known as 32-bit with QImage. + return 32; + + default: + return kpDocumentSaveOptions::invalidColorDepth (); + } + } + else + { + return m_baseDocumentSaveOptions.colorDepth (); + } +} + +// public +bool kpDocumentSaveOptionsWidget::dither () const +{ + if (mode () & ColorDepth) + { + return (m_colorDepthCombo->currentIndex () == 1 || + m_colorDepthCombo->currentIndex () == 3); + } + + return m_baseDocumentSaveOptions.dither (); +} + +// protected static +int kpDocumentSaveOptionsWidget::colorDepthComboItemFromColorDepthAndDither ( + int depth, bool dither) +{ + switch (depth) { + case 1: + if (!dither) { + return 0; + } + return 1; + + case 8: + if (!dither) { + return 2; + } + return 3; + + case 32: + return 4; + + default: + return -1; + } +} + +// public slots +void kpDocumentSaveOptionsWidget::setColorDepthDither (int newDepth, bool newDither) +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "kpDocumentSaveOptionsWidget::setColorDepthDither(" + << "depth=" << newDepth + << ",dither=" << newDither + << ")" << endl; +#endif + + m_baseDocumentSaveOptions.setColorDepth (newDepth); + m_baseDocumentSaveOptions.setDither (newDither); + + + const int comboItem = colorDepthComboItemFromColorDepthAndDither ( + newDepth, newDither); + // TODO: Ignoring when comboItem >= m_colorDepthCombo->count() is wrong. + // This happens if this mimeType has configurable colour depth + // and an incorrect maximum colour depth (less than a QImage of + // this mimeType, opened by kpDocument). + if (comboItem >= 0 && comboItem < m_colorDepthCombo->count ()) { + m_colorDepthCombo->setCurrentIndex (comboItem); + } + + + slotColorDepthSelected (); +} + + +// protected slot +void kpDocumentSaveOptionsWidget::slotColorDepthSelected () +{ + if (mode () & ColorDepth) + { + m_colorDepthComboLastSelectedItem = m_colorDepthCombo->currentIndex (); + } + else + { + m_colorDepthComboLastSelectedItem = + colorDepthComboItemFromColorDepthAndDither ( + m_baseDocumentSaveOptions.colorDepth (), + m_baseDocumentSaveOptions.dither ()); + } + +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "kpDocumentSaveOptionsWidget::slotColorDepthSelected()" + << " mode&ColorDepth=" << (mode () & ColorDepth) + << " colorDepthComboLastSelectedItem=" + << m_colorDepthComboLastSelectedItem + << endl; +#endif +} + + +// public +int kpDocumentSaveOptionsWidget::quality () const +{ + if (mode () & Quality) + { + return m_qualityInput->value (); + } + + return m_baseDocumentSaveOptions.quality (); +} + +// public +void kpDocumentSaveOptionsWidget::setQuality (int newQuality) +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "kpDocumentSaveOptionsWidget::setQuality(" + << newQuality << ")" << endl; +#endif + + m_baseDocumentSaveOptions.setQuality (newQuality); + m_qualityInput->setValue (newQuality == -1/*QImage::save() default*/ ? + 75 : + newQuality); +} + + +// public +kpDocumentSaveOptions kpDocumentSaveOptionsWidget::documentSaveOptions () const +{ + return kpDocumentSaveOptions (mimeType (), colorDepth (), dither (), quality ()); +} + +// public +void kpDocumentSaveOptionsWidget::setDocumentSaveOptions ( + const kpDocumentSaveOptions &saveOptions) +{ + setMimeType (saveOptions.mimeType ()); + setColorDepthDither (saveOptions.colorDepth (), saveOptions.dither ()); + setQuality (saveOptions.quality ()); +} + + +// public +void kpDocumentSaveOptionsWidget::setDocumentPixmap (const QImage &documentPixmap) +{ + delete m_documentPixmap; + m_documentPixmap = new QImage (documentPixmap); + + updatePreview (); +} + +// public +void kpDocumentSaveOptionsWidget::setDocumentMetaInfo ( + const kpDocumentMetaInfo &metaInfo) +{ + m_documentMetaInfo = metaInfo; + + updatePreview (); +} + + +// public +kpDocumentSaveOptionsWidget::Mode kpDocumentSaveOptionsWidget::mode () const +{ + return m_mode; +} + +// public +void kpDocumentSaveOptionsWidget::setMode (Mode mode) +{ + m_mode = mode; + + + // If mode == None, we show still show the Color Depth widgets but disabled + m_colorDepthLabel->setVisible (mode != Quality); + m_colorDepthCombo->setVisible (mode != Quality); + m_colorDepthSpaceWidget->setVisible (mode != Quality); + + m_qualityLabel->setVisible (mode == Quality); + m_qualityInput->setVisible (mode == Quality); + + + m_colorDepthLabel->setEnabled (mode == ColorDepth); + m_colorDepthCombo->setEnabled (mode == ColorDepth); + + m_qualityLabel->setEnabled (mode == Quality); + m_qualityInput->setEnabled (mode == Quality); + + + // SYNC: HACK: When changing between color depth and quality widgets, + // we change the height of "this", causing the text on the labels + // to move but the first instance of the text doesn't get erased. + // Qt bug. + QTimer::singleShot (0, this, &kpDocumentSaveOptionsWidget::repaintLabels); +} + +// protected slot +void kpDocumentSaveOptionsWidget::repaintLabels () +{ + if (mode () != Quality) { + m_colorDepthLabel->repaint (); + } + if (mode () == Quality) { + m_qualityLabel->repaint (); + } +} + + +// protected slot +void kpDocumentSaveOptionsWidget::showPreview (bool yes) +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "kpDocumentSaveOptionsWidget::showPreview(" << yes << ")" + << " m_previewDialog=" << bool (m_previewDialog) + << endl; +#endif + + if (yes == bool (m_previewDialog)) { + return; + } + + if (!m_visualParent) { + return; + } + + if (yes) + { + m_previewDialog = new kpDocumentSaveOptionsPreviewDialog( m_visualParent ); + m_previewDialog->setObjectName( QStringLiteral( "previewSaveDialog" ) ); + updatePreview (); + + connect (m_previewDialog, &kpDocumentSaveOptionsPreviewDialog::finished, + this, &kpDocumentSaveOptionsWidget::hidePreview); + + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupPreviewSave); + + if (cfg.hasKey (kpSettingPreviewSaveUpdateDelay)) + { + m_updatePreviewDelay = cfg.readEntry (kpSettingPreviewSaveUpdateDelay, 0); + } + else + { + cfg.writeEntry (kpSettingPreviewSaveUpdateDelay, m_updatePreviewDelay); + cfg.sync (); + } + + if (m_updatePreviewDelay < 0) { + m_updatePreviewDelay = 0; + } + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tread cfg preview dialog update delay=" << m_updatePreviewDelay; + #endif + + + if (m_previewDialogLastRelativeGeometry.isEmpty ()) + { + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tread cfg preview dialog last rel geometry"; + #endif + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupPreviewSave); + + m_previewDialogLastRelativeGeometry = cfg.readEntry ( + kpSettingPreviewSaveGeometry, QRect ()); + } + + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tpreviewDialogLastRelativeGeometry=" + << m_previewDialogLastRelativeGeometry + << " visualParent->rect()=" << m_visualParent->rect () + << endl; + #endif + + QRect relativeGeometry; + if (!m_previewDialogLastRelativeGeometry.isEmpty () && + m_visualParent->rect ().intersects (m_previewDialogLastRelativeGeometry)) + { + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tok"; + #endif + relativeGeometry = m_previewDialogLastRelativeGeometry; + } + else + { + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\t\tinvalid"; + #endif + const int margin = 20; + + relativeGeometry = + QRect (m_visualParent->width () - + m_previewDialog->preferredMinimumSize ().width () - + margin, + margin * 2, // Avoid folder combo + m_previewDialog->preferredMinimumSize ().width (), + m_previewDialog->preferredMinimumSize ().height ()); + } + + + const QRect globalGeometry = + kpWidgetMapper::toGlobal (m_visualParent, + relativeGeometry); + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\trelativeGeometry=" << relativeGeometry + << " globalGeometry=" << globalGeometry + << endl; + #endif + + m_previewDialog->resize (globalGeometry.size ()); + m_previewDialog->move (globalGeometry.topLeft ()); + + + m_previewDialog->show (); + + + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tgeometry after show=" + << QRect (m_previewDialog->x (), m_previewDialog->y (), + m_previewDialog->width (), m_previewDialog->height ()) + << endl; + #endif + + updatePreviewDialogLastRelativeGeometry (); + + connect (m_previewDialog, &kpDocumentSaveOptionsPreviewDialog::moved, + this, &kpDocumentSaveOptionsWidget::updatePreviewDialogLastRelativeGeometry); + + connect (m_previewDialog, &kpDocumentSaveOptionsPreviewDialog::resized, + this, &kpDocumentSaveOptionsWidget::updatePreviewDialogLastRelativeGeometry); + + m_updatePreviewDialogLastRelativeGeometryTimer->start (200/*ms*/); + } + else + { + m_updatePreviewDialogLastRelativeGeometryTimer->stop (); + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupPreviewSave); + + cfg.writeEntry (kpSettingPreviewSaveGeometry, m_previewDialogLastRelativeGeometry); + cfg.sync (); + + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tsaving preview geometry " + << m_previewDialogLastRelativeGeometry + << " (Qt would have us believe " + << kpWidgetMapper::fromGlobal (m_visualParent, + QRect (m_previewDialog->x (), m_previewDialog->y (), + m_previewDialog->width (), m_previewDialog->height ())) + << ")" + << endl; + #endif + + m_previewDialog->deleteLater (); + m_previewDialog = nullptr; + } +} + +// protected slot +void kpDocumentSaveOptionsWidget::hidePreview () +{ + if (m_previewButton->isChecked ()) { + m_previewButton->toggle (); + } +} + + +// protected slot +void kpDocumentSaveOptionsWidget::updatePreviewDelayed () +{ + // (single shot) + m_updatePreviewTimer->start (m_updatePreviewDelay); +} + +// protected slot +void kpDocumentSaveOptionsWidget::updatePreview () +{ + if (!m_previewDialog || !m_documentPixmap) { + return; + } + + + m_updatePreviewTimer->stop (); + + + QApplication::setOverrideCursor (Qt::WaitCursor); + + QByteArray data; + + QBuffer buffer (&data); + buffer.open (QIODevice::WriteOnly); + bool savedOK = kpDocument::savePixmapToDevice (*m_documentPixmap, + &buffer, + documentSaveOptions (), + m_documentMetaInfo, + false/*no lossy prompt*/, + this); + buffer.close (); + + + QImage image; + + // Ignore any failed saves. + // + // Failed saves might literally have written half a file. The final + // save (when the user clicks OK), _will_ fail so we shouldn't have a + // preview even if this "half a file" is actually loadable by + // QImage::loadFormData(). + if (savedOK) + { + image.loadFromData(data); + } + else + { + // Leave as invalid. + // TODO: This code path has not been well tested. + // Will we trigger divide by zero errors in "m_previewDialog"? + } + + // REFACTOR: merge with kpDocument::getPixmapFromFile() + m_previewDialog->setFilePixmapAndSize (image, data.size ()); + + QApplication::restoreOverrideCursor (); +} + +// protected slot +void kpDocumentSaveOptionsWidget::updatePreviewDialogLastRelativeGeometry () +{ +#if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "kpDocumentSaveOptionsWidget::" + << "updatePreviewDialogLastRelativeGeometry()" + << endl; +#endif + + if (m_previewDialog && m_previewDialog->isVisible ()) + { + m_previewDialogLastRelativeGeometry = + kpWidgetMapper::fromGlobal (m_visualParent, + QRect (m_previewDialog->x (), m_previewDialog->y (), + m_previewDialog->width (), m_previewDialog->height ())); + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tcaching pos = " + << m_previewDialogLastRelativeGeometry; + #endif + } + else + { + #if DEBUG_KP_DOCUMENT_SAVE_OPTIONS_WIDGET + qCDebug(kpLogWidgets) << "\tnot visible - ignoring geometry"; + #endif + } +} + + diff --git a/widgets/kpDocumentSaveOptionsWidget.h b/widgets/kpDocumentSaveOptionsWidget.h new file mode 100644 index 0000000..34a6e1c --- /dev/null +++ b/widgets/kpDocumentSaveOptionsWidget.h @@ -0,0 +1,156 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpDocumentSaveOptionsWidget_H +#define kpDocumentSaveOptionsWidget_H + + +#include +#include +#include + +#include "imagelib/kpDocumentMetaInfo.h" +#include "document/kpDocumentSaveOptions.h" + + +class QComboBox; +class QImage; +class QLabel; +class QTimer; +class QSpinBox; +class QPushButton; + +class kpDocumentSaveOptionsPreviewDialog; + + +class kpDocumentSaveOptionsWidget : public QWidget +{ +Q_OBJECT + +public: + kpDocumentSaveOptionsWidget (const QImage &docPixmap, + const kpDocumentSaveOptions &saveOptions, + const kpDocumentMetaInfo &metaInfo, + QWidget *parent); + kpDocumentSaveOptionsWidget (QWidget *parent); +private: + void init (); +public: + ~kpDocumentSaveOptionsWidget () override; + + + // is usually the filedialog + void setVisualParent (QWidget *visualParent); + + +protected: + bool mimeTypeHasConfigurableColorDepth () const; + bool mimeTypeHasConfigurableQuality () const; + +public: + QString mimeType () const; +public slots: + void setMimeType (const QString &string); + +public: + int colorDepth () const; + bool dither () const; +protected: + static int colorDepthComboItemFromColorDepthAndDither (int depth, bool dither); +public slots: + void setColorDepthDither (int depth, + bool dither = kpDocumentSaveOptions::initialDither ()); +protected slots: + void slotColorDepthSelected (); + +public: + int quality () const; +public slots: + void setQuality (int newQuality); + +public: + kpDocumentSaveOptions documentSaveOptions () const; +public slots: + void setDocumentSaveOptions (const kpDocumentSaveOptions &saveOptions); + + +public: + void setDocumentPixmap (const QImage &documentPixmap); + void setDocumentMetaInfo (const kpDocumentMetaInfo &metaInfo); + + +protected: + enum Mode + { + // (mutually exclusive) + None, ColorDepth, Quality + }; + + Mode mode () const; + void setMode (Mode mode); + +protected slots: + void repaintLabels (); + + +protected slots: + void showPreview (bool yes = true); + void hidePreview (); + void updatePreviewDelayed (); + void updatePreview (); + void updatePreviewDialogLastRelativeGeometry (); + + +protected: + QWidget *m_visualParent; + + Mode m_mode; + + QImage *m_documentPixmap; + + kpDocumentSaveOptions m_baseDocumentSaveOptions; + kpDocumentMetaInfo m_documentMetaInfo; + + QLabel *m_colorDepthLabel; + QComboBox *m_colorDepthCombo; + int m_colorDepthComboLastSelectedItem; + QWidget *m_colorDepthSpaceWidget; + + QLabel *m_qualityLabel; + QSpinBox *m_qualityInput; + + QPushButton *m_previewButton; + kpDocumentSaveOptionsPreviewDialog *m_previewDialog; + QRect m_previewDialogLastRelativeGeometry; + QTimer *m_updatePreviewTimer; + int m_updatePreviewDelay; + QTimer *m_updatePreviewDialogLastRelativeGeometryTimer; +}; + + +#endif // kpDocumentSaveOptionsWidget_H diff --git a/widgets/kpDualColorButton.cpp b/widgets/kpDualColorButton.cpp new file mode 100644 index 0000000..8f27753 --- /dev/null +++ b/widgets/kpDualColorButton.cpp @@ -0,0 +1,469 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_DUAL_COLOR_BUTTON 0 + + +#include "kpDualColorButton.h" + +#include "views/kpView.h" + +#include +#include "kpLogCategories.h" + +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------- + +kpDualColorButton::kpDualColorButton (QWidget *parent) + : QFrame (parent), + m_dragStartPoint (KP_INVALID_POINT) +{ + setSizePolicy (QSizePolicy::Fixed/*horizontal*/, + QSizePolicy::Fixed/*vertical*/); + setFrameStyle (QFrame::Panel | QFrame::Sunken); + + m_color [0] = kpColor (0, 0, 0); // black + m_color [1] = kpColor (255, 255, 255); // white + + setAcceptDrops (true); +} + +//--------------------------------------------------------------------- + +kpColor kpDualColorButton::color (int which) const +{ + Q_ASSERT (which == 0 || which == 1); + + return m_color [which]; +} + +//--------------------------------------------------------------------- + +kpColor kpDualColorButton::foregroundColor () const +{ + return color (0); +} + +//--------------------------------------------------------------------- + +kpColor kpDualColorButton::backgroundColor () const +{ + return color (1); +} + +//--------------------------------------------------------------------- + +void kpDualColorButton::setColor (int which, const kpColor &color) +{ + Q_ASSERT (which == 0 || which == 1); + + if (m_color [which] == color) { + return; + } + + m_oldColor [which] = m_color [which]; + m_color [which] = color; + update (); + + if (which == 0) { + emit foregroundColorChanged (color); + } + else { + emit backgroundColorChanged (color); + } +} + +//--------------------------------------------------------------------- + +void kpDualColorButton::setForegroundColor (const kpColor &color) +{ + setColor (0, color); +} + +//--------------------------------------------------------------------- + +void kpDualColorButton::setBackgroundColor (const kpColor &color) +{ + setColor (1, color); +} + +//--------------------------------------------------------------------- + + +// public +kpColor kpDualColorButton::oldForegroundColor () const +{ + return m_oldColor [0]; +} + +//--------------------------------------------------------------------- + +// public +kpColor kpDualColorButton::oldBackgroundColor () const +{ + return m_oldColor [1]; +} + +//--------------------------------------------------------------------- + + +// public virtual [base QWidget] +QSize kpDualColorButton::sizeHint () const +{ + return {52, 52}; +} + +//--------------------------------------------------------------------- + + +// protected +QRect kpDualColorButton::swapPixmapRect () const +{ + QPixmap swapPixmap = QStringLiteral(":/icons/colorbutton_swap_16x16"); + + return {contentsRect ().width () - swapPixmap.width (), 0, + swapPixmap.width (), swapPixmap.height ()}; +} + +//--------------------------------------------------------------------- + +// protected +QRect kpDualColorButton::foregroundBackgroundRect () const +{ + QRect cr (contentsRect ()); + return {cr.width () / 8, cr.height () / 8, + cr.width () * 6 / 8, cr.height () * 6 / 8}; +} + +//--------------------------------------------------------------------- + +// protected +QRect kpDualColorButton::foregroundRect () const +{ + QRect fbr (foregroundBackgroundRect ()); + return {fbr.x (), fbr.y (), + fbr.width () * 3 / 4, fbr.height () * 3 / 4}; +} + +//--------------------------------------------------------------------- + +// protected +QRect kpDualColorButton::backgroundRect () const +{ + QRect fbr (foregroundBackgroundRect ()); + return {fbr.x () + fbr.width () / 4, fbr.y () + fbr.height () / 4, + fbr.width () * 3 / 4, fbr.height () * 3 / 4}; +} + +//--------------------------------------------------------------------- + + +// protected virtual +void kpDualColorButton::dragEnterEvent (QDragEnterEvent *e) +{ +#if DEBUG_KP_DUAL_COLOR_BUTTON + qCDebug(kpLogWidgets) << "kpDualColorButton::dragEnterEvent() canDecode=" + << KColorMimeData::canDecode (e->mimeData ()); +#endif + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpDualColorButton::dragMoveEvent (QDragMoveEvent *e) +{ +#if DEBUG_KP_DUAL_COLOR_BUTTON + qCDebug(kpLogWidgets) << "kpDualColorButton::dragMoveEvent() canDecode=" + << KColorMimeData::canDecode (e->mimeData ()); +#endif + e->setAccepted ( + (foregroundRect ().contains (e->pos ()) || + backgroundRect ().contains (e->pos ())) && + KColorMimeData::canDecode (e->mimeData ())); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpDualColorButton::dropEvent (QDropEvent *e) +{ + QColor col = KColorMimeData::fromMimeData (e->mimeData ()); +#if DEBUG_KP_DUAL_COLOR_BUTTON + qCDebug(kpLogWidgets) << "kpDualColorButton::dropEvent() col=" + << (int *) col.rgba() + << " (with alpha=" << (int *) col.rgba () << ")"; +#endif + + if (col.isValid ()) + { + if (foregroundRect ().contains (e->pos ())) { + setForegroundColor (kpColor (col.rgba())); + } + else if (backgroundRect ().contains (e->pos ())) { + setBackgroundColor (kpColor (col.rgba())); + } + } +} + +//--------------------------------------------------------------------- + + +// protected virtual [base QWidget] +void kpDualColorButton::mousePressEvent (QMouseEvent *e) +{ +#if DEBUG_KP_DUAL_COLOR_BUTTON + qCDebug(kpLogWidgets) << "kpDualColorButton::mousePressEvent() pos=" << e->pos (); +#endif + + m_dragStartPoint = KP_INVALID_POINT; + + if (e->button () == Qt::LeftButton) { + m_dragStartPoint = e->pos (); + } +} + +//--------------------------------------------------------------------- + +void kpDualColorButton::mouseMoveEvent (QMouseEvent *e) +{ +#if DEBUG_KP_DUAL_COLOR_BUTTON + qCDebug(kpLogWidgets) << "kpDualColorButton::mouseMoveEvent() pos=" << e->pos () + << " buttons=" << e->buttons () + << " dragStartPoint=" << m_dragStartPoint << endl; +#endif + + if (m_dragStartPoint == KP_INVALID_POINT) { + return; + } + + if (!(e->buttons () & Qt::LeftButton)) + { + m_dragStartPoint = KP_INVALID_POINT; + return; + } + + const int delay = QApplication::startDragDistance (); + if (e->x () < m_dragStartPoint.x () - delay || + e->x () > m_dragStartPoint.x () + delay || + e->y () < m_dragStartPoint.y () - delay || + e->y () > m_dragStartPoint.y () + delay) + { + #if DEBUG_KP_DUAL_COLOR_BUTTON + qCDebug(kpLogWidgets) << "\tstarting drag as long as it's in a rectangle"; + #endif + + kpColor color; + + if (foregroundRect ().contains (m_dragStartPoint)) { + color = foregroundColor (); + } + else if (backgroundRect ().contains (m_dragStartPoint)) { + color = backgroundColor (); + } + + #if DEBUG_KP_DUAL_COLOR_BUTTON + qCDebug(kpLogWidgets) << "\tcolor.isValid=" << color.isValid () + << " rgb=" << (color.isValid () ? (int *) color.toQRgb () : 0) + << endl; + #endif + + if (color.isValid ()) + { + if (!color.isTransparent ()) { + KColorMimeData::createDrag (color.toQColor (), this)->exec (); + } + } + + m_dragStartPoint = KP_INVALID_POINT; + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpDualColorButton::mouseReleaseEvent (QMouseEvent *e) +{ + m_dragStartPoint = KP_INVALID_POINT; + + if (swapPixmapRect ().contains (e->pos ()) && + m_color [0] != m_color [1]) + { + #if DEBUG_KP_DUAL_COLOR_BUTTON && 1 + qCDebug(kpLogWidgets) << "kpDualColorButton::mouseReleaseEvent() swap colors:"; + #endif + m_oldColor [0] = m_color [0]; + m_oldColor [1] = m_color [1]; + + kpColor temp = m_color [0]; + m_color [0] = m_color [1]; + m_color [1] = temp; + + update (); + + emit colorsSwapped (m_color [0], m_color [1]); + emit foregroundColorChanged (m_color [0]); + emit backgroundColorChanged (m_color [1]); + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpDualColorButton::mouseDoubleClickEvent (QMouseEvent *e) +{ + int whichColor = -1; + + if (foregroundRect ().contains (e->pos ())) { + whichColor = 0; + } + else if (backgroundRect ().contains (e->pos ())) { + whichColor = 1; + } + + if (whichColor == 0 || whichColor == 1) + { + QColorDialog dialog(this); + dialog.setCurrentColor(color(whichColor).toQColor()); + dialog.setOptions(QColorDialog::ShowAlphaChannel); + if ( dialog.exec() == QDialog::Accepted ) { + setColor(whichColor, kpColor(dialog.currentColor().rgba())); + } + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpDualColorButton::paintEvent (QPaintEvent *e) +{ +#if DEBUG_KP_DUAL_COLOR_BUTTON && 1 + qCDebug(kpLogWidgets) << "kpDualColorButton::draw() rect=" << rect () + << " contentsRect=" << contentsRect () + << endl; +#endif + + // Draw frame first. + QFrame::paintEvent (e); + + QPainter painter (this); + + // Fill with background. + if (isEnabled ()) + { + kpView::drawTransparentBackground (&painter, + contentsRect ().topLeft ()/*checkerboard top-left*/, + contentsRect (), + true/*preview*/); + } + else + { + // Use default widget background. + } + + + painter.translate (contentsRect ().x (), contentsRect ().y ()); + + + // Draw "Swap Colours" button (top-right). + QPixmap swapPixmap = QStringLiteral(":/icons/colorbutton_swap_16x16"); + if (!isEnabled ()) + { + // Don't let the fill() touch the mask. + QBitmap swapBitmapMask = swapPixmap.mask (); + swapPixmap.setMask (QBitmap ()); + + // Grey out the opaque parts of "swapPixmap". + swapPixmap.fill (palette ().color (QPalette::Dark)); + + swapPixmap.setMask (swapBitmapMask); + } + painter.drawPixmap (swapPixmapRect ().topLeft (), swapPixmap); + + + // Draw background colour patch. + QRect bgRect = backgroundRect (); + QRect bgRectInside = QRect (bgRect.x () + 2, bgRect.y () + 2, + bgRect.width () - 4, bgRect.height () - 4); + if (isEnabled ()) + { + #if DEBUG_KP_DUAL_COLOR_BUTTON && 1 + qCDebug(kpLogWidgets) << "\tbackgroundColor=" << (int *) m_color [1].toQRgb () + << endl; + #endif + if (m_color [1].isTransparent ()) { // only if fully transparent + painter.drawPixmap (bgRectInside, QStringLiteral(":/icons/color_transparent_26x26")); + } + else { + painter.fillRect (bgRectInside, m_color [1].toQColor ()); + } + } + else { + painter.fillRect (bgRectInside, palette().color (QPalette::Button)); + } + qDrawShadePanel (&painter, bgRect, palette(), + false/*not sunken*/, 2/*lineWidth*/, + nullptr/*never fill*/); + + + + // Draw foreground colour patch. + // Must be drawn after background patch since we're on top. + QRect fgRect = foregroundRect (); + QRect fgRectInside = QRect (fgRect.x () + 2, fgRect.y () + 2, + fgRect.width () - 4, fgRect.height () - 4); + if (isEnabled ()) + { + #if DEBUG_KP_DUAL_COLOR_BUTTON && 1 + qCDebug(kpLogWidgets) << "\tforegroundColor=" << (int *) m_color [0].toQRgb () + << endl; + #endif + if (m_color [0].isTransparent ()) { // only if fully transparent + painter.drawPixmap (fgRectInside, QStringLiteral(":/icons/color_transparent_26x26")); + } + else { + painter.fillRect (fgRectInside, m_color [0].toQColor ()); + } + } + else { + painter.fillRect (fgRectInside, palette ().color (QPalette::Button)); + } + + qDrawShadePanel (&painter, fgRect, palette (), + false/*not sunken*/, 2/*lineWidth*/, + nullptr/*never fill*/); +} + + diff --git a/widgets/kpDualColorButton.h b/widgets/kpDualColorButton.h new file mode 100644 index 0000000..ac538f4 --- /dev/null +++ b/widgets/kpDualColorButton.h @@ -0,0 +1,96 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpDualColorButton_H +#define kpDualColorButton_H + + +#include + +#include "imagelib/kpColor.h" + + +class kpDualColorButton : public QFrame +{ +Q_OBJECT + +public: + kpDualColorButton (QWidget *parent); + + kpColor color (int which) const; + kpColor foregroundColor () const; + kpColor backgroundColor () const; + +public slots: + void setColor (int which, const kpColor &color); + void setForegroundColor (const kpColor &color); + void setBackgroundColor (const kpColor &color); + +signals: + // If you connect to this signal, ignore the following + // foregroundColorChanged() and backgroundColorChanged() signals + void colorsSwapped (const kpColor &newForegroundColor, + const kpColor &newBackgroundColor); + + void foregroundColorChanged (const kpColor &color); + void backgroundColorChanged (const kpColor &color); + +public: + // (only valid in slots connected to foregroundColorChanged()) + kpColor oldForegroundColor () const; + // (only valid in slots connected to backgroundColorChanged()) + kpColor oldBackgroundColor () const; + +public: + QSize sizeHint () const override; + +protected: + QRect swapPixmapRect () const; + QRect foregroundBackgroundRect () const; + QRect foregroundRect () const; + QRect backgroundRect () const; + + void dragEnterEvent (QDragEnterEvent *e) override; + void dragMoveEvent (QDragMoveEvent *e) override; + void dropEvent (QDropEvent *e) override; + + void mousePressEvent (QMouseEvent *e) override; + void mouseMoveEvent (QMouseEvent *e) override; + void mouseReleaseEvent (QMouseEvent *e) override; + + void mouseDoubleClickEvent (QMouseEvent *e) override; + + void paintEvent (QPaintEvent *e) override; + + QPoint m_dragStartPoint; + kpColor m_color [2]; + kpColor m_oldColor [2]; +}; + + +#endif // kpDualColorButton_H diff --git a/widgets/kpPrintDialogPage.cpp b/widgets/kpPrintDialogPage.cpp new file mode 100644 index 0000000..a7b1157 --- /dev/null +++ b/widgets/kpPrintDialogPage.cpp @@ -0,0 +1,102 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2007 John Layt + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_PRINT_DIALOG_PAGE 0 + + +#include "kpPrintDialogPage.h" + +#include +#include +#include + +#include "kpLogCategories.h" +#include + +#include "kpDefs.h" + + +struct kpPrintDialogPagePrivate +{ + QRadioButton *printCenteredRadio, *printTopLeftRadio; +}; + +kpPrintDialogPage::kpPrintDialogPage (QWidget *parent) + : QWidget (parent), + d (new kpPrintDialogPagePrivate ()) +{ +#if DEBUG_KP_PRINT_DIALOG_PAGE + qCDebug(kpLogWidgets) << "kpPrintDialogPage::()"; +#endif + + setWindowTitle (i18nc ("@title:tab", "I&mage Position")); + + d->printCenteredRadio = new QRadioButton (i18n ("&Center of the page"), + this); + d->printTopLeftRadio = new QRadioButton (i18n ("Top-&left of the page"), + this); + + auto *lay = new QVBoxLayout (this); + lay->addWidget (d->printCenteredRadio); + lay->addWidget (d->printTopLeftRadio); + lay->addStretch (); + + setPrintImageCenteredOnPage (true); +} + +kpPrintDialogPage::~kpPrintDialogPage () +{ + delete d; +} + + +bool kpPrintDialogPage::printImageCenteredOnPage () +{ +#if DEBUG_KP_PRINT_DIALOG_PAGE + qCDebug(kpLogWidgets) << "kpPrintDialogPage::printImageCenteredOnPage()" + << " returning " << d->printCenteredRadio->isChecked(); +#endif + return d->printCenteredRadio->isChecked (); +} + + +void kpPrintDialogPage::setPrintImageCenteredOnPage (bool printCentered) +{ +#if DEBUG_KP_PRINT_DIALOG_PAGE + qCDebug(kpLogWidgets) << "kpPrintDialogPage::setOptions(" << printCentered << ")"; +#endif + if (printCentered) { + d->printCenteredRadio->setChecked (true); + } + else { + d->printTopLeftRadio->setChecked (true); + } +} + + diff --git a/widgets/kpPrintDialogPage.h b/widgets/kpPrintDialogPage.h new file mode 100644 index 0000000..737398d --- /dev/null +++ b/widgets/kpPrintDialogPage.h @@ -0,0 +1,52 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2007 John Layt + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpPrintDialogPage_H +#define kpPrintDialogPage_H + +#include + + +class kpPrintDialogPage : public QWidget +{ +Q_OBJECT + +public: + kpPrintDialogPage (QWidget *parent); + ~kpPrintDialogPage () override; + + bool printImageCenteredOnPage (); + void setPrintImageCenteredOnPage (bool printCentered); + +private: + struct kpPrintDialogPagePrivate * const d; +}; + + +#endif // kpPrintDialogPage_H diff --git a/widgets/kpTransparentColorCell.cpp b/widgets/kpTransparentColorCell.cpp new file mode 100644 index 0000000..942cb0f --- /dev/null +++ b/widgets/kpTransparentColorCell.cpp @@ -0,0 +1,127 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TRANSPARENT_COLOR_CELL 0 + + +#include "kpTransparentColorCell.h" + +#include "imagelib/kpColor.h" + +#include + +#include +#include +#include + +//--------------------------------------------------------------------- + +kpTransparentColorCell::kpTransparentColorCell (QWidget *parent) + : QFrame (parent) +{ + setSizePolicy (QSizePolicy::Fixed/*horizontal*/, + QSizePolicy::Fixed/*vertical*/); + setFrameStyle (QFrame::Panel | QFrame::Sunken); + + m_pixmap = QStringLiteral(":/icons/color_transparent_26x26"); + + this->setToolTip( i18n ("Transparent")); +} + +//--------------------------------------------------------------------- + +// public virtual [base QWidget] +QSize kpTransparentColorCell::sizeHint () const +{ + return {m_pixmap.width () + frameWidth () * 2, + m_pixmap.height () + frameWidth () * 2}; +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpTransparentColorCell::mousePressEvent (QMouseEvent * /*e*/) +{ + // Eat press so that we own the mouseReleaseEvent(). + // [https://www.qt.io/blog/2006/05/27/mouse-event-propagation] + // + // However, contrary to that blog, it doesn't seem to be needed? +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpTransparentColorCell::contextMenuEvent (QContextMenuEvent *e) +{ + // Eat right-mouse press to prevent it from getting to the toolbar. + e->accept (); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpTransparentColorCell::mouseReleaseEvent (QMouseEvent *e) +{ + if (rect ().contains (e->pos ())) + { + if (e->button () == Qt::LeftButton) + { + emit transparentColorSelected (0); + emit foregroundColorChanged (kpColor::Transparent); + } + else if (e->button () == Qt::RightButton) + { + emit transparentColorSelected (1); + emit backgroundColorChanged (kpColor::Transparent); + } + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpTransparentColorCell::paintEvent (QPaintEvent *e) +{ + // Draw frame first. + QFrame::paintEvent (e); + + if (isEnabled ()) + { + #if DEBUG_KP_TRANSPARENT_COLOR_CELL + qCDebug(kpLogWidgets) << "kpTransparentColorCell::paintEvent() contentsRect=" + << contentsRect () + << endl; + #endif + QPainter p (this); + p.drawPixmap (contentsRect (), m_pixmap); + } +} + +//--------------------------------------------------------------------- + + diff --git a/widgets/kpTransparentColorCell.h b/widgets/kpTransparentColorCell.h new file mode 100644 index 0000000..cf1745e --- /dev/null +++ b/widgets/kpTransparentColorCell.h @@ -0,0 +1,66 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef kpTransparentColorCell_H +#define kpTransparentColorCell_H + + +#include + + +class kpColor; + + +class kpTransparentColorCell : public QFrame +{ +Q_OBJECT + +public: + kpTransparentColorCell (QWidget *parent); + + QSize sizeHint () const override; + +signals: + void transparentColorSelected (int mouseButton); + + // lazy + void foregroundColorChanged (const kpColor &color); + void backgroundColorChanged (const kpColor &color); + +protected: + void mousePressEvent (QMouseEvent *e) override; + void contextMenuEvent (QContextMenuEvent *e) override; + void mouseReleaseEvent (QMouseEvent *e) override; + + void paintEvent (QPaintEvent *e) override; + + QPixmap m_pixmap; +}; + + +#endif // kpTransparentColorCell_H diff --git a/widgets/toolbars/kpColorToolBar.cpp b/widgets/toolbars/kpColorToolBar.cpp new file mode 100644 index 0000000..2be6ad3 --- /dev/null +++ b/widgets/toolbars/kpColorToolBar.cpp @@ -0,0 +1,341 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_COLOR_TOOL_BAR 0 + + +#include "widgets/toolbars/kpColorToolBar.h" + +#include +#include +#include + +#include +#include +#include "kpLogCategories.h" + +#include "widgets/kpColorCells.h" +#include "widgets/kpColorPalette.h" +#include "widgets/colorSimilarity/kpColorSimilarityToolBarItem.h" +#include "kpDefs.h" +#include "widgets/kpDualColorButton.h" +#include "lgpl/generic/kpUrlFormatter.h" + +//--------------------------------------------------------------------- + +kpColorToolBar::kpColorToolBar (const QString &label, QWidget *parent) + : QDockWidget (parent) +{ + setWindowTitle (label); + + // not closable, as it's not a KDE toolbar yet and can not be made shown easily again + setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable); + + setAcceptDrops (true); + + QWidget *base = new QWidget (this); + m_boxLayout = new QBoxLayout (QBoxLayout::LeftToRight, base); + m_boxLayout->setContentsMargins(5, 5, 5, 5); + m_boxLayout->setSpacing (10 * 3); + + // This holds the current global foreground and background colors, for + // tools. + m_dualColorButton = new kpDualColorButton (base); + connect (m_dualColorButton, &kpDualColorButton::colorsSwapped, + this, &kpColorToolBar::colorsSwapped); + + connect (m_dualColorButton, &kpDualColorButton::foregroundColorChanged, + this, &kpColorToolBar::foregroundColorChanged); + + connect (m_dualColorButton, &kpDualColorButton::backgroundColorChanged, + this, &kpColorToolBar::backgroundColorChanged); + + m_boxLayout->addWidget (m_dualColorButton, 0/*stretch*/, Qt::AlignVCenter); + + m_colorPalette = new kpColorPalette (base); + connect (m_colorPalette, &kpColorPalette::foregroundColorChanged, + m_dualColorButton, &kpDualColorButton::setForegroundColor); + + connect (m_colorPalette, &kpColorPalette::backgroundColorChanged, + m_dualColorButton, &kpDualColorButton::setBackgroundColor); + + connect (m_colorPalette->colorCells (), &kpColorCells::isModifiedChanged, + this, &kpColorToolBar::updateNameOrUrlLabel); + + connect (m_colorPalette->colorCells (), &kpColorCells::urlChanged, + this, &kpColorToolBar::updateNameOrUrlLabel); + + connect (m_colorPalette->colorCells (), &kpColorCells::nameChanged, + this, &kpColorToolBar::updateNameOrUrlLabel); + + updateNameOrUrlLabel (); + + m_boxLayout->addWidget (m_colorPalette, 0/*stretch*/); + + m_colorSimilarityToolBarItem = new kpColorSimilarityToolBarItem (base); + connect (m_colorSimilarityToolBarItem, + &kpColorSimilarityToolBarItem::colorSimilarityChanged, + this, &kpColorToolBar::colorSimilarityChanged); + + m_boxLayout->addWidget (m_colorSimilarityToolBarItem, 0/*stretch*/); + + // Pad out all the horizontal space on the right of the Color Tool Bar so that + // that the real Color Tool Bar widgets aren't placed in the center of the + // Color Tool Bar. + m_boxLayout->addItem ( + new QSpacerItem (1, 1, QSizePolicy::Expanding, QSizePolicy::Preferred)); + + adjustToOrientation (Qt::Horizontal); + + setWidget (base); +} + +//--------------------------------------------------------------------- + +void kpColorToolBar::adjustToOrientation (Qt::Orientation o) +{ +#if DEBUG_KP_COLOR_TOOL_BAR + qCDebug(kpLogWidgets) << "kpColorToolBar::adjustToOrientation(" + << (o == Qt::Vertical ? "vertical" : "horizontal") + << ") called!"; +#endif + + Q_ASSERT (o == Qt::Horizontal); + + if (o == Qt::Horizontal) + { + m_boxLayout->setDirection (QBoxLayout::LeftToRight); + } + else + { + m_boxLayout->setDirection (QBoxLayout::TopToBottom); + } + + m_colorPalette->setOrientation (o); +} + +//--------------------------------------------------------------------- + +// public +kpColorCells *kpColorToolBar::colorCells () const +{ + return m_colorPalette->colorCells (); +} + +//--------------------------------------------------------------------- + +kpColor kpColorToolBar::color (int which) const +{ + Q_ASSERT (which == 0 || which == 1); + + return m_dualColorButton->color (which); +} + +//--------------------------------------------------------------------- + +void kpColorToolBar::setColor (int which, const kpColor &color) +{ + Q_ASSERT (which == 0 || which == 1); + + m_dualColorButton->setColor (which, color); +} + +//--------------------------------------------------------------------- + +kpColor kpColorToolBar::foregroundColor () const +{ + return m_dualColorButton->foregroundColor (); +} + +//--------------------------------------------------------------------- + +void kpColorToolBar::setForegroundColor (const kpColor &color) +{ +#if DEBUG_KP_COLOR_TOOL_BAR + qCDebug(kpLogWidgets) << "kpColorToolBar::setForegroundColor(" + << (int *) color.toQRgb () << ")"; +#endif + m_dualColorButton->setForegroundColor (color); +} + +//--------------------------------------------------------------------- + +kpColor kpColorToolBar::backgroundColor () const +{ + return m_dualColorButton->backgroundColor (); +} + +//--------------------------------------------------------------------- + +void kpColorToolBar::setBackgroundColor (const kpColor &color) +{ +#if DEBUG_KP_COLOR_TOOL_BAR + qCDebug(kpLogWidgets) << "kpColorToolBar::setBackgroundColor(" + << (int *) color.toQRgb () << ")"; +#endif + m_dualColorButton->setBackgroundColor (color); +} + +//--------------------------------------------------------------------- + + +kpColor kpColorToolBar::oldForegroundColor () const +{ + return m_dualColorButton->oldForegroundColor (); +} + +//--------------------------------------------------------------------- + +kpColor kpColorToolBar::oldBackgroundColor () const +{ + return m_dualColorButton->oldBackgroundColor (); +} + +//--------------------------------------------------------------------- + +double kpColorToolBar::oldColorSimilarity () const +{ + return m_colorSimilarityToolBarItem->oldColorSimilarity (); +} + +//--------------------------------------------------------------------- + +double kpColorToolBar::colorSimilarity () const +{ + return m_colorSimilarityToolBarItem->colorSimilarity (); +} + +//--------------------------------------------------------------------- + +void kpColorToolBar::setColorSimilarity (double similarity) +{ + m_colorSimilarityToolBarItem->setColorSimilarity (similarity); +} + +//--------------------------------------------------------------------- + +int kpColorToolBar::processedColorSimilarity () const +{ + return m_colorSimilarityToolBarItem->processedColorSimilarity (); +} + +//--------------------------------------------------------------------- + +void kpColorToolBar::openColorSimilarityDialog () +{ + m_colorSimilarityToolBarItem->openDialog (); +} + +//--------------------------------------------------------------------- + +void kpColorToolBar::flashColorSimilarityToolBarItem () +{ + m_colorSimilarityToolBarItem->flash (); +} + +//--------------------------------------------------------------------- + +// private slot +void kpColorToolBar::updateNameOrUrlLabel () +{ + QString name; + + kpColorCells *colorCells = m_colorPalette->colorCells (); + if (!colorCells->url ().isEmpty ()) { + name = kpUrlFormatter::PrettyFilename (colorCells->url ()); + } + else + { + if (!colorCells->name ().isEmpty ()) { + name = colorCells->name (); + } + else { + name = i18n ("KolourPaint Defaults"); + } + } + + if (name.isEmpty ()) { + name = i18n ("Untitled"); + } + + + KLocalizedString labelStr; + + if (!m_colorPalette->colorCells ()->isModified ()) + { + labelStr = + ki18nc ("Colors: name_or_url_of_color_palette", + "Colors: %1") + .subs (name); + } + else + { + labelStr = + ki18nc ("Colors: name_or_url_of_color_palette [modified]", + "Colors: %1 [modified]") + .subs (name); + } + + // Kill 2 birds with 1 stone: + // + // 1. Hide the windowTitle() when it's docked. + // 2. Add a label containing the name of the open color palette. + // + // TODO: This currently hides the windowTitle() even when it's not docked, + // because we've abused it to show the name of open color palette + // instead. + setWindowTitle (labelStr.toString ()); +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpColorToolBar::dragEnterEvent (QDragEnterEvent *e) +{ + // Grab the color drag for this widget, preventing it from being + // handled by our parent, the main window. + e->setAccepted (KColorMimeData::canDecode (e->mimeData ())); +#if DEBUG_KP_COLOR_TOOL_BAR + qCDebug(kpLogWidgets) << "isAccepted=" << e->isAccepted (); +#endif +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpColorToolBar::dragMoveEvent (QDragMoveEvent *e) +{ + // Stop the grabbed drag from being dropped. + e->setAccepted (!KColorMimeData::canDecode (e->mimeData ())); +#if DEBUG_KP_COLOR_TOOL_BAR + qCDebug(kpLogWidgets) << "isAccepted=" << e->isAccepted (); +#endif +} + +//--------------------------------------------------------------------- + diff --git a/widgets/toolbars/kpColorToolBar.h b/widgets/toolbars/kpColorToolBar.h new file mode 100644 index 0000000..f67c05e --- /dev/null +++ b/widgets/toolbars/kpColorToolBar.h @@ -0,0 +1,124 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_COLOR_TOOLBAR_H +#define KP_COLOR_TOOLBAR_H + + +#include +#include +#include + +#include "imagelib/kpColor.h" + + +class QBoxLayout; + +class kpColorCells; +class kpColorPalette; +class kpColorSimilarityToolBarItem; +class kpDualColorButton; + + +// COMPAT: Vertical orientation and undocking were broken by the Qt4 port +// so kpMainWindow::init() keeps this tool bar in a constant position for +// the time being. To help make this workaround possible, we use QDockWidget, +// instead of KToolBar, to prevent XMLGUI from managing the tool +// bar position. This also allows us to use QMainWindow::setCorner(). +// +// A nice must-have side-effect is that we are now resizeable, which +// is good for configurable (and potentially large) color collections. +// So we should probably keep it as a QDockWidget in the long-term +// and once we fix orientation and undocking, we should put XMLGUI +// support back in, somehow (create a "KDockWidget" class?). +class kpColorToolBar : public QDockWidget +{ +Q_OBJECT + +public: + kpColorToolBar (const QString &label, QWidget *parent); + + kpColorCells *colorCells () const; + + kpColor color (int which) const; + void setColor (int which, const kpColor &color); + + kpColor foregroundColor () const; + kpColor backgroundColor () const; + + double colorSimilarity () const; + void setColorSimilarity (double similarity); + int processedColorSimilarity () const; + + void openColorSimilarityDialog (); + void flashColorSimilarityToolBarItem (); + +signals: + // If you connect to this signal, ignore the following + // foregroundColorChanged() and backgroundColorChanged() signals + void colorsSwapped (const kpColor &newForegroundColor, + const kpColor &newBackgroundColor); + + void foregroundColorChanged (const kpColor &color); + void backgroundColorChanged (const kpColor &color); + void colorSimilarityChanged (double similarity, int processedSimilarity); + +public: + // (only valid in slots connected to foregroundColorChanged()) + kpColor oldForegroundColor () const; + // (only valid in slots connected to backgroundColorChanged()) + kpColor oldBackgroundColor () const; + + // (only valid in slots connected to colorSimilarityChanged()) + double oldColorSimilarity () const; + +public slots: + void setForegroundColor (const kpColor &color); + void setBackgroundColor (const kpColor &color); + +private slots: + void updateNameOrUrlLabel (); + +protected: + // Eat color drops (which are usually accidental drags from one of our + // child widgets) to prevent them from being pasted as text in the + // main window (by kpMainWindow::dropEvent()). + void dragEnterEvent (QDragEnterEvent *e) override; + void dragMoveEvent (QDragMoveEvent *e) override; + +private: + void adjustToOrientation (Qt::Orientation o); + + QBoxLayout *m_boxLayout; + kpDualColorButton *m_dualColorButton; + kpColorPalette *m_colorPalette; + kpColorSimilarityToolBarItem *m_colorSimilarityToolBarItem; +}; + + +#endif // KP_COLOR_TOOLBAR_H diff --git a/widgets/toolbars/kpToolToolBar.cpp b/widgets/toolbars/kpToolToolBar.cpp new file mode 100644 index 0000000..bf3233a --- /dev/null +++ b/widgets/toolbars/kpToolToolBar.cpp @@ -0,0 +1,479 @@ +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_TOOL_BAR 0 + + +#include "widgets/toolbars/kpToolToolBar.h" + +#include +#include +#include +#include +#include + +#include "kpLogCategories.h" + +#include "kpDefs.h" +#include "tools/kpTool.h" +#include "tools/kpToolAction.h" +#include "widgets/toolbars/options/kpToolWidgetBrush.h" +#include "widgets/toolbars/options/kpToolWidgetEraserSize.h" +#include "widgets/toolbars/options/kpToolWidgetFillStyle.h" +#include "widgets/toolbars/options/kpToolWidgetLineWidth.h" +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" +#include "widgets/toolbars/options/kpToolWidgetSpraycanSize.h" + +//--------------------------------------------------------------------- + +class kpToolButton : public QToolButton +{ +public: + kpToolButton (kpTool *tool, QWidget *parent) + : QToolButton (parent), + m_tool (tool) + { + } + + kpTool *tool() const { return m_tool; } + +protected: + void mouseDoubleClickEvent(QMouseEvent *e) override + { + if (e->button () == Qt::LeftButton && m_tool) { + m_tool->globalDraw (); + } + } + + kpTool *m_tool; +}; + +//--------------------------------------------------------------------- + +kpToolToolBar::kpToolToolBar(const QString &name, int colsOrRows, QMainWindow *parent) + : KToolBar(name, parent, Qt::LeftToolBarArea), + m_vertCols (colsOrRows), + m_buttonGroup (nullptr), + m_baseWidget (nullptr), + m_baseLayout (nullptr), + m_toolLayout (nullptr), + m_previousTool (nullptr), m_currentTool (nullptr) +{ + m_baseWidget = new QWidget(this); + + m_toolWidgets.append (m_toolWidgetBrush = + new kpToolWidgetBrush (m_baseWidget, QStringLiteral("Tool Widget Brush"))); + m_toolWidgets.append (m_toolWidgetEraserSize = + new kpToolWidgetEraserSize (m_baseWidget, QStringLiteral("Tool Widget Eraser Size"))); + m_toolWidgets.append (m_toolWidgetFillStyle = + new kpToolWidgetFillStyle (m_baseWidget, QStringLiteral("Tool Widget Fill Style"))); + m_toolWidgets.append (m_toolWidgetLineWidth = + new kpToolWidgetLineWidth (m_baseWidget, QStringLiteral("Tool Widget Line Width"))); + m_toolWidgets.append (m_toolWidgetOpaqueOrTransparent = + new kpToolWidgetOpaqueOrTransparent (m_baseWidget, QStringLiteral("Tool Widget Opaque/Transparent"))); + m_toolWidgets.append (m_toolWidgetSpraycanSize = + new kpToolWidgetSpraycanSize (m_baseWidget, QStringLiteral("Tool Widget Spraycan Size"))); + + for (auto *w : m_toolWidgets) + { + connect (w, &kpToolWidgetBase::optionSelected, + this, &kpToolToolBar::toolWidgetOptionSelected); + } + + adjustToOrientation(orientation()); + connect (this, &kpToolToolBar::orientationChanged, + this, &kpToolToolBar::adjustToOrientation); + + m_buttonGroup = new QButtonGroup (this); + connect (m_buttonGroup, &QButtonGroup::idClicked, + this, &kpToolToolBar::slotToolButtonClicked); + + hideAllToolWidgets (); + + addWidget(m_baseWidget); + + connect (this, &kpToolToolBar::iconSizeChanged, + this, &kpToolToolBar::slotIconSizeChanged); + + connect (this, &kpToolToolBar::toolButtonStyleChanged, + this, &kpToolToolBar::slotToolButtonStyleChanged); +} + +//--------------------------------------------------------------------- + +kpToolToolBar::~kpToolToolBar() +{ + while ( !m_toolButtons.isEmpty() ) { + delete m_toolButtons.takeFirst(); + } +} + +//--------------------------------------------------------------------- + +// public +void kpToolToolBar::registerTool (kpTool *tool) +{ + for (const auto *b : m_toolButtons) + { + if ( b->tool() == tool ) { // already given + return; + } + } + + auto *b = new kpToolButton(tool, m_baseWidget); + + b->setToolButtonStyle(toolButtonStyle()); + b->setIconSize(iconSize()); + b->setAutoRaise(true); + + // tell layout to make all with equal width (much better when text-below-icon) + b->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + + b->setDefaultAction(tool->action()); + + m_buttonGroup->addButton(b); + addButton(b, orientation(), m_toolButtons.count()); + + m_toolButtons.append(b); + + connect (tool, &kpTool::actionActivated, + this, &kpToolToolBar::slotToolActionActivated); + + adjustSizeConstraint(); +} + +//--------------------------------------------------------------------- +// public + +void kpToolToolBar::unregisterTool(kpTool *tool) +{ + for (int i = 0; i < m_toolButtons.count(); i++) + { + if ( m_toolButtons[i]->tool() == tool ) + { + delete m_toolButtons.takeAt(i); + disconnect (tool, &kpTool::actionActivated, + this, &kpToolToolBar::slotToolActionActivated); + return; + } + } +} + +//--------------------------------------------------------------------- +// public + +kpTool *kpToolToolBar::tool () const +{ + return m_currentTool; +} + +//--------------------------------------------------------------------- + +// public +void kpToolToolBar::selectTool (const kpTool *tool, bool reselectIfSameTool) +{ +#if DEBUG_KP_TOOL_TOOL_BAR + qCDebug(kpLogWidgets) << "kpToolToolBar::selectTool (tool=" << tool + << ") currentTool=" << m_currentTool + << endl; +#endif + + if (!reselectIfSameTool && tool == m_currentTool) { + return; + } + + if (tool) + { + tool->action()->setChecked(true); + slotToolButtonClicked(); + } + else + { + QAbstractButton *b = m_buttonGroup->checkedButton(); + if (b) + { + // HACK: qbuttongroup.html says the following about exclusive + // button groups: + // + // "to untoggle a button you must click on another button + // in the group" + // + // But we don't want any button to be selected. + // So don't be an exclusive button group temporarily. + m_buttonGroup->setExclusive (false); + b->setChecked (false); + m_buttonGroup->setExclusive (true); + + slotToolButtonClicked (); + } + } +} + +//--------------------------------------------------------------------- + +// public +kpTool *kpToolToolBar::previousTool () const +{ + return m_previousTool; +} + +//--------------------------------------------------------------------- + +// public +void kpToolToolBar::selectPreviousTool () +{ + selectTool (m_previousTool); +} + +//--------------------------------------------------------------------- + +// public +void kpToolToolBar::hideAllToolWidgets () +{ + for (auto *w : m_toolWidgets) { + w->hide (); + } +} + +//--------------------------------------------------------------------- + +// public +kpToolWidgetBase *kpToolToolBar::shownToolWidget (int which) const +{ + int uptoVisibleWidget = 0; + + for(auto *w : m_toolWidgets) + { + if ( !w->isHidden() ) + { + if (which == uptoVisibleWidget) { + return w; + } + + uptoVisibleWidget++; + } + } + + return nullptr; +} + +//--------------------------------------------------------------------- + +// private slot +void kpToolToolBar::slotToolButtonClicked () +{ + QAbstractButton *b = m_buttonGroup->checkedButton(); + +#if DEBUG_KP_TOOL_TOOL_BAR + qCDebug(kpLogWidgets) << "kpToolToolBar::slotToolButtonClicked() button=" << b; +#endif + + kpTool *tool = nullptr; + for (const auto *button : m_toolButtons) + { + if ( button == b ) + { + tool = button->tool(); + break; + } + } + +#if DEBUG_KP_TOOL_TOOL_BAR + qCDebug(kpLogWidgets) << "\ttool=" << tool + << " currentTool=" << m_currentTool + << endl; +#endif + + if (tool == m_currentTool) + { + if (m_currentTool) { + m_currentTool->reselect (); + } + + return; + } + + if (m_currentTool) { + m_currentTool->endInternal (); + } + + m_previousTool = m_currentTool; + m_currentTool = tool; + + if (m_currentTool) + { + kpToolAction *action = m_currentTool->action (); + if (action) + { + action->setChecked (true); + } + + m_currentTool->beginInternal (); + } + + emit sigToolSelected (m_currentTool); + m_baseLayout->activate(); + adjustSizeConstraint(); +} + +//--------------------------------------------------------------------- + +// private slot +void kpToolToolBar::slotToolActionActivated () +{ + const auto *tool = dynamic_cast(sender()); + +#if DEBUG_KP_TOOL_TOOL_BAR + qCDebug(kpLogWidgets) << "kpToolToolBar::slotToolActionActivated() tool=" + << (tool ? tool->objectName () : "null") + << endl; +#endif + + selectTool (tool, true/*reselect if same tool*/); +} + +//--------------------------------------------------------------------- + +// public +void kpToolToolBar::adjustToOrientation(Qt::Orientation o) +{ +#if DEBUG_KP_TOOL_TOOL_BAR + qCDebug(kpLogWidgets) << "kpToolToolBar::adjustToOrientation(" + << (o == Qt::Vertical ? "vertical" : "horizontal") + << ") called!" << endl; +#endif + + delete m_baseLayout; + if (o == Qt::Vertical) + { + m_baseLayout = new QBoxLayout (QBoxLayout::TopToBottom, m_baseWidget); + } + else // if (o == Qt::Horizontal) + { + m_baseLayout = new QBoxLayout (QBoxLayout::LeftToRight, m_baseWidget); + } + m_baseLayout->setSizeConstraint(QLayout::SetFixedSize); + m_baseLayout->setContentsMargins(0, 0, 0, 0); + + m_toolLayout = new QGridLayout(); + m_toolLayout->setContentsMargins(0, 0, 0, 0); + + // (ownership is transferred to m_baseLayout) + m_baseLayout->addItem (m_toolLayout); + + auto num = 0; + + for (auto *b : m_toolButtons) + { + addButton(b, o, num); + num++; + } + + for (auto *w : m_toolWidgets) + { + m_baseLayout->addWidget(w, + 0/*stretch*/, + o == Qt::Vertical ? Qt::AlignHCenter : Qt::AlignVCenter); + } + + adjustSizeConstraint(); +} + + +bool kpToolToolBar::event(QEvent *ev) +{ + if (ev->type() == QEvent::LayoutRequest) { + adjustSizeConstraint(); + } + return KToolBar::event(ev); +} + +//--------------------------------------------------------------------- +// this makes the size handled correctly during dragging/undocking the toolbar + +void kpToolToolBar::adjustSizeConstraint() +{ + // remove constraints + setFixedSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + + if ( orientation() == Qt::Vertical ) + { + setFixedWidth(m_baseLayout->sizeHint().width() + + layout()->contentsMargins().left() + + layout()->contentsMargins().right()); + } + else + { + setFixedHeight(m_baseLayout->sizeHint().height() + + layout()->contentsMargins().top() + + layout()->contentsMargins().bottom()); + } +} + +//--------------------------------------------------------------------- + +// private +void kpToolToolBar::addButton(QAbstractButton *button, Qt::Orientation o, int num) +{ + if (o == Qt::Vertical) { + m_toolLayout->addWidget (button, num / m_vertCols, num % m_vertCols); + } + else + { + // maps Left (o = vertical) to Bottom (o = horizontal) + int row = (m_vertCols - 1) - (num % m_vertCols); + m_toolLayout->addWidget (button, row, num / m_vertCols); + } +} + +//--------------------------------------------------------------------- + +void kpToolToolBar::slotIconSizeChanged(const QSize &size) +{ + for (auto *b : m_toolButtons) { + b->setIconSize(size); + } + + m_baseLayout->activate(); + adjustSizeConstraint(); +} + +//--------------------------------------------------------------------- + +void kpToolToolBar::slotToolButtonStyleChanged(Qt::ToolButtonStyle style) +{ + for (auto *b : m_toolButtons) { + b->setToolButtonStyle(style); + } + + m_baseLayout->activate(); + adjustSizeConstraint(); +} + +//--------------------------------------------------------------------- + diff --git a/widgets/toolbars/kpToolToolBar.h b/widgets/toolbars/kpToolToolBar.h new file mode 100644 index 0000000..c60fe84 --- /dev/null +++ b/widgets/toolbars/kpToolToolBar.h @@ -0,0 +1,126 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + Copyright (c) 2011 Martin Koller + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_TOOL_BAR_H +#define KP_TOOL_TOOL_BAR_H + + +#include + +#include + + +class QAbstractButton; +class QBoxLayout; +class QButtonGroup; +class QGridLayout; +class QWidget; + +class kpTool; +class kpToolButton; + +class kpToolWidgetBase; +class kpToolWidgetBrush; +class kpToolWidgetEraserSize; +class kpToolWidgetFillStyle; +class kpToolWidgetLineWidth; +class kpToolWidgetOpaqueOrTransparent; +class kpToolWidgetSpraycanSize; + +class kpToolToolBar : public KToolBar +{ +Q_OBJECT + +public: + kpToolToolBar (const QString &name, int colsOrRows, QMainWindow *parent); + ~kpToolToolBar () override; + + void registerTool(kpTool *tool); + void unregisterTool(kpTool *tool); + + kpTool *tool () const; + void selectTool (const kpTool *tool, bool reselectIfSameTool = false); + + kpTool *previousTool () const; + void selectPreviousTool (); + + void hideAllToolWidgets (); + // could this be cleaner (the tools have to access them individually somehow)? + kpToolWidgetBrush *toolWidgetBrush () const { return m_toolWidgetBrush; } + kpToolWidgetEraserSize *toolWidgetEraserSize () const { return m_toolWidgetEraserSize; } + kpToolWidgetFillStyle *toolWidgetFillStyle () const { return m_toolWidgetFillStyle; } + kpToolWidgetLineWidth *toolWidgetLineWidth () const { return m_toolWidgetLineWidth; } + kpToolWidgetOpaqueOrTransparent *toolWidgetOpaqueOrTransparent () const { return m_toolWidgetOpaqueOrTransparent; } + kpToolWidgetSpraycanSize *toolWidgetSpraycanSize () const { return m_toolWidgetSpraycanSize; } + + kpToolWidgetBase *shownToolWidget (int which) const; + +protected: + bool event(QEvent *ev) override; + +signals: + void sigToolSelected (kpTool *tool); // tool may be 0 + void toolWidgetOptionSelected (); + +private slots: + void slotToolButtonClicked (); + + void slotToolActionActivated (); + + void adjustToOrientation(Qt::Orientation o); + void slotIconSizeChanged(const QSize &); + void slotToolButtonStyleChanged(Qt::ToolButtonStyle style); + +private: + void addButton (QAbstractButton *button, Qt::Orientation o, int num); + void adjustSizeConstraint(); + + int m_vertCols; + + QButtonGroup *m_buttonGroup; + QWidget *m_baseWidget; + QBoxLayout *m_baseLayout; + QGridLayout *m_toolLayout; + + kpToolWidgetBrush *m_toolWidgetBrush; + kpToolWidgetEraserSize *m_toolWidgetEraserSize; + kpToolWidgetFillStyle *m_toolWidgetFillStyle; + kpToolWidgetLineWidth *m_toolWidgetLineWidth; + kpToolWidgetOpaqueOrTransparent *m_toolWidgetOpaqueOrTransparent; + kpToolWidgetSpraycanSize *m_toolWidgetSpraycanSize; + + QList m_toolWidgets; + + QList m_toolButtons; + + kpTool *m_previousTool, *m_currentTool; +}; + + +#endif // KP_TOOL_TOOL_BAR_H diff --git a/widgets/toolbars/options/kpToolWidgetBase.cpp b/widgets/toolbars/options/kpToolWidgetBase.cpp new file mode 100644 index 0000000..7b37b45 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetBase.cpp @@ -0,0 +1,754 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_WIDGET_BASE 0 + + +#include "kpToolWidgetBase.h" + +#include "kpDefs.h" + +#include +#include +#include +#include "kpLogCategories.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +//--------------------------------------------------------------------- + +kpToolWidgetBase::kpToolWidgetBase (QWidget *parent, const QString &name) + : QFrame(parent), m_baseWidget(nullptr), + m_selectedRow(-1), m_selectedCol(-1) +{ + setObjectName (name); + + setFrameStyle (QFrame::Panel | QFrame::Sunken); + + setFixedSize (44, 66); + setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Minimum); +} + +//--------------------------------------------------------------------- + +kpToolWidgetBase::~kpToolWidgetBase () = default; + +//--------------------------------------------------------------------- + +// public +void kpToolWidgetBase::addOption (const QPixmap &pixmap, const QString &toolTip) +{ + if (m_pixmaps.isEmpty ()) { + startNewOptionRow (); + } + + m_pixmaps.last ().append (pixmap); + m_pixmapRects.last ().append (QRect ()); + m_toolTips.last ().append (toolTip); +} + +//--------------------------------------------------------------------- + +// public +void kpToolWidgetBase::startNewOptionRow () +{ + m_pixmaps.append (QList ()); + m_pixmapRects.append (QList ()); + m_toolTips.append (QList ()); +} + +//--------------------------------------------------------------------- + +// public +void kpToolWidgetBase::finishConstruction (int fallBackRow, int fallBackCol) +{ +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "kpToolWidgetBase(" << objectName () + << ")::kpToolWidgetBase(fallBack:row=" << fallBackRow + << ",col=" << fallBackCol + << ")"; +#endif + + relayoutOptions (); + + // HACK: Undo the maximum half of setFixedSize() in the ctor to avoid + // bizarre redraw errors when tool widgets are hidden and others + // are shown. + // + // The reason why we didn't just use setMinimumSize() in the ctor is + // because all tool widgets construct pixmaps whose sizes are dependent + // on the size() in the ctor, so we needed to get the correct size + // in there. This is bad design because it means that tool widgets + // can't really be resized. + setMaximumSize (QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); + + const QPair rowColPair = defaultSelectedRowAndCol (); + if (!setSelected (rowColPair.first, rowColPair.second, false/*don't save*/)) + { + if (!setSelected (fallBackRow, fallBackCol)) + { + if (!setSelected (0, 0)) + { + qCCritical(kpLogWidgets) << "kpToolWidgetBase::finishConstruction() " + "can't even fall back to setSelected(row=0,col=0)"; + } + } + } +} + +//--------------------------------------------------------------------- + +// private +QList kpToolWidgetBase::spreadOutElements (const QList &sizes, int max) +{ + if (sizes.count () == 0) { + return {}; + } + + if (sizes.count () == 1) + { + QList ret; + ret.append (sizes.first () > max ? 0 : 1/*margin*/); + return ret; + } + + QList retOffsets; + for (int i = 0; i < sizes.count (); i++) { + retOffsets.append (0); + } + + int totalSize = 0; + for (int i = 0; i < sizes.count (); i++) { + totalSize += sizes [i]; + } + + int margin = 1; + + // if don't fit with margin, then just return elements + // packed right next to each other + if (totalSize + margin * 2 > max) + { + retOffsets [0] = 0; + for (int i = 1; i < sizes.count (); i++) { + retOffsets [i] = retOffsets [i - 1] + sizes [i - 1]; + } + + return retOffsets; + } + + int maxLeftOver = max - (totalSize + margin * 2 * sizes.count()); + + int startCompensating = -1; + int numCompensate = 0; + + int spacing = 0; + + spacing = maxLeftOver / (sizes.count () - 1); + if (spacing * int (sizes.count () - 1) < maxLeftOver) + { + numCompensate = maxLeftOver - spacing * (sizes.count () - 1); + startCompensating = ((sizes.count () - 1) - numCompensate) / 2; + } + + retOffsets [0] = margin; + for (int i = 1; i < sizes.count (); i++) + { + retOffsets [i] += retOffsets [i - 1] + + sizes [i - 1] + + spacing + + ((numCompensate && + i >= startCompensating && + i < startCompensating + numCompensate) ? 1 : 0); + } + + return retOffsets; +} + +//--------------------------------------------------------------------- + +// public +QPair kpToolWidgetBase::defaultSelectedRowAndCol () const +{ + int row = -1, col = -1; + + if (!objectName ().isEmpty ()) + { + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupTools); + + row = cfg.readEntry (objectName () + QLatin1String (" Row"), -1); + col = cfg.readEntry (objectName () + QLatin1String (" Col"), -1); + } + +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "kpToolWidgetBase(" << objectName () + << ")::defaultSelectedRowAndCol() returning row=" << row + << " col=" << col; +#endif + + return qMakePair (row, col); +} + +//--------------------------------------------------------------------- + +// public +int kpToolWidgetBase::defaultSelectedRow () const +{ + return defaultSelectedRowAndCol ().first; +} + +//--------------------------------------------------------------------- + +// public +int kpToolWidgetBase::defaultSelectedCol () const +{ + return defaultSelectedRowAndCol ().second; +} + +//--------------------------------------------------------------------- + +// public +void kpToolWidgetBase::saveSelectedAsDefault () const +{ +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "kpToolWidgetBase(" << objectName () + << ")::saveSelectedAsDefault() row=" << m_selectedRow + << " col=" << m_selectedCol; +#endif + + if (objectName ().isEmpty ()) { + return; + } + + KConfigGroup cfg (KSharedConfig::openConfig (), kpSettingsGroupTools); + + cfg.writeEntry (objectName () + QLatin1String (" Row"), m_selectedRow); + cfg.writeEntry (objectName () + QLatin1String (" Col"), m_selectedCol); + cfg.sync (); +} + +//--------------------------------------------------------------------- + +// public +void kpToolWidgetBase::relayoutOptions () +{ +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "kpToolWidgetBase::relayoutOptions() size=" << size (); +#endif + + while (!m_pixmaps.isEmpty () && m_pixmaps.last ().count () == 0) + { + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\tkilling #" << m_pixmaps.count () - 1; + #endif + m_pixmaps.removeLast (); + m_pixmapRects.removeLast (); + m_toolTips.removeLast (); + } + + if (m_pixmaps.isEmpty ()) { + return; + } + +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\tsurvived killing of empty rows"; + qCDebug(kpLogWidgets) << "\tfinding heights of rows:"; +#endif + + QList maxHeightOfRow; + for (int r = 0; r < m_pixmaps.count (); r++) { + maxHeightOfRow.append (0); + } + + for (int r = 0; r < m_pixmaps.count (); r++) + { + for (int c = 0; c < m_pixmaps [r].count (); c++) + { + if (c == 0 || m_pixmaps [r][c].height () > maxHeightOfRow [r]) { + maxHeightOfRow [r] = m_pixmaps [r][c].height (); + } + } + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\t\t" << r << ": " << maxHeightOfRow [r]; + #endif + } + + QList rowYOffset = spreadOutElements (maxHeightOfRow, height ()); +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\tspread out offsets of rows:"; + for (int r = 0; r < (int) rowYOffset.count (); r++) { + qCDebug(kpLogWidgets) << "\t\t" << r << ": " << rowYOffset [r]; + } +#endif + + for (int r = 0; r < m_pixmaps.count (); r++) + { + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\tlaying out row " << r << ":"; + #endif + + QList widths; + for (int c = 0; c < m_pixmaps [r].count (); c++) + widths.append (m_pixmaps [r][c].width ()); + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\t\twidths of cols:"; + for (int c = 0; c < m_pixmaps [r].count (); c++) { + qCDebug(kpLogWidgets) << "\t\t\t" << c << ": " << widths [c]; + } + #endif + + QList colXOffset = spreadOutElements (widths, width ()); + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\t\tspread out offsets of cols:"; + for (int c = 0; c < colXOffset.count (); c++) { + qCDebug(kpLogWidgets) << "\t\t\t" << c << ": " << colXOffset [c]; + } + #endif + + for (int c = 0; c < colXOffset.count (); c++) + { + int x = colXOffset [c]; + int y = rowYOffset [r]; + int w, h; + + if (c == colXOffset.count () - 1) + { + if (x + m_pixmaps [r][c].width () >= width ()) { + w = m_pixmaps [r][c].width (); + } + else { + w = width () - 1 - x; + } + } + else { + w = colXOffset [c + 1] - x; + } + + if (r == m_pixmaps.count () - 1) + { + if (y + m_pixmaps [r][c].height () >= height ()) { + h = m_pixmaps [r][c].height (); + } + else { + h = height () - 1 - y; + } + } + else { + h = rowYOffset [r + 1] - y; + } + + m_pixmapRects [r][c] = QRect (x, y, w, h); + } + } + + update (); +} + +//--------------------------------------------------------------------- + + +// public +int kpToolWidgetBase::selectedRow () const +{ + return m_selectedRow; +} + +//--------------------------------------------------------------------- + +// public +int kpToolWidgetBase::selectedCol () const +{ + return m_selectedCol; +} + +//--------------------------------------------------------------------- + +// public +int kpToolWidgetBase::selected () const +{ + if (m_selectedRow < 0 || + m_selectedRow >= m_pixmaps.count () || + m_selectedCol < 0) + { + return -1; + } + + int upto = 0; + for (int y = 0; y < m_selectedRow; y++) { + upto += m_pixmaps [y].count (); + } + + if (m_selectedCol >= m_pixmaps [m_selectedRow].count ()) { + return -1; + } + + upto += m_selectedCol; + + return upto; +} + +//--------------------------------------------------------------------- + + +// public +bool kpToolWidgetBase::hasPreviousOption (int *row, int *col) const +{ +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "kpToolWidgetBase(" << objectName () + << ")::hasPreviousOption() current row=" << m_selectedRow + << " col=" << m_selectedCol; +#endif + if (row) { + *row = -1; + } + if (col) { + *col = -1; + } + + + if (m_selectedRow < 0 || m_selectedCol < 0) { + return false; + } + + int newRow = m_selectedRow, + newCol = m_selectedCol; + + newCol--; + if (newCol < 0) + { + newRow--; + if (newRow < 0) { + return false; + } + + newCol = m_pixmaps [newRow].count () - 1; + if (newCol < 0) { + return false; + } + } + + + if (row) { + *row = newRow; + } + if (col) { + *col = newCol; + } + + return true; +} + +//--------------------------------------------------------------------- + +// public +bool kpToolWidgetBase::hasNextOption (int *row, int *col) const +{ +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "kpToolWidgetBase(" << objectName () + << ")::hasNextOption() current row=" << m_selectedRow + << " col=" << m_selectedCol; +#endif + + if (row) { + *row = -1; + } + if (col) { + *col = -1; + } + + + if (m_selectedRow < 0 || m_selectedCol < 0) { + return false; + } + + int newRow = m_selectedRow, + newCol = m_selectedCol; + + newCol++; + if (newCol >= m_pixmaps [newRow].count ()) + { + newRow++; + if (newRow >= m_pixmaps.count ()) { + return false; + } + + newCol = 0; + if (newCol >= m_pixmaps [newRow].count ()) { + return false; + } + } + + + if (row) { + *row = newRow; + } + if (col) { + *col = newCol; + } + + return true; +} + +//--------------------------------------------------------------------- + + +// public slot virtual +bool kpToolWidgetBase::setSelected (int row, int col, bool saveAsDefault) +{ +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "kpToolWidgetBase::setSelected(row=" << row + << ",col=" << col + << ",saveAsDefault=" << saveAsDefault + << ")"; +#endif + + if (row < 0 || col < 0 || + row >= m_pixmapRects.count () || col >= m_pixmapRects [row].count ()) + { + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\tout of range"; + #endif + return false; + } + + if (row == m_selectedRow && col == m_selectedCol) + { + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\tNOP"; + #endif + + if (saveAsDefault) { + saveSelectedAsDefault (); + } + + return true; + } + + const int wasSelectedRow = m_selectedRow; + const int wasSelectedCol = m_selectedCol; + + m_selectedRow = row; + m_selectedCol = col; + + if (wasSelectedRow >= 0 && wasSelectedCol >= 0) + { + // unhighlight old option + update (m_pixmapRects [wasSelectedRow][wasSelectedCol]); + } + + // highlight new option + update (m_pixmapRects [row][col]); + +#if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\tOK"; +#endif + + if (saveAsDefault) { + saveSelectedAsDefault (); + } + + emit optionSelected (row, col); + return true; +} + +//--------------------------------------------------------------------- + +// public slot +bool kpToolWidgetBase::setSelected (int row, int col) +{ + return setSelected (row, col, true/*set as default*/); +} + +//--------------------------------------------------------------------- + + +// public slot +bool kpToolWidgetBase::selectPreviousOption () +{ + int newRow, newCol; + if (!hasPreviousOption (&newRow, &newCol)) { + return false; + } + + return setSelected (newRow, newCol); +} + +//--------------------------------------------------------------------- + +// public slot +bool kpToolWidgetBase::selectNextOption () +{ + int newRow, newCol; + if (!hasNextOption (&newRow, &newCol)) { + return false; + } + + return setSelected (newRow, newCol); +} + +//--------------------------------------------------------------------- + + +// protected virtual [base QWidget] +bool kpToolWidgetBase::event (QEvent *e) +{ + // TODO: It's unclear when we should call the base, call accept() and + // return true or false. Look at other event() handlers. The + // kpToolText one is wrong since after calling accept(), it calls + // its base which calls ignore() :) + if (e->type () == QEvent::ToolTip) + { + auto *he = dynamic_cast (e); + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "kpToolWidgetBase::event() QHelpEvent pos=" << he->pos (); + #endif + + bool showedText = false; + for (int r = 0; r < m_pixmapRects.count (); r++) + { + for (int c = 0; c < m_pixmapRects [r].count (); c++) + { + if (m_pixmapRects [r][c].contains (he->pos ())) + { + const QString tip = m_toolTips [r][c]; + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\tin option: r=" << r << "c=" << c + << "tip='" << tip << "'"; + #endif + if (!tip.isEmpty ()) + { + QToolTip::showText (he->globalPos (), tip, this); + showedText = true; + } + + e->accept (); + goto exit_loops; + } + } + } + + exit_loops: + if (!showedText) + { + #if DEBUG_KP_TOOL_WIDGET_BASE + qCDebug(kpLogWidgets) << "\thiding text"; + #endif + QToolTip::hideText (); + } + + return true; + } + + return QWidget::event (e); +} + +//--------------------------------------------------------------------- + + +// protected virtual [base QWidget] +void kpToolWidgetBase::mousePressEvent (QMouseEvent *e) +{ + e->ignore (); + + if (e->button () != Qt::LeftButton) { + return; + } + + + for (int i = 0; i < m_pixmapRects.count (); i++) + { + for (int j = 0; j < m_pixmapRects [i].count (); j++) + { + if (m_pixmapRects [i][j].contains (e->pos ())) + { + setSelected (i, j); + e->accept (); + return; + } + } + } +} + +//--------------------------------------------------------------------- + +// protected virtual [base QWidget] +void kpToolWidgetBase::paintEvent (QPaintEvent *e) +{ +#if DEBUG_KP_TOOL_WIDGET_BASE && 1 + qCDebug(kpLogWidgets) << "kpToolWidgetBase::paintEvent(): rect=" << contentsRect (); +#endif + + // Draw frame first. + QFrame::paintEvent (e); + + QPainter painter (this); + + for (int i = 0; i < m_pixmaps.count (); i++) + { + #if DEBUG_KP_TOOL_WIDGET_BASE && 1 + qCDebug(kpLogWidgets) << "\tRow: " << i; + #endif + + for (int j = 0; j < m_pixmaps [i].count (); j++) + { + QRect rect = m_pixmapRects [i][j]; + QPixmap pixmap = m_pixmaps [i][j]; + + #if DEBUG_KP_TOOL_WIDGET_BASE && 1 + qCDebug(kpLogWidgets) << "\t\tCol: " << j << " rect=" << rect; + #endif + + if (i == m_selectedRow && j == m_selectedCol) + { + painter.fillRect(rect, palette().color(QPalette::Highlight).rgb()); + } + + #if DEBUG_KP_TOOL_WIDGET_BASE && 1 + qCDebug(kpLogWidgets) << "\t\t\tdraw pixmap @ x=" + << rect.x () + (rect.width () - pixmap.width ()) / 2 + << " y=" + << rect.y () + (rect.height () - pixmap.height ()) / 2; + + #endif + + painter.drawPixmap(QPoint(rect.x () + (rect.width () - pixmap.width ()) / 2, + rect.y () + (rect.height () - pixmap.height ()) / 2), + pixmap); + } + } +} + +//--------------------------------------------------------------------- + diff --git a/widgets/toolbars/options/kpToolWidgetBase.h b/widgets/toolbars/options/kpToolWidgetBase.h new file mode 100644 index 0000000..d99ea3e --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetBase.h @@ -0,0 +1,114 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_WIDGET_BASE_H +#define KP_TOOL_WIDGET_BASE_H + + +#include +#include +#include +#include +#include +#include + + +class QMouseEvent; + + +// TODO: This is a crazy and overcomplicated class that invents its own (buggy) +// layout management. It should be simplified or removed. +class kpToolWidgetBase : public QFrame +{ +Q_OBJECT + +public: + // (must provide a for config to work) + kpToolWidgetBase (QWidget *parent, const QString &name); + ~kpToolWidgetBase () override; + +public: + void addOption (const QPixmap &pixmap, const QString &toolTip = QString()); + void startNewOptionRow (); + + // Call this at the end of your constructor. + // If the default row & col could not be read from the config, + // & are passed to setSelected(). + void finishConstruction (int fallBackRow, int fallBackCol); + +private: + QList spreadOutElements (const QList &sizes, int maxSize); + +public: // (only have to use these if you don't use finishConstruction()) + // (rereads from config file) + QPair defaultSelectedRowAndCol () const; + int defaultSelectedRow () const; + int defaultSelectedCol () const; + + void saveSelectedAsDefault () const; + + void relayoutOptions (); + +public: + int selectedRow () const; + int selectedCol () const; + + int selected () const; + + bool hasPreviousOption (int *row = nullptr, int *col = nullptr) const; + bool hasNextOption (int *row = nullptr, int *col = nullptr) const; + +public slots: + // (returns whether and were in range) + virtual bool setSelected (int row, int col, bool saveAsDefault); + bool setSelected (int row, int col); + + bool selectPreviousOption (); + bool selectNextOption (); + +signals: + void optionSelected (int row, int col); + +protected: + bool event (QEvent *e) override; + + void mousePressEvent (QMouseEvent *e) override; + void paintEvent (QPaintEvent *e) override; + + QWidget *m_baseWidget; + + QList < QList > m_pixmaps; + QList < QList > m_toolTips; + + QList < QList > m_pixmapRects; + + int m_selectedRow, m_selectedCol; +}; + + +#endif // KP_TOOL_WIDGET_BASE_H diff --git a/widgets/toolbars/options/kpToolWidgetBrush.cpp b/widgets/toolbars/options/kpToolWidgetBrush.cpp new file mode 100644 index 0000000..9cbbc03 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetBrush.cpp @@ -0,0 +1,296 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_WIDGET_BRUSH 0 + + +#include "widgets/toolbars/options/kpToolWidgetBrush.h" + +#include + +#include + +#include "kpLogCategories.h" +#include "kpDefs.h" + +//--------------------------------------------------------------------- + +// LOREFACTOR: more OO, no arrays (use safer structs). +/* sync: */ +static int BrushSizes [][3] = +{ + {8, 4, 1/*like Pen*/}, + {9, 5, 2}, + {9, 5, 2}, + {9, 5, 2} +}; + +#define BRUSH_SIZE_NUM_COLS (int (sizeof (::BrushSizes [0]) / sizeof (::BrushSizes [0][0]))) +#define BRUSH_SIZE_NUM_ROWS (int (sizeof (::BrushSizes) / sizeof (::BrushSizes [0]))) + + +//--------------------------------------------------------------------- + +static void Draw (kpImage *destImage, const QPoint &topLeft, void *userData) +{ + auto *pack = static_cast (userData); + +#if DEBUG_KP_TOOL_WIDGET_BRUSH + qCDebug(kpLogWidgets) << "kptoolwidgetbrush.cpp:Draw(destImage,topLeft=" + << topLeft << " pack: row=" << pack->row << " col=" << pack->col + << " color=" << (int *) pack->color.toQRgb (); +#endif + const int size = ::BrushSizes [pack->row][pack->col]; +#if DEBUG_KP_TOOL_WIDGET_BRUSH + qCDebug(kpLogWidgets) << "\tsize=" << size; +#endif + + QPainter painter(destImage); + + if ( size == 1 ) + { + painter.setPen(pack->color.toQColor()); + painter.drawPoint(topLeft); + return; + } + + // sync: + switch (pack->row/*shape*/) + { + case 0: + { + // work around ugly circle when using QPainter on QImage + if ( size == 4 ) + { + // do not draw a pixel twice, as with an alpha color it will become darker + painter.setPen(Qt::NoPen); + painter.setBrush(pack->color.toQColor()); + painter.drawRect(topLeft.x() + 1, topLeft.y(), 2, size); + painter.setPen(pack->color.toQColor()); + painter.drawLine(topLeft.x(), topLeft.y() + 1, topLeft.x(), topLeft.y() + 2); + painter.drawLine(topLeft.x() + 3, topLeft.y() + 1, topLeft.x() + 3, topLeft.y() + 2); + } + else if ( size == 8 ) // size defined in BrushSizes above + { + // do not draw a pixel twice, as with an alpha color it will become darker + painter.setPen(Qt::NoPen); + painter.setBrush(pack->color.toQColor()); + painter.drawRect(topLeft.x() + 2, topLeft.y(), 4, size); + painter.drawRect(topLeft.x(), topLeft.y() + 2, 2, 4); + painter.drawRect(topLeft.x() + 6, topLeft.y() + 2, 2, 4); + painter.setPen(pack->color.toQColor()); + painter.drawPoint(topLeft.x() + 1, topLeft.y() + 1); + painter.drawPoint(topLeft.x() + 6, topLeft.y() + 1); + painter.drawPoint(topLeft.x() + 1, topLeft.y() + 6); + painter.drawPoint(topLeft.x() + 6, topLeft.y() + 6); + } + else + { + Q_ASSERT(!"illegal size"); + } + break; + } + + case 1: + { + // only paint filling so that a color with an alpha channel does not + // create a darker border due to drawing some pixels twice with composition + painter.setPen(Qt::NoPen); + painter.setBrush(pack->color.toQColor()); + painter.drawRect(topLeft.x(), topLeft.y(), size, size); + break; + } + + case 2: + { + painter.setPen(pack->color.toQColor()); + painter.drawLine(topLeft.x() + size - 1, topLeft.y(), + topLeft.x(), topLeft.y() + size - 1); + break; + } + + case 3: + { + painter.setPen(pack->color.toQColor()); + painter.drawLine(topLeft.x(), topLeft.y(), + topLeft.x() + size - 1, topLeft.y() + size - 1); + break; + } + + default: + Q_ASSERT (!"Unknown row"); + break; + } +} + +//--------------------------------------------------------------------- + +kpToolWidgetBrush::kpToolWidgetBrush (QWidget *parent, const QString &name) + : kpToolWidgetBase (parent, name) +{ + for (int shape = 0; shape < BRUSH_SIZE_NUM_ROWS; shape++) + { + for (int i = 0; i < BRUSH_SIZE_NUM_COLS; i++) + { + const int s = ::BrushSizes [shape][i]; + + + const int w = (width () - 2/*margin*/ - 2/*spacing*/) + / BRUSH_SIZE_NUM_COLS; + const int h = (height () - 2/*margin*/ - 3/*spacing*/) + / BRUSH_SIZE_NUM_ROWS; + Q_ASSERT (w >= s && h >= s); + QImage previewPixmap (w, h, QImage::Format_ARGB32_Premultiplied); + previewPixmap.fill(0); + + DrawPackage pack = drawFunctionDataForRowCol (kpColor::Black, shape, i); + ::Draw (&previewPixmap, + QPoint ((previewPixmap.width () - s) / 2, + (previewPixmap.height () - s) / 2), + &pack); + + + addOption (QPixmap::fromImage(previewPixmap), brushName (shape, i)/*tooltip*/); + } + + startNewOptionRow (); + } + + finishConstruction (0, 0); +} + +//--------------------------------------------------------------------- + +kpToolWidgetBrush::~kpToolWidgetBrush () = default; + +//--------------------------------------------------------------------- + +// private +QString kpToolWidgetBrush::brushName (int shape, int whichSize) const +{ + int s = ::BrushSizes [shape][whichSize]; + + if (s == 1) { + return i18n ("1x1"); + } + + QString shapeName; + + // sync: + switch (shape) + { + case 0: + shapeName = i18n ("Circle"); + break; + case 1: + shapeName = i18n ("Square"); + break; + case 2: + // TODO: is this really the name of a shape? :) + shapeName = i18n ("Slash"); + break; + case 3: + // TODO: is this really the name of a shape? :) + shapeName = i18n ("Backslash"); + break; + } + + if (shapeName.isEmpty ()) { + return {}; + } + + return i18n ("%1x%2 %3", s, s, shapeName); +} + +//--------------------------------------------------------------------- + +// public +int kpToolWidgetBrush::brushSize () const +{ + return ::BrushSizes [selectedRow ()][selectedCol ()]; +} + +//--------------------------------------------------------------------- + +// public +bool kpToolWidgetBrush::brushIsDiagonalLine () const +{ + // sync: + return (selectedRow () >= 2); +} + +//--------------------------------------------------------------------- + + +// public +kpTempImage::UserFunctionType kpToolWidgetBrush::drawFunction () const +{ + return &::Draw; +} + +//--------------------------------------------------------------------- + + +// public static +kpToolWidgetBrush::DrawPackage kpToolWidgetBrush::drawFunctionDataForRowCol ( + const kpColor &color, int row, int col) +{ + Q_ASSERT (row >= 0 && col >= 0); + + DrawPackage pack; + + pack.row = row; + pack.col = col; + pack.color = color; + + return pack; +} + +//--------------------------------------------------------------------- + +// public +kpToolWidgetBrush::DrawPackage kpToolWidgetBrush::drawFunctionData ( + const kpColor &color) const +{ + return drawFunctionDataForRowCol (color, selectedRow (), selectedCol ()); +} + +//--------------------------------------------------------------------- + +// protected slot virtual [base kpToolWidgetBase] +bool kpToolWidgetBrush::setSelected (int row, int col, bool saveAsDefault) +{ + const bool ret = kpToolWidgetBase::setSelected (row, col, saveAsDefault); + if (ret) { + emit brushChanged (); + } + return ret; +} + +//--------------------------------------------------------------------- + diff --git a/widgets/toolbars/options/kpToolWidgetBrush.h b/widgets/toolbars/options/kpToolWidgetBrush.h new file mode 100644 index 0000000..478c507 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetBrush.h @@ -0,0 +1,80 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_WIDGET_BRUSH_H +#define KP_TOOL_WIDGET_BRUSH_H + +#include "kpToolWidgetBase.h" +#include "imagelib/kpColor.h" +#include "layers/tempImage/kpTempImage.h" + +#include + + +class kpToolWidgetBrush : public kpToolWidgetBase +{ +Q_OBJECT + +public: + kpToolWidgetBrush (QWidget *parent, const QString &name); + ~kpToolWidgetBrush () override; + +private: + QString brushName (int shape, int whichSize) const; + +public: + int brushSize () const; + bool brushIsDiagonalLine () const; + + struct DrawPackage + { + int row; + int col; + kpColor color; + }; + + // Call the function returned by to render the current + // brush onto an image/document, in . Pass the pointer returned by + // to it. + // + // TODO: change function + data -> object + kpTempImage::UserFunctionType drawFunction () const; + + static DrawPackage drawFunctionDataForRowCol (const kpColor &color, + int row, int col); + DrawPackage drawFunctionData (const kpColor &color) const; + +signals: + void brushChanged (); + +protected slots: + bool setSelected (int row, int col, bool saveAsDefault) override; +}; + + +#endif // KP_TOOL_WIDGET_BRUSH_H diff --git a/widgets/toolbars/options/kpToolWidgetEraserSize.cpp b/widgets/toolbars/options/kpToolWidgetEraserSize.cpp new file mode 100644 index 0000000..df9719c --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetEraserSize.cpp @@ -0,0 +1,183 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_WIDGET_ERASER_SIZE 0 + + +#include "kpToolWidgetEraserSize.h" + +#include "imagelib/kpPainter.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" + +#include "kpLogCategories.h" +#include + +#include +#include + + +static int EraserSizes [] = {2, 3, 5, 9, 17, 29}; +static const int NumEraserSizes = + int (sizeof (::EraserSizes) / sizeof (::EraserSizes [0])); + + +static void DrawImage (kpImage *destImage, const QPoint &topLeft, void *userData) +{ + auto *pack = static_cast (userData); + + const int size = ::EraserSizes [pack->selected]; + + kpPainter::fillRect (destImage, + topLeft.x (), topLeft.y (), size, size, + pack->color); +} + +static void DrawCursor (kpImage *destImage, const QPoint &topLeft, void *userData) +{ + ::DrawImage (destImage, topLeft, userData); + + + auto *pack = static_cast (userData); + + const int size = ::EraserSizes [pack->selected]; + + // Would 1-pixel border on all sides completely cover the color of the + // eraser? + if (size <= 2) { + return; + } + + // Draw 1-pixel border on all sides. + QPainter painter(destImage); + painter.drawRect(topLeft.x(), topLeft.y(), size - 1, size - 1); +} + +//--------------------------------------------------------------------- + +kpToolWidgetEraserSize::kpToolWidgetEraserSize (QWidget *parent, const QString &name) + : kpToolWidgetBase (parent, name) +{ + for (int i = 0; i < ::NumEraserSizes; i++) + { + if (i == 3 || i == 5) { + startNewOptionRow (); + } + + const int s = ::EraserSizes [i]; + + QImage previewPixmap (s, s, QImage::Format_ARGB32_Premultiplied); + if (i < 3) + { + // HACK: kpToolWidgetBase's layout code sucks and gives uneven spacing + previewPixmap = QImage ((width () - 4) / 3, 9, QImage::Format_ARGB32_Premultiplied); + Q_ASSERT (previewPixmap.width () >= s && + previewPixmap.height () >= s); + } + + previewPixmap.fill(0); + + DrawPackage pack = drawFunctionDataForSelected (kpColor::Black, i); + ::DrawImage (&previewPixmap, + QPoint ((previewPixmap.width () - s) / 2, + (previewPixmap.height () - s) / 2), + &pack); + + + addOption (QPixmap::fromImage(previewPixmap), i18n ("%1x%2", s, s)/*tooltip*/); + } + + finishConstruction (1, 0); +} + +//--------------------------------------------------------------------- + +kpToolWidgetEraserSize::~kpToolWidgetEraserSize () = default; + +//--------------------------------------------------------------------- + + +// public +int kpToolWidgetEraserSize::eraserSize () const +{ + return ::EraserSizes[selected() < 0 ? 0 : selected()]; +} + + +// public +kpTempImage::UserFunctionType kpToolWidgetEraserSize::drawFunction () const +{ + return &::DrawImage; +} + +// public +kpTempImage::UserFunctionType kpToolWidgetEraserSize::drawCursorFunction () const +{ + return &::DrawCursor; +} + +//--------------------------------------------------------------------- + + +// public static +kpToolWidgetEraserSize::DrawPackage kpToolWidgetEraserSize::drawFunctionDataForSelected ( + const kpColor &color, int selectedIndex) +{ + DrawPackage pack; + + pack.selected = selectedIndex; + pack.color = color; + + return pack; +} + +//--------------------------------------------------------------------- + +// public +kpToolWidgetEraserSize::DrawPackage kpToolWidgetEraserSize::drawFunctionData ( + const kpColor &color) const +{ + return drawFunctionDataForSelected (color, selected ()); +} + +//--------------------------------------------------------------------- + + +// protected slot virtual [base kpToolWidgetBase] +bool kpToolWidgetEraserSize::setSelected (int row, int col, bool saveAsDefault) +{ + const bool ret = kpToolWidgetBase::setSelected (row, col, saveAsDefault); + if (ret) { + emit eraserSizeChanged (eraserSize ()); + } + return ret; +} + +//--------------------------------------------------------------------- + + diff --git a/widgets/toolbars/options/kpToolWidgetEraserSize.h b/widgets/toolbars/options/kpToolWidgetEraserSize.h new file mode 100644 index 0000000..67cd373 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetEraserSize.h @@ -0,0 +1,81 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_WIDGET_ERASER_SIZE_H +#define KP_TOOL_WIDGET_ERASER_SIZE_H + +#include "kpToolWidgetBase.h" +#include "imagelib/kpColor.h" +#include "layers/tempImage/kpTempImage.h" + +#include + + +class kpColor; + + +class kpToolWidgetEraserSize : public kpToolWidgetBase +{ +Q_OBJECT + +public: + kpToolWidgetEraserSize (QWidget *parent, const QString &name); + ~kpToolWidgetEraserSize () override; + + int eraserSize () const; + + struct DrawPackage + { + int selected; + kpColor color; + }; + + // Call the function returned by to render the current + // brush onto an image/document, in . Pass the pointer returned by + // to it. + // + // is to same as but adds a black + // border suitable as a cursor only. + // + // TODO: change function + data -> object + kpTempImage::UserFunctionType drawFunction () const; + kpTempImage::UserFunctionType drawCursorFunction () const; + + static DrawPackage drawFunctionDataForSelected (const kpColor &color, + int selectedIndex); + DrawPackage drawFunctionData (const kpColor &color) const; + +signals: + void eraserSizeChanged (int size); + +protected slots: + bool setSelected (int row, int col, bool saveAsDefault) override; +}; + + +#endif // KP_TOOL_WIDGET_ERASER_SIZE_H diff --git a/widgets/toolbars/options/kpToolWidgetFillStyle.cpp b/widgets/toolbars/options/kpToolWidgetFillStyle.cpp new file mode 100644 index 0000000..c442d74 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetFillStyle.cpp @@ -0,0 +1,175 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_WIDGET_FILL_STYLE 0 + + +#include "kpToolWidgetFillStyle.h" + +#include "imagelib/kpColor.h" +#include "kpDefs.h" +#include "pixmapfx/kpPixmapFX.h" +#include "tools/kpTool.h" + +#include "kpLogCategories.h" + +#include +#include +#include + +//--------------------------------------------------------------------- + +kpToolWidgetFillStyle::kpToolWidgetFillStyle (QWidget *parent, const QString &name) + : kpToolWidgetBase (parent, name) +{ + for (int i = 0; i < FillStyleNum; i++) + { + QPixmap pixmap; + + pixmap = fillStylePixmap (static_cast (i), + (width () - 2/*margin*/) * 3 / 4, + (height () - 2/*margin*/ - 2/*spacing*/) * 3 / (3 * 4)); + addOption (pixmap, fillStyleName (static_cast (i))/*tooltip*/); + + startNewOptionRow (); + } + + finishConstruction (0, 0); +} + +//--------------------------------------------------------------------- + +kpToolWidgetFillStyle::~kpToolWidgetFillStyle () = default; + +//--------------------------------------------------------------------- + +// private +QPixmap kpToolWidgetFillStyle::fillStylePixmap (FillStyle fs, int w, int h) +{ + QPixmap pixmap ((w <= 0 ? width () : w), (h <= 0 ? height () : h)); + pixmap.fill(palette().color(QPalette::Window)); + + const int penWidth = 2; + + const QRect rectRect(1, 1, w - 2, h - 2); + + QPainter painter(&pixmap); + painter.setPen(kpPixmapFX::QPainterDrawRectPen(Qt::black, penWidth)); + + switch ( fs ) + { + case NoFill: + { + painter.setBrush(Qt::NoBrush); + break; + } + case FillWithBackground: + { + painter.setBrush(Qt::gray); + break; + } + case FillWithForeground: + { + painter.setBrush(Qt::black); + break; + } + default: ; + } + + painter.drawRect(rectRect); + painter.end(); + + return pixmap; +} + +//--------------------------------------------------------------------- + +// private +QString kpToolWidgetFillStyle::fillStyleName (FillStyle fs) const +{ + switch (fs) + { + case NoFill: + return i18n ("No Fill"); + + case FillWithBackground: + return i18n ("Fill with Background Color"); + + case FillWithForeground: + return i18n ("Fill with Foreground Color"); + + default: + return {}; + } +} + +//--------------------------------------------------------------------- + +// public +kpToolWidgetFillStyle::FillStyle kpToolWidgetFillStyle::fillStyle () const +{ +#if DEBUG_KP_TOOL_WIDGET_FILL_STYLE + qCDebug(kpLogWidgets) << "kpToolWidgetFillStyle::fillStyle() selected=" + << selectedRow (); +#endif + return static_cast (selectedRow ()); +} + +//--------------------------------------------------------------------- + +kpColor kpToolWidgetFillStyle::drawingBackgroundColor ( + const kpColor &foregroundColor, const kpColor &backgroundColor) const +{ + switch (fillStyle ()) + { + default: + case NoFill: + return kpColor::Invalid; + + case FillWithBackground: + return backgroundColor; + + case FillWithForeground: + return foregroundColor; + } +} + +//--------------------------------------------------------------------- + +// virtual protected slot [base kpToolWidgetBase] +bool kpToolWidgetFillStyle::setSelected (int row, int col, bool saveAsDefault) +{ + const bool ret = kpToolWidgetBase::setSelected (row, col, saveAsDefault); + if (ret) { + emit fillStyleChanged (fillStyle ()); + } + return ret; +} + +//--------------------------------------------------------------------- + diff --git a/widgets/toolbars/options/kpToolWidgetFillStyle.h b/widgets/toolbars/options/kpToolWidgetFillStyle.h new file mode 100644 index 0000000..9cfd894 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetFillStyle.h @@ -0,0 +1,78 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_WIDGET_FILL_STYLE_H +#define KP_TOOL_WIDGET_FILL_STYLE_H + + +#include "kpToolWidgetBase.h" + + +class QPixmap; + +class kpColor; + + +class kpToolWidgetFillStyle : public kpToolWidgetBase +{ +Q_OBJECT + +public: + kpToolWidgetFillStyle (QWidget *parent, const QString &name); + ~kpToolWidgetFillStyle () override; + + enum FillStyle + { + NoFill, + FillWithBackground, + FillWithForeground, + FillStyleNum /* not (a valid FillStyle) */ + }; + +private: + QPixmap fillStylePixmap (FillStyle fs, int width, int height); + QString fillStyleName (FillStyle fs) const; + +public: + FillStyle fillStyle () const; + + // Returns the actual fill colour. + // e.g. "FillWithBackground" fillStyle() -> , + // "FillWithForeground" fillStyle() -> . + kpColor drawingBackgroundColor ( + const kpColor &foregroundColor, const kpColor &backgroundColor) const; + +signals: + void fillStyleChanged (kpToolWidgetFillStyle::FillStyle fillStyle); + +protected slots: + bool setSelected (int row, int col, bool saveAsDefault) override; +}; + + +#endif // KP_TOOL_WIDGET_FILL_STYLE_H diff --git a/widgets/toolbars/options/kpToolWidgetLineWidth.cpp b/widgets/toolbars/options/kpToolWidgetLineWidth.cpp new file mode 100644 index 0000000..7cd3c4c --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetLineWidth.cpp @@ -0,0 +1,88 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#include "widgets/toolbars/options/kpToolWidgetLineWidth.h" + +#include "imagelib/kpColor.h" +#include "pixmapfx/kpPixmapFX.h" + +#include + +#include +#include +#include + + +static int lineWidths [] = {1, 2, 3, 5, 8}; + +kpToolWidgetLineWidth::kpToolWidgetLineWidth (QWidget *parent, const QString &name) + : kpToolWidgetBase (parent, name) +{ + int numLineWidths = sizeof (lineWidths) / sizeof (lineWidths [0]); + + int w = (width () - 2/*margin*/) * 3 / 4; + int h = (height () - 2/*margin*/ - (numLineWidths - 1)/*spacing*/) * 3 / (numLineWidths * 4); + + for (int i = 0; i < numLineWidths; i++) + { + QImage image ((w <= 0 ? width () : w), + (h <= 0 ? height () : h), QImage::Format_ARGB32_Premultiplied); + image.fill(QColor(Qt::transparent).rgba()); + + + kpPixmapFX::fillRect (&image, + 0, (image.height () - lineWidths [i]) / 2, + image.width (), lineWidths [i], + kpColor::Black); + + + addOption (QPixmap::fromImage(image), QString::number (lineWidths [i])); + startNewOptionRow (); + } + + finishConstruction (0, 0); +} + +kpToolWidgetLineWidth::~kpToolWidgetLineWidth () = default; + +int kpToolWidgetLineWidth::lineWidth () const +{ + return lineWidths [selectedRow ()]; +} + +// virtual protected slot [base kpToolWidgetBase] +bool kpToolWidgetLineWidth::setSelected (int row, int col, bool saveAsDefault) +{ + const bool ret = kpToolWidgetBase::setSelected (row, col, saveAsDefault); + if (ret) { + emit lineWidthChanged (lineWidth ()); + } + return ret; +} + + diff --git a/widgets/toolbars/options/kpToolWidgetLineWidth.h b/widgets/toolbars/options/kpToolWidgetLineWidth.h new file mode 100644 index 0000000..c2b4415 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetLineWidth.h @@ -0,0 +1,54 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_WIDGET_LINE_WIDTH_H +#define KP_TOOL_WIDGET_LINE_WIDTH_H + + +#include "kpToolWidgetBase.h" + + +class kpToolWidgetLineWidth : public kpToolWidgetBase +{ +Q_OBJECT + +public: + kpToolWidgetLineWidth (QWidget *parent, const QString &name); + ~kpToolWidgetLineWidth () override; + + int lineWidth () const; + +signals: + void lineWidthChanged (int width); + +protected slots: + bool setSelected (int row, int col, bool saveAsDefault) override; +}; + + +#endif // KP_TOOL_WIDGET_LINE_WIDTH_H diff --git a/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp b/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp new file mode 100644 index 0000000..500353f --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp @@ -0,0 +1,101 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#define DEBUG_KP_TOOL_WIDGET_OPAQUE_OR_TRANSPARENT 0 + + +#include "widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h" + +#include "kpLogCategories.h" +#include + + +//--------------------------------------------------------------------- + +kpToolWidgetOpaqueOrTransparent::kpToolWidgetOpaqueOrTransparent (QWidget *parent, const QString &name) + : kpToolWidgetBase (parent, name) +{ + addOption (QStringLiteral(":/icons/option_opaque"), i18n ("Opaque")/*tooltip*/); + startNewOptionRow (); + addOption (QStringLiteral(":/icons/option_transparent"), i18n ("Transparent")/*tooltip*/); + + finishConstruction (0, 0); +} + +//--------------------------------------------------------------------- + +kpToolWidgetOpaqueOrTransparent::~kpToolWidgetOpaqueOrTransparent () = default; + +//--------------------------------------------------------------------- + + +// public +bool kpToolWidgetOpaqueOrTransparent::isOpaque () const +{ + return (selected () == 0); +} + +// public +bool kpToolWidgetOpaqueOrTransparent::isTransparent () const +{ + return (!isOpaque ()); +} + +// public +void kpToolWidgetOpaqueOrTransparent::setOpaque (bool yes) +{ +#if DEBUG_KP_TOOL_WIDGET_OPAQUE_OR_TRANSPARENT && 1 + qCDebug(kpLogWidgets) << "kpToolWidgetOpaqueOrTransparent::setOpaque(" << yes << ")"; +#endif + setSelected (yes ? 0 : 1, 0, false/*don't save*/); +} + +// public +void kpToolWidgetOpaqueOrTransparent::setTransparent (bool yes) +{ +#if DEBUG_KP_TOOL_WIDGET_OPAQUE_OR_TRANSPARENT && 1 + qCDebug(kpLogWidgets) << "kpToolWidgetOpaqueOrTransparent::setTransparent(" << yes << ")"; +#endif + setSelected (yes ? 1 : 0, 0, false/*don't save*/); +} + + +// protected slot virtual [base kpToolWidgetBase] +bool kpToolWidgetOpaqueOrTransparent::setSelected (int row, int col, bool saveAsDefault) +{ +#if DEBUG_KP_TOOL_WIDGET_OPAQUE_OR_TRANSPARENT && 1 + qCDebug(kpLogWidgets) << "kpToolWidgetOpaqueOrTransparent::setSelected(" + << row << "," << col << ")"; +#endif + const bool ret = kpToolWidgetBase::setSelected (row, col, saveAsDefault); + if (ret) { + emit isOpaqueChanged (isOpaque ()); + } + return ret; +} + + diff --git a/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h b/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h new file mode 100644 index 0000000..a4c2c64 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.h @@ -0,0 +1,57 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_WIDGET_OPAQUE_OR_TRANSPARENT_H +#define KP_TOOL_WIDGET_OPAQUE_OR_TRANSPARENT_H + + +#include "kpToolWidgetBase.h" + + +class kpToolWidgetOpaqueOrTransparent : public kpToolWidgetBase +{ +Q_OBJECT + +public: + kpToolWidgetOpaqueOrTransparent (QWidget *parent, const QString &name); + ~kpToolWidgetOpaqueOrTransparent () override; + + bool isOpaque () const; + bool isTransparent () const; + void setOpaque (bool yes = true); + void setTransparent (bool yes = true); + +signals: + void isOpaqueChanged (bool isOpaque); + +protected slots: + bool setSelected (int row, int col, bool saveAsDefault) override; +}; + + +#endif // KP_TOOL_WIDGET_OPAQUE_OR_TRANSPARENT_H diff --git a/widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp b/widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp new file mode 100644 index 0000000..e744ffa --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp @@ -0,0 +1,119 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_TOOL_WIDGET_SPRAYCAN_SIZE 0 + + +#include "kpToolWidgetSpraycanSize.h" + +#include "pixmapfx/kpPixmapFX.h" + +#include "kpLogCategories.h" +#include + +#include +#include +#include +#include + + +static int spraycanSizes [] = {9, 17, 29}; + +kpToolWidgetSpraycanSize::kpToolWidgetSpraycanSize (QWidget *parent, const QString &name) + : kpToolWidgetBase (parent, name) +{ +#if DEBUG_KP_TOOL_WIDGET_SPRAYCAN_SIZE + qCDebug(kpLogWidgets) << "kpToolWidgetSpraycanSize::kpToolWidgetSpraycanSize() CALLED!"; +#endif + + for (int i = 0; i < int (sizeof (spraycanSizes) / sizeof (spraycanSizes [0])); i++) + { + int s = spraycanSizes [i]; + const QString iconName = QStringLiteral (":/icons/tool_spraycan_%1x%2").arg (s).arg(s); + + #if DEBUG_KP_TOOL_WIDGET_SPRAYCAN_SIZE + qCDebug(kpLogWidgets) << "\ticonName=" << iconName; + #endif + + QPixmap pixmap (s, s); + pixmap.fill (Qt::white); + + QPainter painter (&pixmap); + painter.drawPixmap (0, 0, QPixmap (iconName)); + painter.end (); + + QImage image = pixmap.toImage(); + + QBitmap mask (pixmap.width (), pixmap.height ()); + mask.fill (Qt::color0); + + painter.begin (&mask); + painter.setPen (Qt::color1); + + for (int y = 0; y < image.height (); y++) + { + for (int x = 0; x < image.width (); x++) + { + if ((image.pixel (x, y) & RGB_MASK) == 0/*black*/) { + painter.drawPoint (x, y); // mark as opaque + } + } + } + + painter.end (); + + pixmap.setMask (mask); + + addOption (pixmap, i18n ("%1x%2", s, s)/*tooltip*/); + if (i == 1) { + startNewOptionRow (); + } + } + + finishConstruction (0, 0); +} + +kpToolWidgetSpraycanSize::~kpToolWidgetSpraycanSize () = default; + + +// public +int kpToolWidgetSpraycanSize::spraycanSize () const +{ + return spraycanSizes[selected() < 0 ? 0 : selected()]; +} + +// protected slot virtual [base kpToolWidgetBase] +bool kpToolWidgetSpraycanSize::setSelected (int row, int col, bool saveAsDefault) +{ + const bool ret = kpToolWidgetBase::setSelected (row, col, saveAsDefault); + if (ret) { + emit spraycanSizeChanged (spraycanSize ()); + } + return ret; +} + diff --git a/widgets/toolbars/options/kpToolWidgetSpraycanSize.h b/widgets/toolbars/options/kpToolWidgetSpraycanSize.h new file mode 100644 index 0000000..522fb40 --- /dev/null +++ b/widgets/toolbars/options/kpToolWidgetSpraycanSize.h @@ -0,0 +1,54 @@ + +/* + Copyright (c) 2003-2007 Clarence Dang + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#ifndef KP_TOOL_WIDGET_SPRAYCAN_SIZE_H +#define KP_TOOL_WIDGET_SPRAYCAN_SIZE_H + + +#include "kpToolWidgetBase.h" + + +class kpToolWidgetSpraycanSize : public kpToolWidgetBase +{ +Q_OBJECT + +public: + kpToolWidgetSpraycanSize (QWidget *parent, const QString &name); + ~kpToolWidgetSpraycanSize () override; + + int spraycanSize () const; + +signals: + void spraycanSizeChanged (int size); + +protected slots: + bool setSelected (int row, int col, bool saveAsDefault) override; +}; + + +#endif // KP_TOOL_WIDGET_SPRAYCAN_SIZE_H